当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS高级技巧:图片替换

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

CSS样式表 中的 CSS高级技巧:图片替换


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-09   浏览: 110 ::
收藏到网摘: n/a

图像替换技术有相当的用处, 特别是注重视觉的设计, 而且在一定程度上也不会影响非可视化浏览器的用户群(屏幕阅读器).

本节用到的图片只有一个:

经典FIR

在文字外包上一组span标签, 并在CSS中将这个span进行display:none 操作, 使其隐藏, 然后在原文字的容器的CSS中加上background-image, 以达到图像替换.

HTML代码如下:

<h3 id="header">
    <span>Revised Image Replacement</span>
</h3>

CSS代码大致如下:

#header {width: 329px;height: 25px;background-image: url(sample-opaque.gif);}
#header span {display: none;}

缺点:

屏幕阅读器会略过定义 display:none 的容器, 会导致那部分用户无法得知当前的文字内容, 而且需要一个完全没有语义的span标签完成这个效果. 在关闭图像, 启用CSS的情况下, 用户得不到该有的内容.

单像素<img>替换

与经典FIR类似, 用span将文字隐藏, 并且在span外, 原父容器中加上一个1像素透明图片, 并且将被隐藏的文字加到该图片的alt属性中, 利用在图片不可用的情况下, 使用alt中的文字替换图像的原理, 使用户在关闭图像, 启用CSS的情况下也能得到文字信息.

HTML代码如下:

<h3 id="header">
    <img src="shim.gif" alt="Revised Image Replacement" />
    <span>Revised Image Replacement</span>
</h3>

CSS代码大致如下:

#header {width: 329px;height: 25px;background-image: url(sample-opaque.gif);}
#header span {display: none;}

缺点:

无语义标签.

Radu 方法

与Phark方法类似, 通过赋予文字一个外补丁来达到隐藏的效果. Radu只运行于IE5

HTML代码如下:

<h3 id="header">
    Revised Image Replacement
</h3>

CSS代码大致如下:

#header {background: url(sample-opaque.gif) no-repeat top right;width: 2329px;height: 25px;margin: 0 0 0 -2000px;}

缺点:

同样无法在关闭图像,开启CSS的情况下无法获取内容.

Leahy/Langridge 方法

利用 overflow:hidden 以及 padding 的特性,将文字达到隐藏的效果.

HTML代码如下:

<h3 id="header">
    Revised Image Replacement
</h3>

CSS代码大致如下:

#header {
    padding: 25px 0 0 0;
    overflow: hidden;
    background-image: url(sample-opaque.gif);
    background-repeat: no-repeat;
    height: 0px !important;
    height /**/:25px;

 }

缺点:

同样在关闭图像,开启CSS的情况下无法获取内容, 而且由于IE的Box原型问题, 需要用到Hack. 详见译文.

Phark 方法

利用 text-indent 的特性来达到隐藏文字的效果.

HTML代码如下:

<h3 id="header">
    Revised Image Replacement
</h3>

CSS代码大致如下:

#header {
    text-indent: -100em;
    overflow: hidden;
    background: url(sample-opaque.gif);
    height: 25px;
 }

缺点:

同样不能显示在关闭图像,开启CSS的情况下, 而且无法在IE5中运行.

Phark 方法2

修复了Phark 1中Safari显示滚动条的问题, 和IE5中无法运行的问题.

HTML代码如下:

<h3 id="header">
    Revised Image Replacement
</h3>

CSS代码大致如下:

#header {
    text-indent: -5000px;
    background: url(sample-opaque.gif);
    height: 25px;
 }

缺点:

同样不能显示在: 关闭图像,开启CSS的情况下.

Dwyer 方法

经典FIR的一种变体, 利用overflow:hidden 的特性, 使得所有设备都能获取信息, 包括非可视化浏览器.

HTML代码如下:

<h3 id="header">
    <span>Revised Image Replacement</span>
</h3>

CSS代码大致如下:

#header {width: 329px;height: 25px;background-image: url(sample-opaque.gif);}
#header span {display: block;width: 0;height: 0;overflow: hidden;}

缺点:

同样的不能显示在: 关闭图像,开启CSS的情况下, 仍旧需要额外的无语义的span标签.

Gilder/Levin 方法

解决了在关闭图像 开启CSS情况下的显示问题, 并且使得几乎所有的设备都可以获取到文本信息.

HTML代码如下:

<h3 id="header">
    <span></span>Revised Image Replacement
</h3>

CSS代码大致如下:

#header {width: 329px;height: 25px;position: relative;}
#header span {background: url(sample-opaque.gif) no-repeat;position: absolute;width: 100%;height: 100%;}

缺点:

使用完全空白的非语义标签span, 替换用图片如果是透明背景的话, 文字没办法被隐藏.

Lindsay 方法

Lindsay将文字设置为1px, 并将文字颜色设置成替换用图片背景的颜色.

HTML代码如下:

<h3 id="header">
    Revised Image Replacement
</h3>

CSS代码大致如下:

#header {
    background: url(sample-opaque.gif) no-repeat;
    width: 329px;
    height: 25px;
    font-size: 1px;
    color: #xxxxxx;
 }

缺点:

只能用在纯色背景的替换用图片的情况下, 而且在关闭图像 开启CSS的情况下同样无法获取信息.

Shea 加强版

Shea为容器加上了title属性, title中包含将被隐藏的文字, 通过这种方法来达到一种鼠标激活工具提示的一种效果来让用户获取信息.

HTML代码如下:

<h3 id="header" title="Revised Image Replacement">
    <span></span>Revised Image Replacement
</h3>

CSS代码如下:

#header {width: 329px;height: 25px;position: relative;}
#header span {background: url(sample-opaque.gif) no-repeat;position: absolute;width: 100%;height: 100%;}

缺点:

多余的空白无语义span标签...

以上几乎是现存所有的图像替换方法, 各有优缺点, 按照自己的情况选用吧.