隐藏元素,但显示CSS生成的内容
有没有隐藏元素的内容的方法,但保持:before
内容可见:before
? 说我有以下代码:
HTML:
<span class="addbefore hidetext">You are here</span>
CSS:
.addbefore:before { content: "Show this"; } .hidetext { // What do I do here to hide the content without hiding the :before content? }
我试过了:
- 使用
display: none
和settingdisplay: inline
on:before
,但是两者仍然隐藏 - 使用
width: 0; overflow: hidden
width: 0; overflow: hidden
;,但是然后额外的空间似乎被添加(?) - 使用颜色:透明,但当然,跨度的内容仍占用空间
- 使用
text-indent: -....px
,但是- 这是由search引擎皱起了眉头
- 它似乎不适用于跨度元素(?)
任何其他的想法,我怎么可能做到这一点?
清洁解决scheme
您可以使用visibility: hidden
,但是对于此解决scheme,隐藏的内容仍然占用空间 。 如果这对你无关紧要,你就是这么做的:
span { visibility: hidden; } span:before { visibility: visible; }
黑客的替代解决scheme
另一个解决scheme是设置跨度的font-size
归零 *为一个非常小的值。 这种方法的优点:隐藏的内容不会占用任何空间。 缺点:你不能使用em或%这样的相对单位作为:before
内容的字体大小。
span:before { content: "Lorem "; font-size: 16px; font-size: 1rem; /* Maintain relative font-size in browsers that support it */ letter-spacing: normal; color: #000; } span { font-size: 1px; letter-spacing: -1px; color: transparent; }
在jsfiddle的例子。
更新(2015年5月4日):使用CSS3,您现在可以使用rem
(Root EM)单位在:before
元素中维护相对字体大小。 (浏览器支持)
*此post的以前版本build议将字体大小设置为零。 但是,这在某些浏览器中无法正常工作,因为CSS没有定义当font-size设置为零时期望的行为。 为了实现跨浏览器的兼容性,请使用上述的小字号。
为更好的浏览器支持:
将应该隐藏的文本包裹在一个额外的span
元素中,然后将类应用于该span以隐藏您希望隐藏的文本。
HTML:
<span class="addbefore"> <span class="visuallyhidden>This text will not show.</span> </span>
CSS:
.addbefore:before { content: "Show this"; } .visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
上面使用的.visuallyhidden
类是从当前版本的HTML5 Boilerplate : https : //github.com/h5bp/html5-boilerplate/blob/master/css/main.css
这个解决scheme的优点:
- 语义HTML
- 完整的浏览器支持
- 与其他小
font-size
解决scheme一样,小文本没有问题。 - 隐藏的内容不会占用空间
在这里看到它的行动: http : //jsfiddle.net/tinystride/A9SSb/
我不认为这是可能的纯CSS和HTML。 看这个例子http://jsbin.com/efeco4你会看到什么是内部CSS属性的属性,是由元素包装。; 所以对元素的任何操作也会影响CSS content
。
所以一个替代的想法可能是使用jquery,在不影响css content
的情况下,用class hidetext
清空标签div
内的html内容。 示例代码可以是这样的:
$('.hidetext').empty();
例如: http : //jsbin.com/efeco4/2