CSS3选择器--伪类

        在前面介绍了CSS3选择器中的属性选择器结构性伪类选择器,在结构性伪类选择器的文章中也提及了伪元素和伪类,那么本文会详细说明几个伪类的使用,但是侧重点在于before和after两个伪类的使用。

        先列举伪类有什么,当然可能不是完整的,后面会一个一个举例说明如何使用。

1)E:target 表示当前的URL片段的元素类型,这个元素必须是E

2)E:disabled 表示不可点击的表单控件

3)E:enabled 表示可点击的表单控件

4)E:checked 表示已选中的checkbox或radio

5)E:first-line 表示E元素中的第一行

6)E:first-letter 表示E元素中的第一个字符

7)E::selection表示E元素在用户选中文字时

8)E::before 生成内容在E元素前

9)E::after 生成内容在E元素后

10)E:not(s) 表示E元素不被匹配

11)E~F表示E元素毗邻的F元素

12)Content 属性


接下来进行详细说明。

1)E:target 

       含义:匹配相关URL指向的E元素。

       解释:URL后面跟锚点#,指向文档内某个具体的元素。这个被链接的元素就是目标元素(target element),:target选择器用于选取当前活动的目标元素。

      举例,效果图如下:

           

     实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>The simple of 'target'</title>
    <style>
        a{
            text-decoration: none;
            color:#000;
            font-size: 20px;
            display: inline-block;
            width:60px;
            height: 30px;
            background-color: #75ffcd;
            text-align: center;
            line-height: 30px;
            margin-bottom:10px;
        }
        div{
            width: 200px;
            height: 200px;
            text-align: center;
            line-height: 200px;
            font-size: 50px;
            display: none;
        }
        #div1{
            background-color: #34b1ff;
        }
        #div2{
            background-color: #ffcb38;
        }
        #div3{
            background-color: #ff89d9;
        }
        div:target{
            display: block;
        }
    </style>
</head>
<body>
    <a href="#div1">div1</a>
    <a href="#div2">div2</a>
    <a href="#div3">div3</a>

    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div id="div3">div3</div>
</body>
</html>
2)E:disabled 和 E:enabled 

     含义:E:disabled 用来匹配用户界面上处于可用状态的元素E,然后可以进行设置自己想要的样式。

               E:enabled 用来匹配用户界面上处于可用状态的元素E。

    举例,灰色背景表示不可输入内容,蓝色背景表示可输入内容:

          

     实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>disabled and enabled</title>
    <style>
        input{
            width: 200px;
            height: 20px;
            line-height: 20px;
            color:#000;
            margin-top:10px;
        }
        input:disabled{
            background-color: #bfbfbf;
        }
        input:enabled{
            background-color: #8ad6ff;
        }
    </style>
</head>
<br>
    <input type="text" value="" placeholder="请输入姓名" disabled/></br>
    <input type="text" value=""  placeholder="请输入密码"/>
</body>
</html>

3)E:checked 

      含义:匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)。

      举例:

           

      实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>checked</title>
    <style>
        input:checked{
            width: 100px;
            height:100px;
        }
    </style>
</head>
<body>
    <input type="checkbox">
</body>
</html>
4)E:first-line 、E:first-letter、E::selection

     这三个直接按照字面上理解就好了,这里就直接用一个例子来说明。

     如图所示,第一个字符是红色的,大号字体,第一行是蓝色背景,选中的背景为黄色。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            width:500px;
            border:1px solid #00A2E9;
            font-size:12px;
            line-height:30px;
            padding:10px;
        }
        p:first-line{
            background-color: #00A2E9;
        }
        p:first-letter{
            font-size:30px;
            color:red;
        }
        p::selection{
            background-color: #ffcb38;
            color:#fff;
        }
    </style>
</head>
<body>
<p>在学习结构性伪类选择器之前,先了解2个概念:CSS中的伪类选择器和伪元素: 1、伪类选择器:
    CSS中已经定义好的选择器,不能随便取名,常用的伪类选择器是使用在a元素上的几种,
    如a:link|a:visited|a:hover|a:active 2、伪元素选择器:并不是针对真正的元素使用的选
    择器,而是针对CSS中已经定义好的伪元素使用的选择器
</p>
</body>
</html>
5)E::before和E::after 

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

      需要注意两点:

      第一,我们用E:before和E:after来目标锁定相同的元素.严格的说,在代码中他们是伪元素。

      第二,在内容模块中提到,伪元素如果没有设置“content”属性,伪元素是无用的。

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

      下面仿造微信聊天对话框,说明一下这两个伪类的使用。

       

      代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width:200px;
            height:36px;
            position: relative;
            border:black 1px solid;
            border-radius:5px;
            background: rgba(245,245,245,1)
        }
        .box:before,.box:after{
            content: '';
            position: absolute;
            width:0px;
            height:0px;
            border:6px transparent solid;
            display: block;
            top:8px;
        }
        .box:before{
            border-right-color: rgba(245,245,245,1);
            left:-11px;
            z-index: 1;
        }
        .box:after{
            border-right-color:rgba(0,0,0,1);
            left:-12px;
            z-index: 0;
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值