CSS技巧: CSS隐藏文字的方法(CSS text-indent: -9999px;)

本文探讨了在不牺牲SEO的前提下,利用CSS隐藏H1标签内文字的多种方法,并推荐了一种既美观又能保留语义的做法。

 

 建站过过程中朋友喜欢把网站名称用H1表示,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对搜索引擎不友好,否则就失去了定义h1标签的意义。

  

  在CSS中如何以图代字,找了一下CSS隐藏文字的方法,有以下几条:

  

  1、display:none;

  这个大家普遍说法是,搜索引擎可能认为被隐藏的文字属于垃圾信息而被忽略,不为隐藏的对象保留物理占位空间。GG也搜CSS文件?不过如果用这个方法,<h1>如何设计,也是难题。

  

  2、visibility:hidden;

  和display:none;相对应,为隐藏的对象保留物理占位空间。

  

  3、overflow:hidden;

  这是网上用的最多的方法,但是我认为对于隐藏h1标签的“站点名称”文字,不太合适,原因我在最后说。

  .texthidden{

  display:block;

  overflow:hidden;

  width:0;

  height:0;

  }

  

  4、positon:absolute;

  用绝对定位将其推出可视区,不过虽然可视性不存在,但仍占据物理空间,与隐藏文字的宗旨相背,另外我个人不喜欢用绝对坐标定位magin这个属性,margin在不同浏览器中总是带来不可预料的Bug。

  .texthidden{

  positon:absolute;

  margin-top:-9999px;

  margin-left:-9999px;

  }

  

  5、text-indent:-9999px;

  把h1作为一个块来显示(display:block;),指定长宽(和图片一样大小),然后指定h1的背景图片,也就是将我们需要的图片作为h1这个标签的背景。而h1标签中插入的,仍然是作为字符形式出现的博客标题,然后用text-indent:-9999px;将文字甩到屏幕看不到的地方,9999px应该是足够了,谁的屏幕也没那么大吧。

  

  h1a{

  height:30px;

  width:165px;

  float:left;

  text-indent:-9999px;

  background-image:url(images/logo.gif);

  background-repeat:no-repeat;

  display:block;

  position:relative;

  }

  

  <h1>

  <ahref=http://www.seo100.net/>百度优化</a>

  </h1>

  总结一下:

  

  如果不考虑搜索引擎的因素,方案一无疑最佳的,适合内网站点使用,并不是一无是处。

  

  方案二,可以用在特殊的占位场合,了解一下,没坏处。

  

  方案三,网上都说好,如果不是h1标签,还真可以用它。

  

  方案四,嗯,前面说我不喜欢。

  

  方案五,在h1使用上语义明确,符合语义化定义。text-indent就是首行缩进,大家都在中文段落,首行空两格用过它。这里通过负值缩进,使文字超出可视区,而这时h1下的背景就显示出来了,h1中包含的<a>标签又不影响使用,对于隐藏文字“站点名称”应该是最佳方案了。但对于多段文字的隐藏这个方法就不适合了。

  

  这里还有个问题,就是点击<h1><a>链接时,会产生一个虚线框,对于IE还好,没什么问题,虚线框只是在背影图片大小。但是Firefox就有些麻烦,它把缩进的文字范围也包含进来了,这样不是很美观。

  

  于是需要屏掉点击时产生的虚线框,IE和FF屏虚线框方法不一样。IE采用的遍历方法(HTC,css表达式)有些耗系统资源,正好我们只需要隐藏FF下的虚线框就行了,IE就不管了,说一下Firefox如何去掉链接的虚线框的方法。

  

  a{

  outline:none;/*去掉Firefox点击时产生的虚线框*/

  }

 

-9999px 使浏览器画一个9999宽的盒子... 会降低一些性能。

更有效率的方法(试过了,h1也能用):

.hide-text {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
}

 

### CSS `text-indent: -9999px` 的用法及效果 #### 1. 基本概念 `text-indent` 是 CSS 中用于设置块级元素首行缩进的属性。当其值为负数(如 `-9999px`)时,可以将文字内容向左偏移出可视区域,从而实现隐藏文字的效果[^1]。 #### 2. 使用场景 这种技术通常用于需要显示图片而非文字的场景,例如网站 Logo 或按钮设计。通过将文字隐藏,同时使用背景图片替代文字内容,可以在保持语义化 HTML 结构的同时提供更好的视觉体验[^3]。 以下是一个典型的示例: ```html <h1> <a href="http://www.seo100.net/">博客园</a> </h1> ``` ```css h1 a { display: block; width: 165px; height: 30px; text-indent: -9999px; /* 隐藏文字 */ background-image: url(images/logo.gif); /* 设置背景图片 */ background-repeat: no-repeat; /* 禁止图片重复 */ } ``` 在此代码中,`<h1>` 标签中的文字“博客园”被 `text-indent: -9999px` 移出了可视范围,而背景图片作为实际显示内容[^1]。 #### 3. 兼容性与注意事项 尽管 `text-indent: -9999px` 是一种广泛使用的技巧,但在某些情况下需要注意以下几点: - **元素类型**:该方法仅适用于块级元素、表格单元格或内联块级元素。如果目标元素不是这些类型,则需要通过 `display: block` 或 `display: inline-block` 进行转换。 - **屏幕尺寸**:虽然 `-9999px` 在大多数现代设备上足够大以隐藏文字,但对于极高分辨率的屏幕,可能需要更大的值[^4]。 - **SEO 影响**:这种方法不会对搜索引擎优化产生负面影响,因为隐藏文字仍然存在于 HTML 中,并且可以被搜索引擎爬虫读取[^3]。 #### 4. 替代方案 除了 `text-indent: -9999px`,还有其他隐藏文字方法,例如: - 使用 `font-size: 0;` 将字体大小设置为零。 - 使用 `position: absolute; left: -9999px;` 将文字移出可视区域。 - 使用 `clip-path` 或 `visibility: hidden;` 实现更现代的解决方案。 #### 5. 示例代码 以下是一个完整的示例,展示如何使用 `text-indent: -9999px` 隐藏文字并显示背景图片: ```html <h1> <a href="#">站点名称</a> </h1> ``` ```css h1 a { display: block; width: 200px; height: 50px; text-indent: -9999px; /* 隐藏文字 */ background-image: url('logo.png&#39;); /* 设置背景图片 */ background-repeat: no-repeat; /* 禁止图片重复 */ background-position: center; /* 背景图片居中 */ } ``` 在此代码中,`<h1>` 标签中的文字“站点名称”被隐藏,而背景图片作为实际显示内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值