CSS3选择器01—CSS2.1部分选择器[通俗易懂]

这篇文章主要用于存储CSS以及CSS3的选择器部分知识,以便日后查阅及记忆.该内容分为两部分,第一部分为css选择器的一些基本知识。第二部分为CSS3新增加的选择器。在开始之前,先简单介绍一下选择

大家好,又见面了,我是你们的朋友全栈君。

这篇文章主要用于存储CSS以及CSS3的选择器部分知识,以便日后查阅及记忆.


该内容分为两部分,第一部分为css选择器的一些基本知识。第二部分为CSS3新增加的选择器。

在开始之前,先简单介绍一下选择器,选择器的作用就是定位我们想要样式化的网页HTML元素。选择器可以分为以下几种类型。

1、简单选择器,通过元素类型,class或id匹配一个或多个元素。

2、属性选择器,通过属性/属性值 匹配一个或多个元素。

3、伪类,匹配处于确定状态的一个或多个元素。(比如鼠标指针悬停的元素、当前被选中或未被选中的复选框、元素是DOM树中一父节点的第一个子节点等)

4、伪元素,匹配处于相关的确定位置的一个或多个元素。(例如每个段落的第一个字,或者某个元素之前生成的内容)

5、组合器,这里不仅仅是选择器本身,还有以有效的方式组合两个或者更多的选择器用于非常特定的选择的方法。

6、多用选择器,这些也不是单独的选择器。这个思路是将以逗号分隔开的多个选择器放在一个CSS规则下面, 以将一组声明应用于由这些选择器选择的所有元素。

 

那么下面就具体的选择器来一一做一定的解释,有不足的地方还希望不吝赐教。嘿嘿。

一.基本选择器:

     1:*通配符,匹配所有元素。

*{
  padding:0;
  margin:0;    
}

/*个人建议,请不要在你的CSS代码中出现通配符,通配符(*)是一种效率极低甚至会有在大型网站中使用导致页面渲染变慢的可能。所以,请尽可能的不要使用。*/

    2:#idid选择器,匹配所有id属性为”id”的元素,id属性具有唯一性。

#text {
  font-size: 16px;
}
/*一个ID名称在文件中必须是唯一的,若是ID名称重复,则可能会出现不可预知的情况,所以一定要避免ID名称的重复*/

    3:.class,class选择器,匹配所有class属性中包含”class”的元素。文档中的多个元素可以具有相同的类名,而单个元素可以有多个类名(以空格分开多个类名的形式书写)

.demo{
    width: 100px;
    height: 100px;
    background: red;
}

    4:E(element),标签选择器,匹配所有使用E标签的元素。

span{
    color: red;
    background: pink;
    font-style: 20px;
}

二.多元素组合选择器:

    5:E,F,多元素选择器,匹配所有E元素和F元素,E和F之间用逗号(,)分隔。

span,p,div{
    color: red;
    background: pink;
    font-style: 20px;
}

    6:E F,后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔。

.demo .text{
    color: gray;
}

    7:E > F,子元素选择器,匹配所有E元素的子元素F。

.demo>.text{
    color: gray;
}

    8:E + F,毗邻元素选择器,匹配所有紧随E元素之后的同级元素F。

.demo + .text{
    color: gray;
}

三.属性选择器:

    9:E[att],匹配所有具有att属性的E元素,不考虑它的值。(E在此处可以省略,如“[checked]”,下同)

[title]{
    color:red;
}

    10:E[att=val],匹配所有att属性等于”val”的元素。

[title=name]{
    border:5px solid blue;
}
img[title=bgimg]{
    width:100px;
    height:100px;        
}

    11:E[att~=val],匹配所有att属性具有多个空格分隔的值、其中一个值等于”val”的E元素。

[title~=hello]{
    color:red;
} 

    12:E[att |= val],匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以”val”开头的E元素。(主要用于lang属性,比如”en”、”en-us”、”en-gb”等等)

[lang|=en] {
    color:red;
}

四.伪类选择器:

    13:E:first-child,匹配父元素的第一个子元素。

.demo:first-child{
    color: pink;
}

    14:E:link,匹配所有未被点击的链接。

