侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

CSS高级技巧:图片替换

前端  /  管理员 发布于 7年前   337


上一篇CSS教程 文章:CSS高级技巧:CSS Sprites
图像替换技术有相当的用处, 特别是注重视觉的设计, 而且在一定程度上也不会影响非可视化浏览器的用户群(屏幕阅读器).
本节用到的图片只有一个:
经典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标签...
以上几乎是现存所有的图像替换方法, 各有优缺点, 按照自己的情况选用吧.
下一篇CSS教程 文章:CSS高级技巧:滑动门


  • 上一条:
    CSS高级技巧:CSS Sprites
    下一条:
    优秀的网页前端设计的一些指标
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客