我想知道 :before
和 :after
伪元素能否使用 inherit
值从父元素继承高度,而不是实际元素继承?
我想知道 :before
和 :after
伪元素能否使用 inherit
值从父元素继承高度,而不是实际元素继承?
<div class="parent">
<div class="child">
</div>
</div>
使用以下CSS:
.parent {
width: 100px;
height: 100px;
}
.parent > .child:before, .parent > .child:after {
content: '';
position: absolute;
width: inherit;
height: inherit;
}
这样做是行不通的,因为虽然伪元素具有inherit
的值,但生成它们的元素.parent > .child
并未从.parent
继承。相反,它们继承两个属性的默认值auto
。
为了使其可行,您需要让.parent > .child
也进行继承:
.parent {
width: 100px;
height: 100px;
}
.parent > .child {
width: inherit;
height: inherit;
}
.parent > .child:before, .parent > .child:after {
content: '';
position: absolute;
width: inherit;
height: inherit;
}
我知道这个问题相当久远,但今天我偶然发现了它。根据http://www.w3.org/TR/CSS21/generate.html,被接受的答案并不准确:
:before
和:after
伪元素从文档树中附加到的元素继承任何可继承属性。
我试过继承宽度,它可以工作。
::before
е’Ң::after
дјӘе…ғзҙ зҡ„е·ҘдҪңеҺҹзҗҶгҖӮд»Ҙиҝҷз§Қжғ…еҶөдёәдҫӢпјҡdivA > divB::after
- жҲ‘зҡ„й—®йўҳж„ҸеӣҫжҳҜжғізҹҘйҒ“divB:after
жҳҜеҗҰиғҪ继жүҝdivA
зҡ„еұһжҖ§гҖӮеңЁжҲ‘зҡ„й—®йўҳиЎЁиҝ°дёӯпјҢвҖңзҲ¶е…ғзҙ вҖқжҢҮзҡ„жҳҜdivA
пјҢвҖңе®һйҷ…е…ғзҙ вҖқжҢҮзҡ„жҳҜdivB
гҖӮжҲ‘еёҢжңӣжҲ‘зҡ„й—®йўҳиў«и§ЈйҮҠжҲҗиҝҷдёӘж„ҸжҖқгҖӮ - AKG关于这些答案,我只是碰巧遇到了转换方面的问题。它可能类似于继承; 我希望能对某人有所帮助。
有了这个:
<div class="box">
<div class="frame"></div>
</div>
并且对于frame
的这种转换:
transform: rotate(10deg);
frame:before
和frame:after
也会被转换,但它们没有frame
的属性,例如width
和height
,就像上面所解释的那样。完整示例请参见:http://jsfiddle.net/chafpgwt/1/
在这个fiddle中,有三个嵌套的正方形,每个正方形都旋转了10度,但是变换定义仅针对frame
而不是frame:after
或frame:before
。::before
来实现背景,关键是要确保你的元素定位为absolute
,而他的父元素则应该被设定为relative
。同时也要确保设置了父元素的宽度。
&__item {
position: relative;
width: 100%;
height: 100%;
&::before {
content: "";
background-color: red;
background-size: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
height: 100%
效果非常好。 - Adam Libuša