当前位置: 首页 > Web前端 > CSS

你真的懂CSS吗?【CSS选择器系列1】

时间:2023-03-30 18:36:59 CSS

你真的懂CSS吗?【css选择器系列一】选择器、选择器优先级、选择器范围/*后代关系*/.boxdiv{background:#fff;}/*父子关系*/.box>div{background:#fff;}/*相邻兄弟关系*/.box+div{background:#fff;}/*兄弟关系*/.box~div{background:#fff;}以上四种在写CSS样式文件时很常见除了选择器,还有是双管道符号||和管道符号|,相关知识内容对个人理解用处不大,这里就不细说了。选择器作用域选择器的作用域基本上是全局作用域,即网页的样式渲染只与CSS代码的顺序有关,与元素本身的顺序无关。另外,现在的CSS选择器都有局部作用域的概念,比如Vue文件中的选择器priority优先权重(计算时的数值表示)通配符、选择器、逻辑组合伪类0元素选择器1类名选择器,属性选择器,伪类10ID选择器100style内联样式-!important-提示:仅逻辑组合伪类:not()使用权重计算,有利于样式重置,并且由于!important权重过高,并且可以重置Javascript修改的样式。不建议使用,以免混淆。styleinlinestyle用于需要临时修改的地方,或者样式文件重置麻烦的时候可以修改html代码About重置样式时,复制粘贴同一个选择器到样式文件末尾时不会work,可以使用repeat选择器本身来增加选择器的权重,例如:.box.boxdiv{background:#f99;}selectorselector,常用的其实不难理解,但是当我们看在一些UI框架上,比如ElementUI、AntDesignVue、LayUI等,我们会发现一些值得借鉴的地方。选择器的使用可以巧妙的解决一些需要专门化的样式。后代选择器[空格]()和子选择器[右箭头](>)子选择器只会匹配当前元素的第一个(first)子元素,后代选择器会匹配所有子元素

  • #f99
  • #f99
    1. #333
ulli{background:#333;}//全在ul子级li的背景色#333ul>li{background:#f99;}//ul中第一个子级li的背景色#f99提示:子选择器适用于有的场景一个固定的结构,为了熟悉,或者尝试使用后代选择器来解决。相邻兄弟选择器[加号](+)和兄弟选择器[波浪号](~)相邻兄弟选择器只匹配当前元素之后同级的第一个兄弟元素,兄弟选择器匹配后面的所有兄弟元素同层多用“+”来表示前端项目或UI框架中常见的radio/checkbox的变化,比较方便。国际代码参考:.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.radio{margin-top:15px;position:relative;}.radioinput[type="radio"]{position:absolute;opacity:0;}.radioinput[type="radio"]+.radio-label{cursor:pointer;}.radioinput[type="radio"]+.radio-label:before{content:'';background:#ffffff;边框半径:100%;边框:1pxsolid#bac4d0;显示:内联块;宽度:14px;高度:14px;位置:相对;顶部:1px;边距:4px;垂直对齐:top;cursor:pointer;text-align:center;-webkit-transition:all250msease;transition:all250msease;}.radioinput[type="radio"]:checked+.radio-label:before{背景-颜色:#4399ff!important;box-shadow:inset0002px#ffffff;}.radioinput[type="radio"]:focus+.radio-label:before{outline:none;border-color:#bac4d0;}.radioinput[type="radio"]:disabled+.radio-label:before{box-shadow:inset0002px#ffffff;border-color:#b4b4b4;background:#b4b4b4;}.radioinput[类型="radio"]+.radio-label:empty:before{margin-right:0;}Tips:CSS样式文件的解析顺序是从上到下,所以我们在实际项目中可以重新设置重写,同时time,css选择器是没有前向选择的选择器,这样也避免了浏览器渲染body后界面发生明显变化,而且html的样式重写也应该放在整个css文件的最前面,而不是混在中间,这将是非常不舒服的规格,也可能出现闪屏问题。元素选择器元素选择器本身不能像类选择器那样重复。与属性选择器一起使用时,元素选择器必须写在前面。Tips:元素选择器是不区分大小写的,虽然我们在Eslint代码后可能的警告是因为它不规范,所以我们尽量在我们的样式文件中使用小写字母,包括在元素的类名和样式的属性值。我们也尽量合理使用小写字母,就像样式文件中一样,颜色值小写#fff等自定义元素尽量统一,现代浏览器都支持,即Html5中的语义标签。自定义标签可能更适合应用场景,但是由于项目需要兼容IE,一直没有机会实践。在书上了解到自定义元素兼容IE8,需要在、中添加一段Javascript代码个人理解:现在很多项目使用前端框架,Vue/React等,不兼容低版本的IE,创建过多的自定义元素也需要添加大量的Javascript代码,不太现实。通配符(*)只在CSSreset中使用,不建议在项目中使用,因为它会匹配所有元素,避免出现问题。*{保证金:0;padding:0;box-sizing:border-box;}CSS知识正在巩固学习中...Github--JasonSubMara--JasonSubmMra参考链接|书张新旭《CSS选择器世界》