css 半透明(CSS 半透明遮罩层)

本文目录
CSS 半透明遮罩层
很多时候,我们需要通过一层半透明的遮罩层来把后面的一切整体调暗,以便凸显某个特定的UI元素,引导用户关注,比如弹出层或者交互指南。
这个效果的传统方法就是增加一个额外的HTML元素用于遮挡背景添加如下样式:
.overlay 遮罩层负责把这个元素背后所有的东西调暗。 .lightbox 需要指定一个更高的 z-index ,一边绘制在遮罩层的上层。这个方法的优点:稳定可靠,缺点:需要增加额外的HTML。那怎么由CSS单独实现呢?
我们可以用伪元素消除额外的HTML元素,比如:
缺点: 移植性不好, 《body》 元素上可能有其他需求已经占用了 ::before 元素,而且使用这个效果需要JS 给《body》添加 dimmed 这个类,如果把遮罩层交给元素自己的 ::bofore 伪元素来实现,就可以弥补不足。给伪元素设置 z-index:-1; 就可以让它出现在元素的背后。尽管这解决了可移植的问题,但无法对遮罩层Z轴层次进行细粒度的控制,它可能出现在这个元素之后(期望的),但也可能出现在这个元素的父元素活着祖先元素之后。这个方法还有一个问题,伪元素无法绑定独立的JS事件处理函数。
具体做法就是生成一个巨大的投影,不偏移不模糊,简单拙劣的模拟遮罩层效果:
为了确保遮罩层总是可以覆盖视口,我们换用视口单位来解决它。因为我们无法分开制定的水平和垂直方向的直径,所以这里最合适的视口单位为 vmax 。 1vmax 相当于 1vw 和 1vh 两者中较大值,因此满足我们需求的最小值就是50vmax。由于投影是同时向四个方向扩展的,这个遮罩层的最终尺寸将是100vmax加上元素本身的尺寸。
缺点: 如果页面很长而为此扩大投影的扩张半径就不太明智。
优点:可以有限度的使用该技巧,比如配合固定定位来使用,或者当页面没有滚动条时再用。
如果你想引导用户关住的元素就是一个模拟的 《dialog》 元素,( 《dialog》 元素可以由它的 showModal() 方法显示出来),那么根据浏览器的默认样式,它会自带一个遮罩层。借助 ::backdrop 伪元素,这个原生的遮罩层可以设置样式的,比如可以把它变的更暗一些:
缺点:浏览器对其支持比较有限,再次使用之前,确认一下兼容性的问题。
优点:尽管浏览器还不支持,对话框没有遮罩层也不会导致任何功能的缺失,因为它只是用户体验的增强手段而已。
CSS如何定义DIV背景半透明颜色
“长城郭靖”回答的是错的,他答的是让整个元素半透明
只让背景半透明只有一个办法,就是用rgba颜色,代码如下
background: rgba(0, 0, 0, 0.5)
解释:这是黑色半透明的代码
前三个值表示颜色的red,green,blue值
最后一个表示alpha值,就是透明度值,不透明为1
(支持IE8+以及所有现代浏览器)
还是不懂的话,可以参考 百度百科 “rgba”词条 和 “CSS 颜色值”词条
CSS 图片半透明,文字不透明显示
《html》
《head》《title》图片,透明层,文字《/title》
《style》
#box1{
float:left;/*浮动定位和相对定位都可以,我这里用的是浮动定位。*/
width:20%;
height:15em;
margin-left:3%;
margin-top:3%;
}
#box2{
float:left;/*浮动定位和相对定位都可以,我这里用的是浮动定位。*/
width:100%;
height:100%;
border:1px solid black;/*给图片做个边框*/
overflow:hidden;/*不准溢出来,做动画效果的时候可能会溢出来,溢出来的部分隐藏起来。*/
}
#picimg{
float:left;/*浮动定位和相对定位都可以,我这里用的是浮动定位。*/
width:100%;
height:100%;
}
#touming{
position:relative;/*这个透明层尽量用相对定位,这样不会跑来跑去,原因目前还不怎么清楚,反正相对ok*/
clear:both;/*清除浮动效果,避免到时候到处乱跑,比如做了过渡动画的时候。*/
width:100%;
height:1.5em;
top:-13.5em;
background:gray;
filter:alpha(Opacity=30);/*设置透明效果30*/
-moz-opacity:0.3;/*设置透明效果0.3*/
opacity: 0.3;/*设置透明效果0.3*/
left:0;/*距离box1距离是0,实际上距离box2的距离也是0*/
}
#words{
position:relative;/*这里用相对定位*/
clear:both;/*清除浮动,这个很有必要,不清除浮动会到处乱跑的。*/
width:100%;/*相对于box1的宽度,实际上也等于box2的宽度*/
height:2em;
color:red;/*设置文字颜色为红色,你自己喜欢什么颜色就弄什么颜色,我比较喜欢红色。*/
top:-15em;/设置成负的,把文字提到box2上面去/
left:0;/*相对于box1,左边距离设置成0*/
text-align:center;
}
《/style》
《/head》
《body》
《div id="box1"》
《div id="box2"》
***隐藏网址***
《/div》
《div id="touming"》《/div》
《div id="words"》这里是要显示的文字《/div》
《/div》
《/body》
《/html》
效果图:
效果还不错,透明层有透明效果,文字可以正常显示出来。这个方法还行吧,哈哈。我还会用三个div画一个心形,好看得很哟!!@
如何在css中设置半透明边框
可以参考以下我的这个代码:
XXX:{
border:
5px
solid
rgba(XXX,
XXX,
XXX,
0.5)
}
其中第一个XXX是你选择的需要半透明的元素
接下来的XXX是你想要半透明的颜色
设置透明度为0.5就可以做到半透明了。
如何用css实现半透明遮罩层效果
1 、半透明效果可以使用 css3 中的 opacity 属性,在低版本的IE浏览器中使用IE的alpha 滤镜。代码:
.opacity{
opacity:0.3; filter: alpha(opacity=30); background-color:#000; }
2
、要覆盖整个可视区域通常的做法是:
html,body{ height:100%}
.mask{height:100%;width:100%;}
但是这样做当内容超过一屏时只有IE6下显示的效果是我们所期望的,在其他浏览器中首屏以下的没能被遮盖住,为了兼容其他浏览器我们可以使用position:fixed;
来解决这个问题
完整的代码:
《div class="mask opacity"》《/div》
html,body{ height:100%; margin:0; padding:0}
.mask{height:100%;
width:100%; position:fixed; _position:absolute; top:0; z-index:1000; }
.opacity{ opacity:0.3; filter: alpha(opacity=30); background-color:#000;
}
给你一个例子:
《!DOCTYPE html》
《html》
《head》
《meta
charset="gb2312" /》
《title》背景半透明覆盖整个可视区域《/title》
《style》
html,body{ height:100%; margin:0; padding:0;
font-size:14px;}
p{ line-height:18px;}
.mask{height:100%; width:100%;
position:fixed; _position:absolute; top:0; z-index:1000; }
.opacity{
opacity:0.3; filter: alpha(opacity=30); background-color:#000; }
.content{height:600px; width:800px; overflow:auto; border:2px solid #ccc;
background-color:#fff; position:absolute; top:50%; left:50%; margin:-300px auto
auto -400px; z-index:1001; word-wrap: break-word; padding:3px;}
.ph{
height:1000px;}
《/style》
《/head》
《body》
《p
class="ph"》place holder height:1000px;《/p》
《div class="mask
opacity"》《/div》
《div class="content"》
《h1》背景半透明覆盖整个可视区域《/h1》
《p》
这个效果效果在工作中经常会遇到,这篇文章主要介绍了当内容超过一屏时如何做到多浏览器的兼容性。 下面我们通过一个简单的例子看看如何实现,高手请绕道。
《/p》
《p》html代码很简单 《 d i v class="mask opacity"》《 / d i
v 》 《/p》
《p》 1 、半透明效果可以使用 css3 中的 opacity
属性,在低版本的IE浏览器中使用IE的alpha 滤镜。代码:
《code》.opacity{ opacity:0.3;
filter: alpha(opacity=30); background-color:#000; }《/code》 《/p》
《p》 2 、要覆盖整个可视区域通常的做法是: 《br/》
《code》 html,body{
height:100%} 《/code》 《br/》
《code》.mask{height:100%;width:100%;}《/code》 《br/》
但是这样做当内容超过一屏时只有IE6下显示的效果是我们所期望的,在其他浏览器中首屏以下的没能被遮盖住,为了兼容其他浏览器我们可以使用《code》position:fixed;
《/code》来解决这个问题 《/p》
《p》
《strong》完整的代码《/strong》:
《pre》
html,body{ height:100%;
margin:0; padding:0}
.mask{height:100%; width:100%; position:fixed;
_position:absolute; top:0; z-index:1000; }
.opacity{ opacity:0.3; filter:
alpha(opacity=30); background-color:#000; }
《/pre》
《/p》
《p》 《strong》参考资料:《/strong》
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/p》
《/div》
《/body》
《/html》

更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50



