收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

2023-01-03 0 974

css示例

CSS示例是CSS准则的第三部份

它是原素和其它部份女团出来说应用领域程序别的HTML原素应是入选为应用领域准则中的CSS特性值的形式

示例所优先选择的原素,叫作“示例的第三类”

他们从两个Html结构已经开始

<div id=“box”> <div class=“one”> <p class=“one_1”> </p > <p class=“one_1”> </p > </div> <div class=“two”></div> <div class=“two”></div> <div class=“two”></div> </div>

关于css特性示例常用的有:

id示例(#box),优先选择id为box的原素类示例(.one),选择类名为one的所有原素标签示例(div),优先选择标签为div的所有原素后代示例(#box div),优先选择id为box原素内部所有的div原素子示例(.one>one_1),优先选择父原素为.one的所有.one_1的原素相邻同胞示例(.one+.two),优先选择紧接在.one之后的所有.two原素群组示例(div,p),优先选择div、p的所有原素

还有一些使用频率相对没那么多的示例:

伪类示例:link :优先选择未被访问的链接 :visited:选取已被访问的链接 :active:优先选择活动链接 :hover :鼠标指针浮动在上面的原素 :focus :优先选择具有焦点的 :first-child:父原素的首个子元素伪原素示例:first-letter :用于选取指定示例的首字母 :first-line :选取指定示例的首行 :before : 示例在被选原素的内容前面插入内容 :after: 示例在被选原素的内容后面插入内容特性示例[attribute] 优先选择带有attribute特性的原素 [attribute=value] 优先选择所有使用attribute=value的原素 [attribute~=value] 优先选择attribute特性包含value的原素 [attribute|=value]:优先选择attribute特性以value开头的原素

CSS3中新增的示例有如下:

层次示例(p~ul),优先选择前面有p原素的每个ul原素伪类示例:first-of-type 表示一组同级原素中其类型的第三个原素 :last-of-type 表示一组同级原素中其类型的最后两个原素 :only-of-type 表示没有同类型兄弟原素的原素 :only-child 表示没有任何兄弟的原素 :nth-child(n) 根据原素在一组同级中的位置匹配原素 :nth-last-of-type(n) 匹配给定类型的原素,基于它们在一组兄弟原素中的位置,从末尾已经开始计数:last-child 表示一组兄弟原素中的最后两个原素 :root 设置HTML文档 :empty 指定空的原素 :enabled 优先选择可用原素 :disabled 优先选择被禁用原素 :checked 优先选择选中的原素 :not(selector) 优先选择与 <selector> 不匹配的所有原素特性示例[attribute*=value]:优先选择attribute特性值包含value的所有原素 [attribute^=value]:优先选择attribute特性开头为value的所有原素 [attribute$=value]:优先选择attribute特性结尾为value的所有原素

示例

示例

说明

class

.test{color: red}

优先选择class=”test”的标签

id

#test{color:red}

优先选择id=”test”的标签

element

p{color: red}

优先选择所有 p 标签

element, element

div, p {}

优先选择所有div和p

后代

element element

ul li {border: 1px solid red;}

优先选择ul的所有li后代(包括儿子 孙子 重孙…)

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:link

a:link {color: black;}

优先选择所有未访问链接

:visited

a:visited {color: red;}

优先选择所有访问过的链接

:hover

a:hover {color: #fff}

鼠标悬浮触发

:active

a:active {background: yellow;}

优先选择活动链接(按住鼠标不松开触发)

(注:在CSS定义中,:active必须位于:hover之后!)

:first-letter

h1:first-letter{font-size: 200%}

优先选择h1中以第三个字

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:first-line

p:first-line {background: yellow}

优先选择每个<p>原素的第三行

版本 2

示例

示例

说明

*

* {padding: 0;}

优先选择所有标签

父子element>element

.list > li {border: 1px solid red;}

优先选择class=”list”的所有儿子li

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

兄弟element+element

h1+p {color: red}

在h1后面选两个p兄弟

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

特性

[attribute]

[type] {display: block;}

优先选择带有 type 特性的标签

特性等于

[attribute=value]

[type=text] {display: block;}

优先选择type特性值为text的标签

特性包含

[attribute~=value]

[eyes~=小眼睛] {display:none}

优先选择所有eyes特性包含

小眼睛的原素

(<span eyes=”单眼皮 小眼睛”>)

[attribute|=word]

[eyes|=”小眼睛”]

(常与attribute^=value混淆)

优先选择eyes特性为小眼睛开头的原素;

这个值必须是完整的单词(或者后面跟着连字符” – “)

如:eyes=”小眼睛-李荣浩”

:focus

input:focus{backgroundr:yellow;}

优先选择具有焦点的输入原素

大儿子

element:first-child

h1:first-child{color: red}

优先选择两个h1标签并且

是其父原素的第三个原素

(h2:first-child 不会选中,因为h2是二儿子)
收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:before

span:before

在每个<span>原素之前插入内容

:after

span:after

在每个<span>原素之后插入内容

版本 3

示例

示例

说明

酒场兄弟

element1~element2

h1~p {color: red}

版本2的只能选两个兄弟,版本3能选h1后面所有p兄弟

特性开头

[attribute^=value]

[name^=”李”]{border: 1px solid red;}

优先选择所有name特性以‘李’开头的原素,^ 类似正则

特性结尾

[attribute$=value]

img[src$=”.png”]{width: 100%}

优先选择src 为 .png 结尾的 img 原素

(切记element后面不要带空格)

特性包含

[attribute*=value]

[name*=”李”]{width: 100%}

优先选择所有name特性包含‘李’开头的原素

:first-of-type

li:first-of-type{}

优先选择所有li并且是其父原素的第三个

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:last-of-type

li:last-of-type{}

优先选择所有li并且是其父原素的最后两个

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:only-of-type

h2:only-of-type{}

优先选择两个h2并且它是唯一两个

(h1:only-of-type 不会选中因为不是唯一)
收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:only-child

h2:only-child{}

优先选择两个h2并且是其父原素的独子(div1 生了4个所以选不了他的h2)

:nth-child(n)

div:nth-child(1){}

优先选择两个div并且是其父原素的第三个孩子

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:nth-last-child(n)

div:nth-last-child(2){}

优先选择两个div并且是其父原素的倒数第二个孩子

收集最全面的css和css3选择器 选择器的优先级 属性继承等功能

:nth-of-type(n)

p:nth-of-type(2)

优先选择每个p原素是其父级的第二个p原素

:nth-last-of-type(n)

p:nth-last-of-type(2)

优先选择每个p原素的是其父级的倒数第二个p原素

小儿子

element:last-child

h1:last-child

优先选择h1标签并且是其父原素的最后两个孩子

:root

:root{background: red}

文档根原素伪类

:empty

h1:empty{}

优先选择两个h1标签并且没有子原素(空标签)<h1></h1>

id:target

#footer:target(:target)

优先选择当前处于活动状态的锚点标签(不加id为所有锚点)

:not(selector)

:not(p)

优先选择非 selector 原素的原素(即反选)

::selection

::selection{color: red}

优先选择光标选中的文字

:enabled

【主要用于表单原素】

input[type=”text”]:enabled

示例匹配每个启用的的原素

:disabled

【主要用于表单原素】

input[type=”text”]:disabled

示例匹配每个禁用的的原素

:checked

【主要用于表单原素】

input:checked

示例匹配每个选中的输入原素

(仅适用于单选按钮或复选框)

:out-of-range

【主要用于表单校验】

input:out-of-range{color: red;}

选中【超出】设置范围的原素(input)

<input type=”number” min=”5″ max=”10″ />

:in-range

【主要用于表单校验】

input:in-range{color:green}

选中输入值【未超出】指定范围的原素

:read-write

【主要用于表单原素】

input:read-write{border: 1px solid blue}

选中【可写】状态的input

:read-only

【主要用于表单原素】

input:read-only{background: gray;}

选中【只读】状态的input

:optional

【主要用于表单校验】

input:optional{border: 1px solid black}

选中【非必填】状态的input

:required

【主要用于表单校验】

input:required{border: 1px solid red}

选中【必填】状态的input

<input required />

:valid

【主要用于表单校验】

input:valid{color: green}

选中 输入email【合法】的input

<input type=”email” />

:invalid

【主要用于表单校验】

input:valid{border: 1px solid red}

选中 输入email【不合法】的input

<input type=”email” />

伪类示例

状态

示例

说明

:link

a:link

优先选择所有未被访问的链接

:visited

a:visited

优先选择所有已被访问的链接

:hover

a:hover

鼠标移动到原素上时

:active

a:active

点击正在发生时

:focus

input::focus

优先选择获得焦点的 input 原素

:root

:root

改变当前html所有样式

:empty

p:empty

对没有原素没有文本标签选中,如

选中,如果**

双方的

**选不中;

:first-child

p:first-child

选中父原素中第三个p,如果父原素第三个不是p选不中,如子原素第三个原素是p也会选中

:first-of-type

p:first-of-type

选中父原素中第三个p,一直往下找,如子原素中有p也会选中main>p:first-of-type只选取儿子

:last-child

p:last-child

选中父原素中最后两个p,如果父原素最后不是p选不中,如子原素中最后原素是p也会选中main>p:last-child,只选取儿子

:last-of-type

p:last-of-type

选中父原素中最后两个p,一直往下找,如子元素中有p也会选中最后两个

:only-of-type

p:only-of-type

优先选择属于其父原素的唯一子原素的p,父原素有其它p选不中。如子原素有唯一p也会选中

:only-child

p:only-child

优先选择属于其父原素的唯一子原素的p,父原素有其它p选不中。

:nth-child(n)

p:nth-child(2)

优先选择父原素第二个原素,如果是p选中,反之。如子原素第二原素是p也选中

:nth-of-type(n)

p:nth-of-type(2)

选中父原素中第二个p,一直往下找,如子原素中有二个p也会选中main>p:first-of-type只选取儿子

:nth-last-child(n)

p:nth-last-child(2)

同上从最后两个算

:nth-last-of-type(n)

p:nth-last-of-type(2)

同上,从最后两个算

:not()

:not(p)

选中父原素除了p所有原素

表单伪类

示例

示例

说明

:enabled

input:enabled

优先选择每个启用的 input 原素

:disabled

input:disabled

优先选择每个禁用的 input 原素

:checked

input:checked

优先选择每个被选中的 input 原素

:required

input:required

包含required特性的原素

:optional

input:optional

不包含required特性的原素

:valid

input:valid

验证通过的表单原素

:invalid

input:invalid

验证不通过的表单

字符伪类

状态

示例

说明

::first-letter

p:first-letter

优先选择每个原素的首字母

::first-line

p:first-line

优先选择每个原素的首行

::before

p:before

在每个原素的内容之前插入内容

::after

p:after

在每个原素的内容之后插入内容

p::after{ //在p标签内容后面加上1 content: “123”; }

错误率

相信大家对CSS示例的错误率都不陌生:

内联 > ID示例 > 类示例 > 标签示例

到具体的计算层⾯,错误率是由 A 、B、C、D 的值来决定的,其中它们的值计算准则如下:

如果存在内联样式,那么 A = 1, 否则 A = 0B的值等于 ID示例出现的次数C的值等于 类示例 和 特性示例 和 伪类 出现的总次数D 的值等于 标签示例 和 伪原素 出现的总次数

这里举个例子:

#nav-global > ul > li > a.nav-link

套用上面的算法,依次求出 A B C D 的值:

因为没有内联样式 ,所以 A = 0ID示例总共出现了1次, B = 1类示例出现了1次, 特性示例出现了0次,伪类示例出现0次,所以 C = (1 + 0 + 0) = 1标签示例出现了3次, 伪原素出现了0次,所以 D = (3 + 0) = 3

上面算出的ABCD 可以简记作:(0, 1, 1, 3)

知道了错误率是如何计算之后,就来看看比较准则:

从左往右依次进行比较 ,较大者错误率更高如果相等,则继续往右移动一位进行比较如果4位全部相等,则后面的会覆盖前面的

经过上面的错误率计算准则,他们知道内联样式的错误率最高,如果外部样式需要覆盖内联样式,就需要使用!important

承继特性

css中,承继是指的是给父原素设置一些特性,后代原素会自动拥有这些特性

关于承继特性,可以分成:

字体系列特性font:女团字体 font-family:规定原素的字体系列 font-weight:设置字体的粗细 font-size:设置字体的尺寸 font-style:定义字体的风格 font-variant:偏大或偏小的字体文本系列特性text-indent:文本缩进 text-align:文本水平对刘 line-height:行高word-spacing:增加或减少单词间的空白 letter-spacing:增加或减少字符间的空白 text-transform:控制文本大小写 direction:规定文本的书写方向 color:文本颜色原素可见性visibility表格布局特性caption-side:定位表格标题位置 border-collapse:合并表格边框 border-spacing:设置相邻单元格的边框间的距离 empty-cells:单元格的边框的出现与消失 table-layout:表格的宽度由什么决定列表特性list-style-type:文字前面的小点点样式 list-style-position:小点点位置 list-style:以上的特性可通过这特性集合引用quotes:设置嵌套引用的引号类型光标特性cursor:箭头可以变成需要的形状

承继中比较特殊的几点:

a 标签的字体颜色不能被承继h1-h6标签字体的大下也是不能被承继的

无承继的特性

display文本特性:vertical-align、text-decoration盒子模型的特性:宽度、高度、内外边距、边框等背景特性:背景图片、颜色、位置等定位特性:浮动、清除浮动、定位position等生成内容特性:content、counter-reset、counter-increment轮廓样式特性:outline-style、outline-width、outline-color、outline页面样式特性:size、page-break-before、page-break-after

给大家分享我搜集整理的各种学习资料,前端小白交学习流程,入门教程等回答-下面是学习资料参考。

前端学习交流、自学、学习资料等推荐 – 知乎

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务