:after伪类+content内容生成经典应用举例——张鑫旭
一、简单说说content内容生成
content内容生成就是通过content属性生成内容,content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容。此特性目前已被大部分的浏览器支持: (Firefox 1.5+, Safari 3.5+, IE 8+, Opera 9.2+, Chrome 0.2+)。另外,目前Opera 9.5+ 和 Safari 4已经支持所有元素的content属性,而不仅仅是:before和:after伪元素。
例如下面这个简单的例子:
h2:before {
content: "我是额外文字!";
}
此段样式的作用是在每个h2标签的前面添加文字“我是额外文字”。
您可以狠狠地点击这里:content最基本使用Demo
content内容生成有非常多的特别的技术和应用,具体可以参见我之前写的“CSS content内容生成技术以及应用”一文,但是,那里面介绍的些技术,虽然可以给我们带来看到美女时类似的感觉,但是,目前而言,都是些没有什么实用价值的技术。
但是,实际上,:after伪类+content内容生成却是有着非常有用实用的作用的,本文就将展示这些实用的应用。
二、:after伪类+content 清除浮动的影响
这个技巧我想很多同行都用过,所以,这里仅简单介绍下。
有点经验的同行应该知道,一般不含包裹属性的div内部有浮动元素的话,那么这个浮动元素会让此div的高度塌陷。如下例子:
.box{padding:10px; background:gray;}
.l{float:left;} <div class="box">
<img class="l" data-src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
</div>
结果如下图:
正如文章开始提到的,IE8+和其他所有现代浏览器都支持:after+content,所以,对于这些浏览器我们可以使用:after+content方法清除浮动造成的塌陷。使用如下:
.fix:after{display:block; content:"clear"; height:0; clear:both; overflow:hidden; visibility:hidden;}
这样就可以让IE8+和其他浏览器清除浮动破坏带来的塌陷问题了。至于暂不支持:after伪类的IE6/IE7,我们可以使用IE私有的zoom缩放属性让div远离浮动的破坏。故,双剑合璧下就是:
.fix{*zoom:1;}
.fix:after{display:block; content:"clear"; height:0; clear:both; overflow:hidden; visibility:hidden;}
这样子,就可以实现目前所有浏览器的清除浮动影响的方法了。
虽然,清除浮动影响方法很多,添加包裹属性的元素,例如:position:absolute; display:inline-block; float:left; overflow:hidden等,但是,这些所有的方法都有局限性。我个人觉得:after伪类+zoom是目前最使用的清除浮动元素影响的方法。且不产生多余的标签,所以,我一直用它。下图为应用上面fix样式后的效果,截自Firefox3.6浏览器:
您可以狠狠地点击这里::after伪类+content清除浮动影响demo
三、:after伪类+content 让大小不固定图片垂直居中
关于让大小不固定的图片垂直居中,我之前写过篇研究性的文章“大小不固定的图片、多行文字的水平垂直居中”,里面详细展示了多种图片水平垂直居中方法,各个方法的好坏你自己评判。
这里介绍的:after伪类+content实现的图片垂直居中方法是我目前为止个人觉得最好,最使用的方法。ok,测试CSS代码如下(绿色部分为功能相关CSS代码):
.pic_box{width:300px; height:300px; font-size:0; *font-size:200px; text-align:center;}
.pic_box img{vertical-align:middle;}
.pic_box:after{display:inline-block; width:0; height:100%; content:"center"; vertical-align:middle; overflow:hidden;}
相应的HTML代码如下:
<div class="pic_box">
<img data-src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
</div>
结果IE7下的效果如下:
与清除浮动影响类似,IE6/7不支持:after伪类,我们可以用另外的方法让图片垂直居中,例如font-size方法,设一个比较大点的字体大小,IE6/7就可以实现图片垂直对齐了,至于其他浏览器,就用:after伪类+content内容生成一个vertical-align:middle属性的元素就可以了。这是我对“大小不固定的图片、多行文字的水平垂直居中”一文中提到的最后的方法的又一次提升。
目前的测试结果是:所有浏览器都垂直居中,不过Chrome浏览器的水平居中貌似左边偏移了点,这是因为Chrome浏览器font-size:0,不能消除空格产生的水平距离的原因。这或许是唯一点瑕疵吧。
您可以狠狠地点击这里::after伪类+content图片垂直居中demo
四、结语
方法都是人想出来的。
例如让大小不固定图片垂直居中,我一开始是使用淘宝前端想出的的diaplay:table-cell + font-size方法,但是发现不支持浮动等缺点,开始想新方法;
后来发现两个vertical-align:middle属性的图片靠在一起是会垂直对齐的,于是自己就将其中一张图片宽度设成1像素,高度100%,且本身为透明图片,于是实现了利用1像素宽度的辅助图片实现图片垂直居中对齐;
后来发现不一定是图片,只要是inline-block属性或是类似inline-block属性的元素就可以了,于是后来就使用span或是i标签等代替1像素宽的透明图片,于是节约了一次图片链接请求;
再后来,又发现宽度不一定是1像素,就是设成0,也是可以的,于是,就不用担心辅助元素错行的问题了;
再到现在,利用content内容生成技术,0宽度的实体标签用:after伪类+content生成,这样,就避免了在页面上写入辅助效果的空标签,同时借助了淘宝前端多年之前发现的font-size居中方法。
虽说不上什么优秀的方法,也可能早有高人知道了并使用了此方法,但是,毕竟见证了自己的进步,还是满心欣慰的。
:after伪类+content潜力还有很多很多的,希望可以与诸位同行们一起不断思考,不断想出更实际更优秀的一些方法与解决方案,一同进步一同成长。就这些,资质尚浅,文章如有表述不准确或是冒犯之处还请见谅,欢迎指正。希望本文内容能对您的学习有所帮助。
原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=1136
:after伪类+content内容生成经典应用举例——张鑫旭的更多相关文章
- :after伪类+content内容生成经典应用举例
一.简单说说content内容生成 content内容生成就是通过content属性生成内容,content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容. ...
- :after伪类+content内容生成
:after伪类+content 清除浮动的影响 浮动元素会让此div的高度塌陷.如下例子: .box{padding:10px; background:gray;} .l{float:left;} ...
- :after伪类+content经典应用举例
:after伪类+content 清除浮动的影响 .box{padding:10px; background:gray;} .l{float:left;} <div class="bo ...
- 多行文字的垂直居中或高度不同的图片垂直居中---:after伪类+content
如何让多行文字垂直居中?或者如何让图片垂直居中? 1.demo--css .box { width: 300px; height: 300px; background-color: #f5e79e; ...
- CSS content内容生成技术以及应用
content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部分的浏览器支持:(Firefox 1.5+, Safari 3.5+, IE ...
- CSS content内容生成技术以及应用(转)
一.哗啦哗啦的简介 zxx://这里“哗啦哗啦”的作用是为了渲染一种氛围.content属性早在 CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容.此特性目前已被大部 ...
- 前端(六)—— 伪类选择器:a标签的伪类、内容伪类、索引伪类、取反伪类
a标签的伪类.内容伪类.索引伪类.取反伪类 一.a标签的四大伪类 :link:未访问状态 :hover:悬浮状态 :active:活跃状态 :visited:已访问状态 四大伪类也可用于其他标签 &l ...
- 小tip: 某简单的字符重叠与图形生成----张鑫旭
引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...
- 使用button的:after伪类选择器内容的跳动
按钮的css样式,想要作个美观一点的按钮,使用:after伪类选择器在按钮后跟随"!!"的符号,但点击按钮时按钮的值内容动,但跟随的"!!"符合不动,这样看起来 ...
随机推荐
- 栈的实现——c++
栈(stack),是一种线性存储结构,它有以下几个特点: (01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的. (02) 向栈中添加 ...
- 双向一对一映射@OneToOne
双向一对一的实例我已经上传到GitHub,entrance项目上了,感兴趣的可以下载下来跑跑,这里讲两个在运行过程中遇到的问题. 问题一:上一篇博客的最后我留下了问题.一对一关联查询注解@OneToO ...
- HTML基本标记1.1
HTML头部标记head 在HTML语言的头部元素中,一般包括标题,基础信息和元信息等.HTML的头部元素以<head>为开始标记,以</head>为结束标记 语法: < ...
- mysql互为主从实战设置详解及自动化备份(Centos7.2)
mysql互为主从实战设置详解(Centos7.2) 第一步:mysql配置 my.cnf配置 服务器1 (10.89.10.90) [mysqld] server-id=1 log-bin=/ ...
- 剑指offer二十三之二叉搜索树的后序遍历序列
一.题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 二.思路 1.二叉搜索树又称二叉排序树(Binar ...
- CGI PL PERL脚本 提权
windows 2003 下,安装ActivePerl-5.16.2.1602-MSWin32-x86-296513 IIS 添加CGI支持.并在对应网站配置下面,添加CGI后缀或PL后缀 与 对应的 ...
- Postman—前置请求脚本
前言 在前面的文章中已经说到了,在Postman中可以编写以下两种脚本: 前置请求脚本 测试脚本 这两种脚本的运行时机都不一样,在上一篇<Postman—脚本介绍>中已经详细的进行了介绍. ...
- Java基础知识01
1. String,StringBuffer和StringBuilder的区别? String:final修饰,String对象创建后不可修改:StringBuffer和StringBuilder对象 ...
- 根据屏幕尺寸计算rem
!(function (doc, win) { var docEle = doc.documentElement, evt = "onorientationchange" in w ...
- Chapter 3 Phenomenon——5
I saw several things simultaneously. 我同时看见了几件事情. Nothing was moving in slow motion,the way it does i ...