深入分析网页CSS隐藏文字和以图换字技术

2016-02-19 23:13 5 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享深入分析网页CSS隐藏文字和以图换字技术教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - Web开发 】

打开电脑,感觉没有什么事可做,就随便拿起《css mastery》翻了下,刚好看倒图像替换这块,突然想起前些天曾有一网友问过该问题,就想总结出来,以便自己和网友今后参考。

正式进入使用方法总结之前,我们需要先理清几个概念,1.二者的区别:隐藏文字是要把你不需要显示的文字隐藏掉,可能因为它妨碍美观或暂时不需要显示,也就表明此时文字的视觉可视性和物理空间存在性都没有;而图象替换就是用设计好的图片以背景的方式取代文字,目的是为了使用户有更好的视觉享受,因为设计人员对文字只有有限的选择能力,但如果不写文字而直接使用背景图象又对搜索引擎不大友好,故而发明了图象替换。可能这会有些朋友有这样的疑问:为什么不直接用img /标签呢?这就涉及到标准中的分离了,在标准中只有数据才应该直接写到Xhtml中,很显然这儿的图片只能算作表现,因此,图象替换中文字虽然是不可见的,但它的物理空间仍然存在。2.什么时候该用图象替换?由于图象替换技术在关闭图象且打开CSS的情况下将出现内容空白,所以应当尽可能避免使用它,当然如果文字需要使用特定字体,且不是很重要的信息时可以考虑使用。我特别想提及的是Logo到底该不该应用图象替换?我认为Logo(既非banner也非标题)是应当作为数据出现的,因为它是一个站点的标志。好了,言归正传,开始列举常用方法。

先说CSS隐藏文字的几种常用方法,并顺便解释下各自的优缺点:

1.display:none:它可以使包括容器本身在内的东西都消失,简便且有效,但它有两个耳熟能详的缺陷,那就是对搜索引擎不友好,且被屏幕阅读器所忽略。

2.text-indent:-9999px:text-indent是首行缩进,所以对于多行文本,若单独使用它就有明显的不足,需加上white-space:nowrap;来弥补不足,但还有一个问题:物理空间仍然存在,故还需设置line-height:0;或使用超小字体(在IE下有点BUG),最终代码如下:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


.texthidden{
 text-indent:-9999px;
 white-space:nowrap;
 line-height:0;}

3.overflow:hidden:这是一个比较合理且我最喜欢的方法,具体代码如下:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


.texthidden{
 display:block;/*统一转化为块级元素*/
 overflow:hidden;
 width:0;
 height:0;}

附加:positon:absolute:

用绝对定位将其推出可视区,不过虽然可视性不存在,但仍占据物理空间,与隐藏文字的宗旨相背,代码请看:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


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

下来列举图象替换的流行技术,希望可以帮助你更好地掌握它们并了解各自的局限性:

1.display:none:此处使用该方法时,需要多添加一层额外的无语义的结构(此处用了span)来应用display:none;,即h1span标题/span/h1,再加上上述的缺陷,所以最好不使用该技术。

2.text-indent:-9999px:隐藏文字中已经都说了,只需在代码中去除line-height:0;,再添加background:url();即可,但text-indent:-9999px;在不同的浏览器存在差异,比如在IE5下就常会出现背景显示不出来或是滞后问题,不过总的来说,在图象替换方面它还是一个不错的方法。

3.overflow:hidden:这依旧是一个我最喜欢的方法,但合不合理却不敢妄言,具体代码如下:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


.replacement{
 display:block;/*统一转化为块级元素*/
 overflow:hidden;
 width:300px;
 height:100px;
 padding:100px 0 0;
 background:url();}

若需要替换一个带链接的文字(即a出现在文字标签中),则需要对代码稍做些改动,具体代码如下:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


.replacement,.replacement a{
 display:block;/*统一转化为块级元素*/
 overflow:hidden;
 width:300px;
 height:100px;}
.replacement a{
 padding:100px 0 0;
 background:url();}

对于该代码需要注意的是,必须在父级标签中加一个overflow:hidden;,因为在IE下会出现一个小bug:a的内容没办法溢出隐藏。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

附加:positon:absolute:以上三种替换方法都有一个共同的缺陷,那就是:如果浏览器禁止显示图片且打开CSS或者用阅读器之类的话会造成用户无法接受信息。为了解决这一问题,在《css mastery》一书中,给我们提出了这样一种方法:将一个图象覆盖在文字上而非隐藏文本,代码请看:

代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


style type="text/css"
h2{
 positon:relative;
 width:300px;
 height:100px;}
h2 span{
 positon:absolute;
 width:100%;
 height:100%;
 background:url();}
/style
h2
 span/span晋西浪子
/h2

当然它也有缺陷,比如,添加了一层额外的无语义的结构(比display:none内的更加没有意义),还有它必须使用具有实色背景的图象。

来源:http://www.tulaoshi.com/n/20160219/1629452.html

延伸阅读
Java中使用的路径,分为两种:绝对路径和相对路径。 归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的! 在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径。 如果是Servlet , Action , Controller, 或则Filte...
标签: Web开发
display:none: 它可以使包括容器本身在内的东西都消失,简便且有效,但它有两个耳熟能详的缺陷,那就是对搜索引擎不友好,且被屏幕阅读器所忽略。 text-indent:-9999px :text-indent是首行缩进,所以对于多行文本,若单独使用它就有明显的不足,需加上white-space:nowrap;来弥补不足,但还有一个问题:物理空间仍然存在,故还需设置li...
深入分析MFC中的CArray类 作者:湖北 董志勇 我们在使用vc进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效的使用CArray类,可以提高程序的效率。 MFC提供了一套模板库,来实现一些比较常见的数据结构如Ar...
首先,当考虑到内存分配和执行性能的时候,使用std::deque要比std::vector好。 Deque总览 deque和vector一样都是标准模板库中的内容,deque是双端队列,在接口上和vector非常相似,在许多操作的地方可以直接替换。假如读者已经能够有效地使用vector容器,下面提供deque的成员函数和操作,进行对比参考。 函数描述c.assign(beg,end) c.assign(...
首先看一个例子: 代码如下: #include iostream  using namespace std;  class A{};  class B  {      int b;      char c;  };  class C  {      int c1;         static int c2;  }; &nbs...

经验教程

342

收藏

76
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部