前言:这是笔者学习之后自己的理解与整理。如果有错误或者疑问的地方,请大家指正,我会持续更新!

选择器权重

  如果以4位数表示选择符权重,那么:

  • 元素选择器的权重是1;
  • id 选择器的权重为100;
  • class类选择器的权重为10;
  • 内联style(JS操作的也是行间样式)的权重为1000;
  • 当然如果某属性值设置了!important ,它还是最重要的,直接通杀;

CSS选择器简介

  • 通配选择器,*{...},星号代表通配选择器,可以与任何元素匹配;
  • 元素选择器,html{...},body{...},div{...},文档的元素是最基本的选择器,元素选择器;
  • id 选择器,#value,给元素设置一个 id 属性 ,值为value;
  • class 类选择器,.value{...},给元素设置一个 class 属性,值为value;
  • 属性选择器,属性选择器根据元素的属性及属性值来选择元素,有很多种:
  1. 简单属性选择器:img[title],获取设置了alt属性的img元素;#wrapper[outter],获取 id 为 wrapper 并且具有属性 wrapper 的元素;
  2. 具体属性选择器:input[type="button"],获取属性值 button 的 input 元素;#wrapper[outter="abc"],获取 id 为 wrapper 并且属性 outter的值为 abc 的元素;
  3. 部分属性选择器:div[class ^="a"],获取 class 属性值以 a 为开头的 div 元素;div[class $="b"],获取 class 属性值以 b 为结尾的 div 元素;
  • 分组选择器,将要分组的选择器用逗号隔开;#wrapper , #content{...},获取 id 为 wrapper 的元素,和 id 为 content 的元素,两个都获取;
  • 后代选择器,将要分组的选择器用空格隔开,#wrapper #content{...},在 id 为 wrapper 的元素对象内部,获取 id 为 content 的元素,可能是子元素,也可能是子孙元素;
  • 子元素选择器,将要分组的选择器用大于号隔开,#wrapper > #content{...},在 id 为 wrapper 的元素对象内部,获取 id 为 content 的子元素,只往下找一级;子元素选择器和后代选择器不太一样,后代选择器包含子元素选择器,并且后代选择器还会继续向下查找;
  • 兄弟元素选择器:
  1. 相邻兄弟选择器(IE6及以下不支持),将要分组的选择器用加号隔开,.wrapper + .content{...},获取 class 为 wrapper 的元素之后,紧接着的这一个 class 为 content 的元素,和通用兄弟选择器不同的是,相邻兄弟选择器只获当前元素之后取紧接着的这一个元素,后面就算还有相同的,也选择不到了;
  2. 通用兄弟选择器(IE7及以下不支持),将要分组的选择器用波浪号隔开,.wrapper ~ .content{...},获取 class 为 wrapper 的元素之后,所有的 class 为 content 的元素,和相邻兄弟选择器是不一样的;
  • 伪类选择器(IE8及以下不支持):
  1. :root 选择文档的根元素,即 html 元素;
  2. input:focus,当前 input 框获得焦点;
  3. element:hover,鼠标悬停在当前元素上面;
  4. div:nth-of-type(n),选择是其父元素的第 n 个 div 元素,这个是依照父元素内部的 div 元素的顺序计算 n ,然后获取的; n 是整数,并且从1开始,也可以是公式,也可以是关键字even(偶数)、odd(奇数);
  5. div:first-of-type,选择是其父元素的第 1 个 div 元素,与 div:nth-of-type(1) 效果相同;
  6. div:last-of-type,选择是其父元素的最后一 个 div 元素,注意前面没有 nth;
  7. div:nth-last-of-type(n),选择是其父元素的第 n 个 div 元素,但是是从最后一个子项往前数,注意前面有 nth;
  8. div:nth-child(n),选择是其父元素的第 n 个子元素,并且得是 div 元素,这个是依照父元素内部的子元素的顺序计算 n ,然后再看第 n 个是否为 div 元素;这就出现一种情况,第 n 个子元素可能不是 div ,然后就获取不到了,所以用 nth-of-type(n) 会好一点;
  9. div:first-child,选择是其父元素的第 1 个元素,并且是 div 元素,与 div:nth-child(1) 相同;
  10. div:last-child,选择是其父元素的最后一个元素,并且是 div 元素;
  11. div:nth-last-child(n),选择是其父元素的第 n 个子元素,并且得是 div 元素,但是是从最后一个子项往前数,注意前面有 nth;
  12. 还有很多其他的...
  • 伪元素选择器:
  1. :first-letter,指定一个元素第一个字母的样式,所有前导标点符号应与第一个字母一同应用该样式,并且只能与块级元素关联;
  2. :first-line,设置元素中第一行文本的样式,只能与块级元素关联;
  3. :after,IE7及以下不支持,在元素内容的最开始插入生成内容;
  4. :before,IE7及以下不支持,在元素内容的最后插入生成内容;
  5. ::selection,匹配被用户选择的部分;只支持双冒号写法,只支持颜色和背景颜色两个样式;

