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

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

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

【 tulaoshi.com - Web开发 】

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

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

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

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

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

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

代码:

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


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

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

代码:

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


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

附加:positon:absolute:

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

代码:

(本文来源于图老师网站,更多请访问https://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:这依旧是一个我最喜欢的方法,但合不合理却不敢妄言,具体代码如下:

代码:

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


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

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

代码:

(本文来源于图老师网站,更多请访问https://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的内容没办法溢出隐藏。

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

代码:

(本文来源于图老师网站,更多请访问https://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内的更加没有意义),还有它必须使用具有实色背景的图象。

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

延伸阅读
标签: Web开发
display:none: 它可以使包括容器本身在内的东西都消失,简便且有效,但它有两个耳熟能详的缺陷,那就是对搜索引擎不友好,且被屏幕阅读器所忽略。 text-indent:-9999px :text-indent是首行缩进,所以对于多行文本,若单独使用它就有明显的不足,需加上white-space:nowrap;来弥补不足,但还有一个问题:物理空间仍然存在,故还需设置li...
Java中使用的路径,分为两种:绝对路径和相对路径。 归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的! 在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径。 如果是Servlet , Action , Controller, 或则Filte...
深入分析MFC中的CArray类 作者:湖北 董志勇 我们在使用vc进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效的使用CArray类,可以提高程序的效率。 MFC提供了一套模板库,来实现一些比较常见的数据结构如Ar...
在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有...
标签: Web开发
链接用图片做背景,text-indent:-9999px; 隐藏文字,此效果在 IE 中是正常的,但在 Firefox 里,鼠标点击该链接时,虚线框却会包住被缩进的文字,结果显示为虚线框 N 长。 因为平时是用overflow:hidden; 属性的,所以一直也没有注意到这个问题的存在,但当你需要使用 JS 来实现某种交互时,强烈建议不要使用 overflow:hidden; 属性...

经验教程

406

收藏

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