伪元素:before&::before的区别
(::)双冒号用于CSS3伪元素而(:)单冒号用于CSS3伪类,目的是为了区分伪元素和伪类。对于CSS2中已有的伪元素,单冒号和双冒号都可以。需要兼容IE浏览器的话,使用CSS2的单冒号会比较安全。
清除浮动
使用浮动布局的时候经常会遇到外层div高度塌陷的问题。
父元素高度自适应,子元素 float 后,造成父元素高度为0,称为高度塌陷问题。
通过伪元素after可以不用设定父级div高度,也不用添加额外的标签解决高度塌陷问题。
.clearfix:after {content:""; visibility:hidden; display:blcok; height:0; clear:both;}
.clearfix {*zoom:1;}
单标签实现按钮hover、active 明暗变化
.btn {
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
width: 200px;
overflow: hidden;
border-radius: 1em;
font-size: 2em;
line-height: 100px;
text-align: center;
color: #fff;
background: #55E6C1;
cursor: pointer;
}
.btn::before {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
z-index: -1; // 这里和层叠顺序(Stacking Order)有关,负z-index在background之上
background: rgba(255,255,255,.2);
}
.btn:hover::before {
content: "";
}
.btn::after {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
z-index: -1;
background: rgba(0,0,0,.1);
}
.btn:active::after {
content: "";
}
0