2.2 属性选择器

一、属性选择器简介

元素的属性,我们都知道是什么。例如下面代码中type和value就是input元素的属性。属性选择器,顾名思义,就是通过属性来选择元素的一种方式。

 
<input type="text" value="lvye"/>

其实属性选择器在CSS2中已经存在了,而CSS3在CSS2的基础上对属性选择器进行了扩展,新增了3个属性选择器。对于CSS2中的属性选择器,请关注即将上线的CSS进阶教程。

CSS3新增的属性选择器
属性选择器 说明
E[attr^="lvye"] 选取了元素E,其中E元素定义了属性att,att属性值是以lvye开头的任何字符串。
E[attr$="lvye"] 选取了元素E,其中E元素定义了属性att,att属性值是以lvye结尾的任何字符串。
E[attr*="lvye"] 选取了元素E,其中E元素定义了属性att,att属性值任意位置是包含了lvye的任何字符串。

(E,指的是元素名element;attr,指的是属性名attribute)

CSS3新增的这3个属性选择器使得选择器具有通配符的功能,有点正则表达式的感觉,大家可以继续学习绿叶学习网的正则表达式教程

我们在百度文库下载资料的时候,经常会看到文档列表的超链接前面都会显示一个文档类型的小图标。这是用户体验非常好的设计细节。这个效果的实现技术,只需要使用CSS3中的属性选择器就可以轻松实现了。

为了实现百度文库的列表项图标效果,我们使用到以下背景小图标:

举例:

 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>CSS3 属性选择器</title>
    <style type="text/css">
        /*清除所有元素默认的padding和margin*/
        *{padding:0;margin:0;}
        /*清除列表项符号*/
        ul{list-style-type:none;}
        a
        {
            display:inline-block;
            font-size:12px;
            height:20px;
            line-height:20px;
        }
        /*匹配jpg文件*/
        a[href$="jpg"]:before
        {
            content:url("../App_images/lesson/run_css3/1.png");
        }
        /*匹配PDF文件*/
        a[href$="pdf"]:before
        {
            content:url("../App_images/lesson/run_css3/2.png");
        }
        /*匹配PDF文件*/
        a[href$="ppt"]:before
        {
            content:url("../App_images/lesson/run_css3/3.png");
        }
    </style>
</head>
<body>
    <ul>
        <li><a href="css3.jpg">这是jpg图片</a></li>
        <li><a href="css3.pdf">这是pdf文件</a></li>
        <li><a href="css3.ppt">这是ppt文档</a></li>
    </ul>
</body>
</html>

在浏览器预览效果如下:

分析:

(1)其实百度文库列表的效果实现原理很简单,只需要使用属性选择器匹配a元素中href属性值的最后几个字符(文件后缀名)。由于文件类型的不同,文件后缀名也会不同。根据后缀名不同,分别为不同文件类型的超链接添加不同图标即可。当然实际上百度文库列表实际代码不像上述代码,思想是一样的。有兴趣的同学可以查看一下百度文库的源代码。

(2)content属性用于为元素插入内容,在CSS3教程中用户界面中的“为元素添加内容content属性”这一节我们会详细讲解到。

:本站所有教程均为原创,版权所有,禁止转载和抄袭,否则必追究法律责任。附录:互联网著作权保护法

如果你想要获取更多学习资料,或者在学习过程中遇到疑问想要得到跟教程一样最优质的解答,请通过以下方式关注我们:

(1)官方微博:

(2)新手Q群:69660533(暗号:lvye)(建议初学前端的加)

(3)官方Q群:457631216(暗号:lvye)(建议有JS基础的加)

(4)绿叶论坛:进入论坛

(5)常见问题:绿叶学习网常见问题解答

回到顶部