【前端工程师手册】30分钟搞清楚选择器和权重

有哪些选择器

基本选择器

  1. 通配选择器(*)
  2. ID选择器(#ID)
  3. 类选择器(.className)
  4. 元素选择器(tagName)
  5. 后代选择器(a b)
  6. 子元素选择器(a>b)
  7. 相邻后面兄弟元素选择器(a + b)
  8. 通用后面兄弟选择器(a ? b)
  9. 群组选择器(selector1,selector2,...)

这里面平时不太常用的选择器有相邻后面兄弟选择器通用后面兄弟选择器
首先,很多资料上把它们叫做相邻兄弟选择器通用兄弟选择器,我觉得这样会有一定的误导意义,
例如:
`

<ul>
    <li class="l1">1</li>
    <li class="l2">2</li>
    <li class="l3">3</li>
    <li class="l4">4</li>
    <li class="l5">5</li>
    <li class="l6">6</li>
    <li class="l7">7</li>
    <li class="l8">8</li>
    <li class="l9">9</li>
</ul>
li {
    list-style: none;
    height: 20px;
    width: 20px;
    background: red;
    margin: 10px;
    border-radius: 10px;
    text-align: center;
    color: white;
    float: left;
    line-height: 20px;
}

`

当使用相邻兄弟选择器时:

.l3 + li {
    background: green;
}

效果为:

可以看出相邻兄弟选择器只会选择它后面的一个兄弟元素。
当使用通用兄弟选择器:

.l3 ~ li {
    background: green;
}

效果为:

可以看出来通用兄弟选择器会选择它后面所有的兄弟元素

属性选择器

  • E[attr]:只使用属性名,但没有确定任何属性值
  • E[attr="value"]:指定属性名,并指定了该属性的属性值
  • E[attr~="value"]:指定属性名,并且具有属性值,此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的“?”不能不写
  • E[attr^="value"]:指定了属性名,并且有属性值,属性值是以value开头的;
  • E[attr$="value"]:指定了属性名,并且有属性值,而且属性值是以value结束的;
  • E[attr*="value"]:指定了属性名,并且有属性值,而且属值中包含了value;
  • E[attr|="value"]:指定了属性名,并且属性值是value或者以“value-”开头的值(比如说big-name);

属性选择器中有波浪(?)时属性值有value时就相匹配,没有波浪(?)时属性值要完全是value时才匹配

伪类选择器

动态伪类



在链接中常看到的锚点伪类:link、visited、hover、active

UI元素状态伪类



例如 :enabled,:disabled,:checked等,这些主要是对一些表单元素操作。
比较常见的如"type="text"有enable和disabled两种状态,前者为可写状态后者为不可写状态。

CSS3的:nth选择器

  • first-child: 选择某个元素的第一次的出现
  • last-child: 选择某个元素的最后一次的出现
  • nth-child(): 选择某个元素的一个或多个特定的条件的出现

权重如何计算

根据样式所在位置,对元素的影响也有关系:内联样式(标签内style形式) > style标签 > link标签
根据选择器的类型,id选择器 > 类、属性选择器和伪类选择器 > 元素和伪元素
一般来说我们的计算方式为,从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10,一个元素名,或者伪元素+1

参考资料:
你应该知道的一些事情-css权重
css选择器-基本选择器
css选择器-属性选择器
css选择器-伪类选择器

原文地址:https://www.cnblogs.com/homehtml/p/11967352.html

时间: 2024-10-07 16:35:07

【前端工程师手册】30分钟搞清楚选择器和权重的相关文章

web前端工程师:5分钟学会Web自适应

文章来源:http://www.zretc.com/technologyDetail/435.html 特别说明:在开始这一切之前,请开发移动界面的工程师们在头部加上下面这条meta: 所谓宽度自适应严格来说是一种PC端的自适应布局方式在移动端的延伸.在处理PC端的前端界面时候需要用到全屏布局时采用的就是此种布局方式.它的实现方式也比较简单,将外层容器元素按照百分比铺满地方式,里面的子元素固定或者左右浮动. 由于父级元素采用百分比的布局方式,随着屏幕的拉伸,它的宽度会无限的拉伸.而子元素由于采用

c#.net快学系列一之30分钟搞定代码生成

哇咔咔,离上次写文又有几个月了.不过上次写的<这些开源项目,你都知道吗?(持续更新中...)[原创]>受到广大读者的赞赏和推荐,也使得自己更有动力去写技术文章.好了,废话不多说,直接切入正题. 前方高能预警,由于此篇博文适合初学者入门或者各种大牛老男孩怀念那些年我们一起写过的代码生成器,所以请各路时间宝贵的大神慎重查看此篇博文,误入者后果自负!!! 一.前言背景(3分钟) 博主清晰的记得,大三的时候,老师会布置各种课外作业,不过大多是基于数据库增删改查的XX管理系统.此类系统,想必大家伙都懂,

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)(转)

出处:http://www.cnblogs.com/best/p/6582294.html 目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(<后台管理UI的选择>)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间,最后界面效果还是不佳:还好这个OA系统已经基本交付给客户在使用了,但登录界面还是非常难看,这几天花时间修改了一下,感觉还行,

30分钟搞定yii的gridview,你可能只看这一篇就够了 (包含基本配置,下拉筛选,多选删除)

view代码 <?php /* @var $this yii\web\View */ /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \common\models\LoginForm */ use yii\helpers\Url; use yii\helpers\Html; use common\helps\Helps; use common\helps\ArrayHelper; use yii\grid\GridView; us

项目实战:iOS极光推送集成(30分钟搞定)

推送有非常多,如个推.友盟.融云和极光等等.在这里就讲下怎样使用极光推送. 主要内容是将官方文档资料详细汇总并一步一步集成到项目中,您也能够直接去官方文档阅览. 极光推送SDK下载 直接打开官方文档下载最新的SDK 极光网创建APP并上传证书 一.制作推送证书和描写叙述文件:须要注意要制作两个证书,一个是測试证书,一个是公布证书,详细看官方文档截图:点击查看证书制作 直接看<iOS 证书 设置指南>其它的不用看了,废话太多 二.在极光推送官网注冊你的APP吧. bundle id要和你项目一直

淘宝前端工程师:国内WEB前端开发十日谈

转自:http://www.jianshu.com/p/8cf2df3fdbf2 一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”

电商前端工程师:国内WEB前端开发经验之路

一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是"初级"前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的"弄潮者",这在很大程度上影响我们对"技术本质"的洞察力,多

【转载】【grunt整合版】30分钟学会使用grunt打包前端代码

[grunt整合版]30分钟学会使用grunt打包前端代码 grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学,有误请包涵 准备阶段 1.nodeJs环境 因为grunt是基于nodeJs的,所以首先各位需要安装nodeJS环境,这块我们便不管了http://www.cnblogs.com/yexiaochai/p/3527418.html 2.安装

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码) 前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经验的凝练和总结,能更大限度的优化代码以及对已有代码的合理重构.作为一名合格的前端工程师,学习设计模式是对自己工作经验的另一种方式的总结和反思,也是开发高质量,高可维护性,可扩展性代码的重要手段. 我们所熟知的金典的几大框架,比如jquery, react, vue内部也大量应用了设计模式, 比如观察