css选择器和三大特性

选择器

      将选择进行划分为三大部分

            基本选择器

                  类名:.class

                  标签: div

                  属性: input[type="eamil"] | a[href*="https://www.***.com"]

                  ID: #id

            伪类选择器

                  结构伪类: :nth-child(n) | :nth-of-type(n) | :hover | :nt-of-type(nth-child选择父元素里面的第几个子元素,不管是第几个类型;nt-of-type选择指定类型的元素)

                 伪元素: ::before | ::after

            组合选择器

                 相邻兄弟 a + b

                 普通兄弟 a ~ b

                 子选择器 a > b

                 后代选择器 a b

特性

       css三大特性是css最重要的部分,可以说如果了解了这三大特性就对css掌握了一半,这个是重在理解

       层叠性:css样式冲突采取的原则

       继承性:对于部分属性样式会有天生的继承

       优先级:选择器优先级算法

css的层叠性

       所谓层叠性是指多种CSS样式的叠加。是浏览器处理冲突的一个能力,如果一个样式通过两个相同选择器设置到同一个元素上,那么这个时候一个样式就会将另一个样式层叠掉 

      原则:

               样式冲突,遵循的原则是就近原则。那个样式离着结构近,就执行那个样式。

               样式不冲突,不会层叠

css的继承性

      子标签会继承父标签的某些样式, 想要设置一个可继承的属性,只需将它应用于父元素即可,注意点:在CSS的继承中不仅仅是子级可以继承, 只要是后代都可以继承。

可继承的属性

控制继承

        四个属性

             inherit: 被应用属性继承父级的该属性(默认就是该值)

             initial初始化,把应用属性初始为它默认的样式,并且排除继承的干扰(即不在默认继承,而是表现出没有任何设置时候的默认样式)

              unset:意思是恢复其原本的继承方式。

              revert: 效果等同于unset且浏览器支持有限。

css的优先级

       要想了解优先级,肯定得了解选择器,这就是先简单说选择器的原因。

       我们平时定义CSS样式时,经常出现两个或更多选择器应用在同一元素上,此时,

              选择器相同,则执行层叠性

               选择器不同,就会出现优先级。

 规则

        CSS 优先规则1:最近的祖先样式比其他祖先样式优先级高。

        CSS 优先规则2:"直接样式"比"祖先样式"优先级高。

        CSS 优先规则3:优先级关系:内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器

                ID 选择器, 如 #id{}

                类选择器, 如 .class{}

                属性选择器, 如 a[href="segmentfault.com"]{}

               伪类选择器, 如 :hover{}

               伪元素选择器, 如 ::before{}

               标签选择器, 如 span{}

                通配选择器, 如 *{}

        所有 CSS 的选择符由以上 7 种基础的选择器或者组合而成,组合的方式有 3 种:

                 后代选择符: .father .child{}

                子选择符: .father > .child{}

                 相邻选择符: .bro1 + .bro2{}

         CSS 优先规则4:计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。

          CSS 优先规则5:属性后插有 !important 的属性拥有最高优先级。若同时插有 !important,则再利用规则 3、4 判断优先级。

错误的说法

       在学习过程中,你可能发现给选择器加权值的说法,即 ID 选择器权值为 100,类选择器权值为 10,标签选择器权值为 1,当一个选择器由多个 ID 选择器、类选择器或标签选择器组成时,则将所有权值相加,然后再比较权值。这种说法是有问题的。比如一个由 11 个类选择器组成的选择器和一个由 1 个 ID 选择器组成的选择器指向同一个标签,按理说 110 > 100,应该应用前者的样式,然而事实是应用后者的样式。错误的原因是:权重的进制是并不是十进制,CSS 权重进制在 IE6 为 256,后来扩大到了 65536,现代浏览器则采用更大的数量。。还是拿刚刚的例子说明。11 个类选择器组成的选择器的总权值为 110,但因为 11 个均为类选择器,所以其实总权值最多不能超过 100, 你可以理解为 99.99,所以最终应用后者样式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。