那些你所不知的CSS ::before 和::after 伪元素用法

所属分类: 网页制作 / 应用技巧 阅读数: 1635
收藏 0 赞 0 分享

CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此。前几天发现了 Creative Link Effects 这个非常有意思的介绍创意链接特效的页面,里面惊人的效果大量使用到的特性除了 transform 属性进行变形之外,就是接下来要介绍的这两个伪元素了。

Creative Button Styles

Creative Button Styles

 一 基本语法

在了解进阶的应用之前,先来了解一下语法规则。平常仅仅需要将这两个伪元素用于添加一些自定义字符时,只需使用伪类使用的单冒号写法,以保证浏览器的兼容性:

CSS Code复制内容到剪贴板
  1. p:before  {}    

不过,在 CSS3 中为了区别伪元素和伪类为伪元素使用了双冒号,因此如果使用了 display 或者 width 等属性时使得显示脱离了原本元素后,建议按照标准双写。过于老的浏览器可能会存在支持问题,不过伪元素大多是配合 CSS3 使用,就无所谓向下兼容了:

CSS Code复制内容到剪贴板
  1. img::after {}     

这两个伪类下特有的属性 content ,用于在 CSS 渲染中向元素逻辑上的头部或尾部添加内容。注意这些添加不会改变文档内容,不会出现在 DOM 中,不可复制,仅仅是在 CSS 渲染层加入。比较有用的是以下几个值:

•[String] - 使用引号包括一段字符串,将会向元素内容中添加字符串。示例:

CSS Code复制内容到剪贴板
  1. •a:after { content"↗"; }     
attr() – 调用当前元素的属性,可以方便的比如将图片的 Alt 提示文字或者链接的 Href 地址显示出来。示例:
CSS Code复制内容到剪贴板
  1. •a:after { content:"(" attr(href) ")"; }     
url() / uri() – 用于引用媒体文件。示例:
CSS Code复制内容到剪贴板
  1. •h1::before { contenturl(logo.png); }     
counter() –  调用计数器,可以不使用列表元素实现序号功能。具体请参见 counter-increment 和 counter-reset 属性的用法。示例:
CSS Code复制内容到剪贴板
  1. h2:before { countercounter-increment: chapter; content"Chapter " counter(chapter) ". " }   

二 进阶技巧

清除浮动是一个时常会遇到的问题,不少人的解决办法是添加一个空的 div 应用 clear:both; 属性。现在,无需增加没有意义的元素,仅需要以下样式即可在元素尾部自动清除浮动:

CSS Code复制内容到剪贴板
  1. .clear-fix { *overflowhidden; *zoom: 1; }     
  2. .clear-fix:after { display: table; content""width: 0; clearboth; }     

许多人喜欢给 blockquote 引用段添加巨大的引号作为背景,这种时候我们就可以用 :before 来代替 background 了,即可以给背景留下空间,还可以直接使用文字而非图片:

CSS Code复制内容到剪贴板
  1. blockquote::before {     
  2.     contentopen-quote;     
  3.     positionabsolute;     
  4.     z-index: -1;     
  5.     color#DDD;     
  6.     font-size120px;     
  7.     font-familyserif;     
  8.     font-weightbolder;     
  9. }    

 三 特效妙用

除了简单的添加字符,配合 CSS 强大的定位和特效特性,完全可以达到给简单的元素另外附加最多两个容器的效果。有一点需要注意的是,如果不需要内容仅配合样式属性做出效果,内容属性也不能为空,即 content:”" 。否则,其他的样式属性一概不会生效。

悬浮出现方括号

悬浮出现方括号

鼠标移上链接,出现方括号:

CSS Code复制内容到剪贴板
  1. a {     
  2.     positionrelative;     
  3.     displayinline-block;     
  4.     outlinenone;     
  5.     text-decorationnone;     
  6.     color#000;     
  7.     font-size32px;     
  8.     padding5px 10px;     
  9. }     
  10.      
  11. a:hover::before, a:hover::after { positionabsolute; }     
  12. a:hover::before { content"\5B"left: -20px; }     
  13. a:hover::after { content"\5D"rightright:  -20px; }     

同样,我们只需要配合 display: block 和 position: absolute ,就可以将其当成两个容器,拼合成悬浮出现双边框的特效:

CSS Code复制内容到剪贴板
  1. a {     
  2.     positionrelative;     
  3.     displayinline-block;     
  4.     outlinenone;     
  5.     text-decorationnone;     
  6.     color#000;     
  7.     font-size32px;     
  8.     padding: 0 10px;     
  9. }     
  10.      
  11. /* 大框 */     
  12. a:hover::before, a:hover::after {      
  13.     content"";     
  14.     displayblock;     
  15.     positionabsolute;     
  16.     top: -15%%;     
  17.     left: -14%%;     
  18.     width: 120%;     
  19.     height: 120%;     
  20.     border-stylesolid;     
  21.     border-width4px;     
  22.     border-color#DDD;     
  23.  }     
  24.      
  25. /* 小框 */     
  26.  a:hover::after {     
  27.     top: 0%;     
  28.     left: 0%;     
  29.     width: 100%;     
  30.     height: 100%;     
  31.     border-width2px;     
  32.  }    

以上这篇那些你所不知的CSS ::before 和::after 伪元素用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

原文地址:http://www.cnblogs.com/androidshouce/archive/2016/06/12/5576493.html

更多精彩内容其他人还在看

sitemesh教程-页面装饰技术原理及应用

Sitemesh是一种页面装饰技术:它通过过滤器(filter)来拦截页面访问,据被访问页面的URL找到合适的装饰模板等等,感兴趣的朋友可以了解下哦
收藏 0 赞 0 分享

浏览器可以注册的事件小结

我们在网页制作中经常会用到浏览器事件,这里简单的整理下方便需要的朋友
收藏 0 赞 0 分享

从image/x-png谈ContentType(s)

今天在做一个文件上传的功能的时候,发现我总是上传不了png的图片。经过调试发现,应该是在ContentType的地方判断失误了。后来百度了一下发现一个有意思的现象,我发现png的图片的ContentType并不是我在注册表中看到的image/png,而是image/x-png
收藏 0 赞 0 分享

窗口中的各种距离/滚动距离的精确计算汇总

平时在项目开发中,没少跟边距,位置,坐标什么的打交道,悲剧的是,如果你对这些东西没有非常清晰的概念,编码的时候会非常痛苦,到处找资料寻求距离的精确计算,接下来本文提供一个示意他,希望对你有帮助
收藏 0 赞 0 分享

web的各种前端打印方法之CSS控制网页打印样式

使用CSS控制打印样式,握刚刚使用时一塌糊涂,根本不知道CSS中的midia的作用是什么,问到别人说导入这个样式,还傻乎乎的不知所措,接下来介绍CSS控制网页打印样式是如何实现的
收藏 0 赞 0 分享

响应式WEB设计学习(1)—判断屏幕尺寸及百分比的使用

现在移动设备越来越普及,用户使用智能手机、pad上网页越来越普遍,但是传统的fix型的页面在移动终端上无法很好的显示。因此,Ethan Marcotte提出一种响应式web设计的概念,响应式web设计的英文为Responsive Web Design,简写为RWD,感兴趣的朋友可
收藏 0 赞 0 分享

响应式WEB设计学习(2)—视频能够做成响应式吗

除了图片以外,还有一种常见的多媒体形式是视频。有时在web设计中,根据需要会在页面中加入视频,视频大小的自适应单靠CSS本身似乎是做不到的,感兴趣的朋友可以详细了解下
收藏 0 赞 0 分享

响应式WEB设计学习(3)—如何改善移动设备网页的性能

究竟是网页中的何种元素拉低了网页在移动设备中加载的速度呢?这些元素应该做何处理以提升页面在移动设备中的整体性能?是否存在一种设计模式可以同时满足移动端及桌面端的页面设计呢?带着这些疑问开始本文之旅吧
收藏 0 赞 0 分享

网页设计必备手册 216网页安全色大全

网页安全色是指在不同硬件环境、不同操作系统和不同浏览器中都能够正常显示的颜色集合(调色板或者色谱),也就是说这些颜色在任何终端用户的显示设备上都是相同的效果
收藏 0 赞 0 分享

网页设计中设计出有层次感的界面的经验介绍

很多网友常说自己的网站为什么色彩上总是有问题,总是看起来没什么精神,没办法吸引人注意。观察了一些网友们设计的网站发现他们在用色上不够大胆,同时也缺乏对色彩层次的理解。
收藏 0 赞 0 分享
查看更多