CSS 选择器简介的更多相关文章

  1. CSS简介和CSS选择器

    <pre name="code" class="html">Css 简洁 css 选择器 标签选择器 类选择器 ID选择器 Css 层叠样式表 Ca ...

  2. 细说CSS选择器

    众所周知,CSS的一个核心特征就是能向文档中的一组元素类型应用某些规则.每个规则都有两个基本部分:选择器(selector)和声明块(declaration block).下图显示了规则的各个部分. ...

  3. CSS选择器、CSS hack及CSS执行效率

    主要内容: 1.CSS选择器.优先级与匹配原理 2. CSS 引入的方式有哪些 ? link 和 @import 的区别是 ? 3.CSS hack 4.如何书高效CSS  一.CSS选择器.优先级与 ...

  4. 【CSS学习笔记】CSS选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  5. 第八十六节,html5+css3pc端固定布局,网站结构,CSS选择器,完成导航

    html5+css3pc端固定布局,网站结构,CSS选择器,完成导航 页面采用1280的最低宽度设计,去掉滚动条为1263像素. 项目是PC端的固定布局,会采用像素(px)单位. 网站结构语义 在没有 ...

  6. 2017年3月1日09:45:39 css选择器,session数据取不到

    昨天碰到了一个问题,通过输入指定的url进行登录在服务端将url存在session中但是登陆之后因为页面提交的登录请求是ajax请求,在后端提取session时获取不当之前存的url,老司机说不是同一 ...

  7. 常见CSS选择器的权重和优先级

    一.常见CSS选择器 [元素选择器] 1.通配选择器:*(匹配所有元素) a.效率不高,页面上的标签越多,效率越低,所以页面上最好不要出现这个选择器 2.标签选择器:li(匹配标签为li的元素) a. ...

  8. CSS选择器使用

    今天要对CSS选择器的使用方法做一个全面的总结(几乎全部是从这篇文章摘抄的 https://blog.csdn.net/qq_39241986/article/details/82185697) CS ...

  9. from表单、css选择器、css组合器、字体样式、背景属性、边框设置、display设置

    目录 一.form表单 1.form表单功能 2.表单使用原理 二.前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2. ...

随机推荐

  1. Httpclient post请求

    CloseableHttpClient httpclient = HttpClients.createDefault(); String url = "https://ml.yiche.co ...

  2. 排序算法Java实现(冒泡排序)

    算法描述:对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和交换后,n个记录中的最大记录将位于第n位:然后对前(n-1)个记录进行 ...

  3. Day3---------网络基础和DOS命令

    一.网络分类 1.地理位置 1).局域网(LAN) 2).城域网(MAN) 3).广域网(WAN) 2.传输介质 1).有线网 2).光纤网 3).无线网 3.层--------设备 传输层----- ...

  4. .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧

    一.前言 为什么要调试代码?通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug.ken.io觉得熟练代码调试技巧是成为合格程序员的基本要 ...

  5. 使用selenium时提示:ImportError:No module named selenium

    问题分析: 用的是mac系统,已经通过sudo pip install -U selenium安装好了selenium, 但是无论用命令行还是用sublime导入selenium都会提示错误. 于是查 ...

  6. [poj2342]Anniversary party_树形dp

    Anniversary party poj-2342 题目大意:没有上司的舞会原题. 注释:n<=6000,-127<=val<=128. 想法:其实就是最大点独立集.我们介绍树形d ...

  7. beta冲刺2-咸鱼

    q前言:今天晚上大概把github的的相关东西弄上了.然后把之前做的一些修改什么的也上传上去了.目测之后的话就是在自己这边改完然后直接上github那边去复制粘贴替换掉了. 昨天的问题:github这 ...

  8. 网络1712--c语言函数作业总结

    作业亮点 1.总体情况 很多同学在思路方面大部分写的都很详细,能够通过思路回顾自己的代码 大部分同学都认真完成PTA,也充分利用了函数来解题 大部分同学能够从上机考试中总结自己的失误和不足点,制订了自 ...

  9. 敏捷冲刺报告--Day5

    敏捷冲刺报告--Day5 情况简介 GUI框架重写, 添加功能 任务进度 赵坤: 后端爬虫bug修复 李世钰: GUI编写 黄亦薇:更新sprint backlog.编写每日报告 王成科:召集小组成员 ...

  10. 1013团队Beta冲刺day2

    项目进展 李明皇 今天解决的进度 优化了信息详情页的布局:日期显示,添加举报按钮等 优化了程序的数据传递逻辑 明天安排 程序运行逻辑的完善 林翔 今天解决的进度 实现微信端消息发布的插入数据库 明天安 ...