.demo:link{
    font-weight: 900;
}

    15:E:visited,匹配所有已被点击的链接。

.demo:visited{
    font-weight: 900;
}

    16:E:active,匹配鼠标已经在其上按下,还没有释放的E元素。

.demo:active{
    font-weight: 900;
}

    17:E:hover,匹配鼠标悬停其上的E元素。

.demo:hover{
    color: orange;
    font-weight:900;      
}

    18:E:focus,匹配获得当前焦点的E元素。

input:focus{
    color:red;
}

    19:E:lang(c),匹配lang属性等于c的元素。

html:lang(zh){
    color:lime;
    background:red;
}
:lang(en) > span{
    color:pink;
}

五.伪元素选择器:

    20:E:first-line,匹配E元素的第一行。

.demo:first-line{
    color:red;
}

    21:E:first-letter,匹配E元素的第一个字母。

.demo:first-letter{
    font-weight: border;
}

    22:E:before,在E元素之前插入生成的内容。

.num:before{
  content:"(" attr(href) ")",
          
}

    23:E:after,在E元素之后插入生成的内容。

.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
}
/*after清除浮动,这里只对after和before的选择器写法做一个简单说明,并不具体涉及属性及其用法*/

 

最后想说,这些东西只是简单的罗列和解释,算是方便在使用的时候快速查找,如果想要更深入的了解还需要的更多的练习和代码量,就算是最基本的选择器知识,其实也要比这些多得多。只是还有很多用处并不是特别多,比如上面的E:lang(c),E:visited,E:active等,还有很多未写在文章内的,如果想要更深入的学习,大家可以去下面的相关链接查看。

 

参考:css选择器笔记30个你必须熟记的css选择器MDN-docs-选择器介绍,HTML5和CSS3权威指南(第3版下册-庐陵牛)第十九章,before和after伪元素的用法

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124443.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初识业务架构图_管理架构图

    初识业务架构图_管理架构图文章目录什么是业务架构图?业务架构图规范宏观微观设计步骤分层分模块分功能实例什么是业务架构图?是将用户需求进行宏观系统抽象进行描述和展示,是表达业务层级和关系的工具,目的是将简单的业务逻辑简单化,降低理解难度,这个图是给用户和各级领导看的。业务架构图规范宏观1.宏观:横向:并列结构,级别是相同的;纵向:要有分层的思想,整体上有层次感,上层是依赖于下层的,越底层的,越是基础服务,同时也更为重要;对称:要讲究对称美,尽可能地功能结构分配均匀;虚线框:多个模块,逻辑上可以归为一块时可以使用虚线

    2022年10月11日
    0
  • jsoncpp官方教程_jsoncpp用法

    jsoncpp官方教程_jsoncpp用法本文主要介绍使用JsonCpp库,通过C++编程语言实现JSON文件读写操作的具体方法。1写入JSON文件这里编写一个示例程序,该程序将JSON字符串写入到JSON文件中。示例代码(json_file_oper_write.cpp)的内容如下:#include<jsoncpp/json/json.h>#include<fstream>usingnamespacestd;intmain(){Json::Value

    2022年10月10日
    0
  • 走进计算机病毒-基础知识「建议收藏」

    走进计算机病毒-基础知识「建议收藏」计算机病毒可通过注册表来完成其目的

    2022年5月3日
    47
  • 角色权限表怎么设计_用户角色权限在数据库表中怎样实现

    角色权限表怎么设计_用户角色权限在数据库表中怎样实现设计一个灵活、通用、方便的权限管理系统。      在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也分别称为对象资源和数据资源,后者是我们在系统设计与实现中的叫法。系统的目标就是对应用系统的所有对象资源和数据资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮、数据显示的列以

    2022年9月1日
    2
  • 编程干货│全网最全 adb 命令[通俗易懂]

    编程干货│全网最全 adb 命令[通俗易懂]adb命令是Android开发和测试人员不可替代的强大工具

    2022年7月27日
    4
  • 第一章:Activiti工作流教程[通俗易懂]

    第一章:Activiti工作流教程[通俗易懂]第一章:Activiti工作流教程

    2022年4月23日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号