box-shadow
是CSS3标准属性,用于在元素框周围添加一个或多个阴影效果。而-moz-box-shadow
是Firefox浏览器在CSS3标准确立前实现的前缀版本。
box-shadow: [horizontal offset] [vertical offset] [blur radius] [spread radius] [color] [inset];
div {
box-shadow: 5px 5px 10px 0 rgba(0,0,0,0.5);
/* 水平偏移5px,垂直偏移5px,模糊10px,无扩展,半透明黑色 */
}
在CSS3标准化过程中,浏览器厂商会为实验性功能添加前缀:
-moz-
:Firefox (Mozilla)-webkit-
:Chrome/Safari-ms-
:Internet Explorer-o-
:Opera-moz-box-shadow
是Firefox在早期实现的box-shadow版本。
现代浏览器(包括Firefox)已全面支持无前缀的box-shadow
,不再需要-moz-box-shadow
。除非需要支持非常旧的Firefox版本(如Firefox 3.6及更早),否则不应再使用前缀版本。
原因:
display: inline
(阴影需要块级元素)解决:
div {
display: inline-block; /* 或block */
width: 100px;
height: 100px;
box-shadow: 2px 2px 5px grey;
}
原因:不同浏览器对模糊算法的实现略有差异
解决:使用标准属性并测试主要浏览器
原因:过多或过于复杂的阴影会影响渲染性能
解决:
div {
box-shadow:
0 2px 4px rgba(0,0,0,0.1),
0 4px 8px rgba(0,0,0,0.1),
0 8px 16px rgba(0,0,0,0.1);
}
div {
box-shadow: inset 0 0 10px #000000;
}
div {
border-radius: 50%;
box-shadow: 0 0 20px rgba(0,0,0,0.6);
}
在现代Web开发中,应始终优先使用无前缀的box-shadow
属性,除非有特殊兼容性需求。
没有搜到相关的文章