将一个伪元素直接放置在另一个伪元素之上的最佳方法是什么?
假设我想在这里的标签旁边显示一个花哨的“复选框”:
label:before {
content: "\00a0";
color: #FFF;
height: 6px;
width: 6px;
display: inline-block;
}
label:after {
content: "\00a0";
height: 18px;
width: 18px;
display: inline-block;
background: #ebd196;
background-image: linear-gradient(top, #ebd196 4%, #e2b65d 5%, #ab8844 100%);
}
<input id="pretty"><label for="pretty">Label text</label>
伪元素的堆叠顺序是什么?:before出现在:after之下还是之上?哪个更适合做边框,哪个更适合做填充?
什么是应用于label,label:before & label:after的最佳定位?
3条答案
按热度按时间4si2a6ki1#
:before
(或::before
)被视为元素的第一个子元素,而:after
(或::after
)被视为最后一个子元素。因此,:after
自然会覆盖:before
。https://developer.mozilla.org/en-US/docs/Web/CSS/::before
https://developer.mozilla.org/en-US/docs/Web/CSS/::after
我想确保它们对齐的最好方法是在
label
上使用position: relative;
,在伪元素上使用position: absolute;
,以及top
,bottom
等相同的值。如果你想使用伪元素制作渐变边框,那么你可以这样做:
http://jsfiddle.net/QqzJg/
您可能会发现以下命令很有用:
http://css-tricks.com/examples/GradientBorder/
mrphzbgm2#
而不是位置,添加“垂直对齐:中间”到:after和:before。
agxfikkp3#