是否可以不显示元素,如 display:none ,但继续显示 :before 和/或 :after ?
我试过了
#myspan {display:none}
#myspan:after {display:inline; content:"*"}
但这没有用。我试图让 CSS 用星号替换跨度的内容,而不引入 jQuery。
原文由 JPM 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以不显示元素,如 display:none ,但继续显示 :before 和/或 :after ?
我试过了
#myspan {display:none}
#myspan:after {display:inline; content:"*"}
但这没有用。我试图让 CSS 用星号替换跨度的内容,而不引入 jQuery。
原文由 JPM 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为一个非常简单的方法是利用 可见性 属性。但请注意,“隐藏”元素 仍会占用空间。但是,如果您对此感到满意,只需将父元素设置为“隐藏”,将伪元素设置为“可见”即可:
#myspan {visibility:hidden}
#myspan: after {visibility:visible}
处理好能见度后,请随意摆弄这个位置,以避免多余的空间。
就像是,
myspan {
visibility: hidden;
position: relative;
}
myspan:after {
visibility: visible;
position: absolute;
left: 10px;
}
原文由 PiyushW 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答5.1k 阅读✓ 已解决
5 回答2k 阅读
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.2k 阅读
不,这是不可能的。
伪元素呈现为子元素:
display:none
隐藏包括所有子元素的元素。编辑 1
在我看来,JavaScript 是你最好的选择。即使没有 jQuery 更改文本也不难:
演示
编辑 2
但是,如果你真的想用 CSS 来做,你可以使用负数
text-indent
隐藏文本和relative
定位显示星号:演示