本文讲css3的伪,不是讲它有多虚伪,而是说它的伪元素样式。不得不说以前虽知html伪元素,但很少用,后得知借助css3伪元素可以发挥极大的便利。故总结css3的伪如下:

CSS中存在一些比较特殊的属性,称之为伪类,它们之中最常用的就是定义链接的伪:link,:visited,:hover,:active等。除了它们,还有一些不被常使用的伪类,有:focus,:first-child,:lang等。

如下将一一介绍各伪类的用法。

CSS 伪类 (Pseudo-classes)实例:

超链接
本例演示如何向文档中的超链接添加不同的颜色。
-------------------------------------------
超链接 2
本例演示如何向超链接添加其他样式。
:link 选择器对指向未被访问页面的链接设置样式, 
:hover 选择器用于设置鼠标指针浮动到链接上时的样式,
:active选择器用于设置点击链接时的样式。
:visited 选择器用于选取已被访问的链接。
--------------------------------------------------
超链接 - :focus 的使用
本例演示如何对超链接应用 :focus 伪类(无法在 IE 中工作)。focus选择获得焦点的输入字段,并设置其样式。:focus 选择器用于选取获得焦点的元素。提示:接收键盘事件或其他用户输入的元素都允许 :focus 选择器。

当输入框获得焦点时,改变它的背景色:

$("input").focus(function(){
$("input").css("background-color","#FFFFCC");
});

亲自试一试

当元素获得焦点时,发生 focus 事件。

当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。

focus() 方法触发 focus 事件,或规定当发生 focus 事件时运行的函数。blur失去焦点。

触发 focus 事件

语法

$(selector).focus()

亲自试一试

将函数绑定到 focus 事件

语法

$(selector).focus(function)

亲自试一试----------------------------------
:first-child(首个子对象)
本例演示 :first-child 伪类的用法。first-child是父元素的首个子元素。
text-transform用于转换不同元素中的文本,text-transform 属性控制文本的大小写。

h1 {text-transform:uppercase}大写
h2 {text-transform:capitalize}混写
p {text-transform:lowercase}小写 ----------------------------------------------------------------------------
:lang(语言)
本例演示 :lang 伪类的用法。:lang 选择器用于选取带有以指定值开头的 lang 属性的元素。注释:该值必须是整个单词,即可是单独的,比如 lang="en",也可后跟连接符,比如 lang="en-us"。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

CSS里不光有伪类,还有伪元素,比如::first-letter,:first-line,:before和:after。
这个伪元素允许制作人员在元素内容的最后面插入生成内容,需要和content属性一起使用,设置在对象后发生的内容。默认地,这个伪元素是inline行内元素,不过可以使用属性 display 改变这一点。
所有主流浏览器都支持 :after 伪元素,但对于IE来说,只有IE8以上版本支持。

after顾名思义是在元素后面的意思,实质是在元素之后添加内容。

在before/after伪元素选择器中,有一个content属性,能够实现页面中的内容插入。现总结content插入情况如下:

一 插入纯文字

content:"插入的文章",或者content:none不插入内容
html:

XML/HTML Code复制内容到剪贴板
  1. <h1>这是h1</h1>
  2. <h2>这是h2</h2>

css

CSS Code复制内容到剪贴板
  1. h1::after{
  2. content:"h1后插入内容"
  3. }
  4. h2::after{
  5. content:none
  6. }

运行结果:

这是h1h1后插入内容

这是h2

二 嵌入文字符号

可以使用content属性的open-quote属性值和close-quote属性值在字符串两边添加诸如括号、单引号、双引号之类的嵌套文字符号。open-quote用于添加开始的文字符号,close-quote用于添加结束的文字符号。修改上述的css:

CSS Code复制内容到剪贴板
  1. h1{
  2. quotes:"(" ")";  /*利用元素的quotes属性指定文字符号*/
  3. }
  4. h1::before{
  5. content:open-quote;
  6. }
  7. h1::after{
  8. content:close-quote;
  9. }
  10. h2{
  11. quotes:"\"" "\"";  /*添加双引号要转义*/
  12. }
  13. h2::before{
  14. content:open-quote;
  15. }
  16. h2::after{
  17. content:close-quote;
  18. }

运行结果:

(这是h1)

\这是h2\

三 插入图片

content属性也可以直接在元素前/后插入图片
html:

XML/HTML Code复制内容到剪贴板
  1. <h3>这是h3</h3>

css:

