热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> 网页标准>>正文内容

{ hide_text } CSS文字隐藏总结报告

发布时间:2010年06月17日点击数: 佚名

最近整理的一份CSS文字隐藏的demo,总结了几种方法,希望得出一种最完美的方案放进自己的代码片段,可是,到最后却陷入一种重复不断地推翻结论的境地。因为需要考虑的应用场景和元素实在太多,放下浏览器不谈,不同的应用终端,不同的标签结构会有不一样的最优方案,因此,与其希望在工作上多“偷一些懒”,不如平常多巩固积累基础的知识,在需要权衡的时候,便能更加得心应手。

因为自己经验尚浅,demo部分难免会有错漏情况,如发现问题,望大家能指出。

方法列表 demo

1. 毫无保留:display:none

代码片段:

(x)HTML

  1. <p class="hide_display">我是打酱油的文本</p> 

CSS

  1. /* 暴力隐藏 */  
  2. .hide_display{display:none;} 

兼容性:

优点:

方便、快捷
兼容性好
缺点:

屏幕阅读器无法阅读
超链接不适用
图片替代文本需要其他标签的背景
影响搜索排名
大量使用容易被认为是SEO作弊


2. 折中选择:overflow:hidden/position:absolute/visibility:hidden

代码片段:

(x)HTML

  1. <span class="hide_overflow">我是一号打酱油的文本</span>   
  2. <p class="hide_position">我是二号打酱油的文本</p>   
  3. <p class="hide_visibility">我是三号打酱油的文本</p> 

CSS

  1. /* 隐藏元素,脱离文本流,使元素不影响其他元素 */  
  2. .hide_overflow{   
  3. height:0px;   
  4. overflow:hidden;   
  5. display:block;/* 行内元素需要 */  
  6. float:left/* 脱离文档流 或者position:absolute;*/ 
  7. }   
  8. /* 定位在可视范围外,脱离文本流,使元素不影响其他元素 */  
  9. .hide_position{   
  10. position:absolute;   
  11. left:-32767px
  12. }   
  13. /* 原理与.hide_position一样*/  
  14. .hide_visibility{   
  15. visibility:hidden;   
  16. position:absolute/* 脱离文档流 */  
  17. margin-left:-32767px;  

兼容性:

优点:

方便、快捷
不希望屏幕阅读器读取的内容可以使用visibility
缺点:

超链接不适用
图片替代文本需要其他标签的背景


    3. 体验损失:text-indent负值

代码片段:

(x)HTML

  1. <p class="hide_tex"><a href="#">我是打酱油的超链接一号</a></p>   
  2. <a class="hide_tex_span" href="#"><span>我是打酱油的 
  3. 超链接二号</span></a>   
  4. <!--全英文字符在IE下不能被隐藏 -->  
  5. <input class="hide_tex_input" type="submit" />   
  6. <input class="hide_tex_input" type="submit" />   
  7. <button class="hide_tex_input">我是打酱油的文本 
  8. btn</button> 

CSS

  1. .hide_tex a, .hide_tex_span{   
  2. text-indent:-32767px;   
  3. display:block/* text-indent适用块状元素中行内元素和 
  4. 文本节点 */  
  5. /* 演示需要 */  
  6. width:200px;   
  7. height:20px;   
  8. margin-left:300px;   
  9. background-color:#ccc;   
  10. /* outline:none; 不建议隐藏outline,键盘流选手无法操作 */  
  11. }   
  12. .hide_tex_input{   
  13. text-indent:-32767px;   
  14. width:200px;   
  15. height:50px;   
  16. display:block;  

兼容性:

优点:

适用超链接的图片替代
缺点:

FF的虚边问题
text-indent容易产生bug

4. 牛皮癣:font-size设零

代码片段:

(x)HTML

  1. <p class="hide_fs">我是擦不掉牛皮癣</p>   
  2. <button class="hide_fs">我是打酱油的文本btn</button>   
  3. <input class="hide_fs" type="submit" /> 

CSS

  1. .hide_fs{ font-size:0; } 

兼容性:

优点:

方便、快捷
缺点:

浏览器表现不一致,ie,safari有最小字号,chrome最小12px,ff不显示文本
适用环境少
    5. 强强联合:line-height三倍

代码片段:

(x)HTML

  1. <p class="hide_lh"><a href="#">目前为止被正常人类普遍接受的疑似最完美隐藏文字方案,传说是tommy发明的</a></p>   
  2. <!-- line-height在ff3.6的button无法隐藏文本,需要配合 
  3. 其他方式 -->  
  4. <button class="hide_lh_btn">我是打酱油的文本 
  5. btn</button>   
  6. <!-- line-height在ff3.6、opera的input无法隐藏文本,需 
  7. 要配合其他方式 -->  
  8. <input class="hide_lh_btn" type="submit" />  \ 
  9. <!-- 目前比较完善的方案 -->  
  10. <input class="hide_lh_btn_final" type="submit" /> 

CSS

  1. /* 设定高度,利用行高将文本撑到容器可视范围外 */  
  2. .hide_lh a, .hide_lh_btn{   
  3. width:200px;   
  4. height:20px;   
  5. overflow:hidden;   
  6. line-height60px;/* 行高最好设3倍或以上,chrome容易后漏 */  
  7. display:block;/* 行内元素需要 */  
  8. /* 演示需要 */  
  9. background-color:#ccc;   
  10. margin-left:300px;  
  11.  }   
  12. .hide_lh_btn_final{ \ 
  13. width:200px;   
  14. height:20px;   
  15. overflow:hidden;   
  16. line-height:60px;   
  17. display:block;   
  18. font-size:0px/* opera和ff支持 */ 

兼容性:

优点:

兼容性好
超链接和图片替代文本可用
缺点:

使用限制较大,需要定宽高
多一丁点:前置背景遮挡
代码片段:

(x)HTML

  1. <!-- 在css无效和css有效图片无效都适用 -->  
  2. <a class="hide_bg" href="#"><span  
  3. class="front_bg"></span>我是可访问性的化身</a> 

CSS

  1. .hide_bg{   
  2. width:200px;   
  3. height:20px;   
  4. position:relative;   
  5. display:block;/* 行内元素需要 */  
  6. }   
  7. .hide_bg .front_bg{   
  8. background:url('bg_text.png'no-repeat/* 背景内容等于或大于容器大小 */  
  9. position:absolute/* 绝对定位,不影响文本 */  
  10. left:0px;   
  11. top:0px;   
  12. width:200px;/* 与父元素等宽高 */  
  13. height:20px;   
  14. display:block;   
  15. /* cursor:pointer; ie6和链接需要用 */  

兼容性:

优点:

兼容性好
超链接和图片替代文本可用
可访问性强
缺点:

使用限制较大,需要定宽高
代码冗余,需要空标签
另辟蹊径:content:”"
代码片段:

(x)HTML

  1. <!--只有opera支持,按定义只能用在:before 和:after-->  
  2. <a class="hide_ct" href="#">也许我才是最合适的,谁知道呢,内容表现分离。只有opera支持</a> 

CSS

  1. .hide_ct{ content:&quot;&quot;; } 

兼容性:

优点:

简单
缺点:

内容样式分离
不实用

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作