CSS text-indent: -9999px;

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

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

   一、display:none;网站

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

   二、visibility:hidden;url

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

   三、overflow:hidden;code

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

.texthidden{
  display:block;
  overflow:hidden;
  width:0;
  height:0;
}

  四、positon:absolute;索引

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

.texthidden{
  positon:absolute;
  margin-top:-9999px;
  margin-left:-9999px;
}

  五、text-indent:-9999px;

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

h1 a{
  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.jshelp.cn/>js助手</a>

  </h1>

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

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

  因而须要屏掉点击时产生的虚线框,IE和FF屏虚线框方法不同。IE采用的遍历方法(HTC,css表达式)有些耗系统资源,正好咱们只须要隐藏FF下的虚线框就好了,IE就无论了,说一下Firefox如何去掉连接的虚线框的方法。

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

PS:全文都只是做者的观点,至于使用text-indent:-9999px;来解决问题是否可行,有人赞同有人反对。因此仍是有待进一步讨论。

相关文章
相关标签/搜索