h3::after{
    content:url(http://ido321.qiniudn.com/wp-content/themes/yusi1.0/img/new.gif)
}

运行结果:

这是h3(此处有图片)

四 插入元素的属性值

content属性可以直接利用attr获取元素的属性,将其插入到对应位置。
html:

XML/HTML Code复制内容到剪贴板
  1. <a href="http://www.cnblogs.com/ibingbing">这是链接  </a>

css:

CSS Code复制内容到剪贴板
  1. a:after{
  2. content:attr(href);
  3. }

运行结果:

这是链接http://www.cnblogs.com/ibingbing

五 插入项目编号

利用content的counter属性针对多个项目追加连续编号.
html:

XML/HTML Code复制内容到剪贴板
  1. <h1>大标题</h1>
  2. <p>文字</p>
  3. <h1>大标题</h1>
  4. <p>文字</p>
  5. <h1>大标题</h1>
  6. <p>文字</p>
  7. <h1>大标题</h1>
  8. <p>文字</p>

css:

CSS Code复制内容到剪贴板
  1. h1:before{
  2. content:counter(my)'.';
  3. }
  4. h1{
  5. counter-increment:my;
  6. }

运行结果:

大标题

文字

大标题

文字

大标题

文字

大标题

文字

counter-increment对部分和子部分进行编号(比如 "Section 1"、"1.1"、"1.2")的方法:

body
{
counter-reset:section;
} h1
{
counter-reset:subsection;
} h1:before
{
content:"Section " counter(section) ". ";
counter-increment:section;
} h2:before
{
counter-increment:subsection;
content:counter(section) "." counter(subsection) " ";
}

亲自试一试

所有浏览器都支持 counter-increment 属性。

注释:如果已规定 !DOCTYPE,那么 Internet Explorer 8 (以及更高版本)支持 counter-increment 属性。

counter-increment 属性设置某个选取器每次出现的计数器增量。默认增量是 1。

利用这个属性,计数器可以递增(或递减)某个值,这可以是正值或负值。如果没有提供 number 值,则默认为 1。

注释:如果使用了 "display: none",则无法增加计数。如使用 "visibility: hidden",则可增加计数。

六 项目编号修饰

默认插入的项目编号是数字型的,1,2,3.。。。自动递增,也能给项目编号追加文字和样式,依旧利用上面的html,css修改如下:

CSS Code复制内容到剪贴板
  1. h1:before{
  2. content:'第'counter(my)'章';
  3. color:red;
  4. font-size:42px;
  5. }
  6. h1{
  7. counter-increment:my;
  8. }

运行结果:

大标题

文字

大标题

文字

大标题

文字

大标题

文字

七 指定编号种类

利用content(计数器名,编号种类)格式的语法指定编号种类,编号种类的参考可以依据ul的list-style-type属性值。利用上述的html,css修改如下:

CSS Code复制内容到剪贴板
  1. h1:before{
  2. content:counter(my,upper-alpha);
  3. color:red;
  4. font-size:42px;
  5. }
  6. h1{
  7. counter-increment:my;
  8. }

运行结果:

大标题

文字

大标题

文字

大标题

文字

大标题

文字

八 编号嵌套

大编号中嵌套中编号,中编号中嵌套小编号。
html:

XML/HTML Code复制内容到剪贴板
  1. <h1>大标题</h1>
  2. <p>文字1</p>
  3. <p>文字2</p>
  4. <p>文字3</p>
  5. <h1>大标题</h1>
  6. <p>文字1</p>
  7. <p>文字2</p>
  8. <p>文字3</p>
  9. <h1>大标题</h1>
  10. <p>文字1</p>
  11. <p>文字2</p>
  12. <p>文字3</p>

css:

CSS Code复制内容到剪贴板
  1. h1::before{
  2. content:counter(h)'.';
  3. }
  4. h1{
  5. counter-increment:h;
  6. }
  7. p::before{
  8. content:counter(p)'.';
  9. }
  10. p{
  11. counter-increment:p;
  12. }

运行结果:

1.大标题

1.文字1

2.文字2

3.文字3

2.大标题

4.文字1

5.文字2

6.文字3

3.大标题

7.文字1

8.文字2

9.文字3

在示例的输出中可以发现,p的编号是连续的。如果对于每一个h1后的三个p重新编号的话,可以使用counter-reset属性重置,修改上述h1的css:

CSS Code复制内容到剪贴板
  1. h1{
  2. counter-increment:h;
  3. counter-reset:p;
  4. }

这样,编号就重置了,看看结果

1.大标题

1.文字1

2.文字2

3.文字3

2.大标题

1.文字1

2.文字2

3.文字3

3.大标题

1.文字1

2.文字2

3.文字3

还可以实现更复杂的嵌套,例如三层嵌套。
html:

XML/HTML Code复制内容到剪贴板
  1. <h1>大标题</h1>
  2. <h2>中标题</h2>
  3. <h3>小标题</h3>
  4. <h3>小标题</h3>
  5. <h2>中标题</h2>
  6. <h3>小标题</h3>
  7. <h3>小标题</h3>
  8. <h1>大标题</h1>
  9. <h2>中标题</h2>
  10. <h3>小标题</h3>
  11. <h3>小标题</h3>
  12. <h2>中标题</h2>
  13. <h3>小标题</h3>
  14. <h3>小标题</h3>

css:

CSS Code复制内容到剪贴板
  1. h1::before{
  2. content:counter(h1)'.';
  3. }
  4. h1{
  5. counter-increment:h1;
  6. counter-reset:h2;
  7. }
  8. h2::before{
  9. content:counter(h1) '-' counter(h2);
  10. }
  11. h2{
  12. counter-increment:h2;
  13. counter-reset:h3;
  14. }
  15. h3::before{
  16. content:counter(h1) '-' counter(h2) '-' counter(h3);
  17. }
  18. h3{
  19. counter-increment:h3;
  20. }

运行结果:

1.大标题

1-1中标题

1-1-1小标题

1-1-2小标题

1-2中标题

1-2-1小标题

1-2-2小标题

2.大标题

2-1中标题

2-1-1小标题

2-1-2小标题

2-2中标题

2-2-1小标题

2-2-2小标题

最后,css3伪类和伪元素的区别如下:

伪类用于向某些选择器添加特殊的效果。

伪元素用于将特殊的效果添加到某些选择器。

css3的伪(伪类和伪元素)大合集的更多相关文章

  1. css3 -- 伪类与伪元素

    伪类: 1.结构伪类 A:E : first-child{} E : nth-*(n){} E : first-*(even){}  E : first-*(odd){} B:nth-child 是根 ...

  2. CSS3伪类和伪元素的特性和区别

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其 ...

  3. CSS3伪类和伪元素

    作为一个CSS3初学不久者来说,很容易混淆单冒号(:)和双冒号(::)的用法,以为两者可以互换着来使用.我自己之前也混淆过他们,因为两者看起来太相像了,就像孪生兄弟.但实际上,他们的区别还是挺大的,最 ...

  4. css3怎么分清伪类和伪元素

    伪类用于向某些选择器添加特殊的效果. 伪元素用于将特殊的效果添加到某些选择器. 伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lan ...

  5. CSS3伪类和伪元素的特性和区别尤其是 ::after和::before

    伪类和伪元素的理解 官方解释: 伪类一开始单单只是用来表示一些元素的动态状态,典型的就是链接的各个状态(LVHA).随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“ ...

  6. ::before ::after CSS3中的伪类和伪元素

    ::before和::after伪元素的用法 一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:link,:active,:target,:not(),:fo ...

  7. 妙味css3课程---1-2、css3中新增的伪类和伪元素有哪些

    妙味css3课程---1-2.css3中新增的伪类和伪元素有哪些 一.总结 一句话总结: 1.div:target{}是什么意思? 比如a标签的锚点链接到div,div:target{}就可以找到这个 ...

  8. CSS3伪类与伪元素的区别及注意事项

    CSS中伪类与伪元素的概念是很容易混淆的 今天就来谈谈伪类与伪元素之间的区别 定义 首先先来看看伪类与伪元素的定义 w3c中对于它们是这么解释的 伪类:用于向某些选择器添加特殊的效果 伪元素:用于将特 ...

  9. CSS3 动态生成内容(在Web中插入内容)====CSS的伪类或者伪元素

    # css3 .类:伪类::伪元素 /* CSS3伪元素/伪类 :https://www.w3.org/TR/css3-selectors/#selectors ::selection 伪元素(F12 ...

随机推荐

  1. (任意进制转换)将 r 进制数转成 k 进制数

    我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加: 十进制转换为任意进制,都是除以基数,然后倒着取余数: 所以这里是用十进制数中转,实现任意进制数的转换 #include<iost ...

  2. Locale

    1. Locale 概述 2. Windows 区域设置 3 Linux Locale 3.1 Linux Locale 语言环境名称格式 3.2 常用区域描述(简写)日期习惯 3.3 日期显示格式 ...

  3. Django学习 之 HTTP与WEB为Django做准备

    一.HTTP 1.HTTP 简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. ...

  4. leetcode209 Minimum Size Subarray Sum

    """ Given an array of n positive integers and a positive integer s, find the minimal ...

  5. 别再写getter,setter方法了,用Lombok来简化你的代码吧

    前言 在实际开发中,有些代码是重复的.IDE一键生成的,不写不行,写了又觉得代码太臃肿,不美观.如果你也有这种体会,那么,请使用Lombok插件吧,真的非常好用.Lombok的使用也非常简单,都是各种 ...

  6. sigprocmask

    sigprocmask 检测和更改进程的信号屏蔽字 初始化信号屏蔽字的函数 sigprocempty--设置空的信号屏蔽字 sigprocfillset----设置全集的信号屏蔽字

  7. 全球定位IP位置 2018(离线版)

    球定位IP位置 2018(离线版) 这次写的软件使用Python写的,所以体积可能有点大 我特地写了GUI打包成了Exe可执行文件,方便小白使用== 只要输入目标ip就能显示目标所在的国家城市和经纬度 ...

  8. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

    1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.debapt-get install python-software-pro ...

  9. java异常处理动手动脑问题解决和课后总结

    动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...

  10. status 后面的P和I是什么单词的缩写

    我不是很肯定,有大概印象:P 为 performed, 已完成I 为 incomplete 未完成