整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS语法具体有哪三部分组成?CSS选择器属性与值的继承和层叠!

SS(层叠样式表)是一种用于控制网页样式的语言,由选择器、属性和值三部分组成。选择器用于指定要样式化的元素,属性用于指定样式,值用于定义样式的具体属性值。CSS支持继承和层叠,可以使网页样式更加精确地控制,同时也能够提高代码的可读性和可维护性。

CSS(层叠样式表)语法由以下三个部分组成:

1、选择器(Selectors):选择器指定了要应用样式的HTML元素。选择器可以基于元素的标签名、类、ID、属性和关系等方式进行指定。

2、属性(Properties):属性指定了要应用到选定元素的样式。每个属性都有一个对应的值。

3、值(Values):值指定了要应用到选定元素的属性的具体样式。例如,属性“color”可以具有值“red”或“#FF0000”。

这些部分组成了CSS规则,例如以下规则:

p {

color: red;

font-size: 16px;

}

在这个规则中,选择器是“p”,属性是“color”和“font-size”,值是“red”和“16px”。

CSS规则可以单独应用到一个元素上,也可以通过选择器应用到一组元素上。例如,下面的规则将所有<p>元素的颜色设置为红色:

p {

color: red;

}

如果想要只应用到某个类别的<p>元素,可以使用类选择器:

p.my-class {

color: blue;

}

这将只会将颜色设置为蓝色的具有my-class类的<p>元素,其他<p>元素不受影响。

除了基本的选择器和属性,CSS还提供了许多其他功能,例如媒体查询、伪类、伪元素、盒模型等等。这些功能使得CSS能够更加灵活、强大,从而可以更好地控制页面的样式。

CSS还支持继承和层叠,这是CSS的两个重要概念。

继承(Inheritance)指的是当元素没有显式设置某个属性时,它可以继承来自父元素的属性。例如,如果没有为某个段落设置颜色,那么它会继承父元素的颜色属性。继承可以简化CSS的编写,减少了代码量,同时也能够保持一致的样式。

层叠(Cascading)指的是当多个规则同时应用到同一个元素时,它们的样式如何叠加。层叠的顺序按照以下三个优先级:

1、样式表来源的优先级,即内联样式(Inline Style)优先级最高,其次是嵌入样式表(Embedded Style Sheet),最后是外部样式表(External Style Sheet)。

2、元素的特殊性(Specificity)优先级,特殊性值越大的选择器越优先。

3、代码顺序的优先级,后出现的规则覆盖前面的规则。

通过继承和层叠,CSS可以使页面的样式更加精确地控制,同时也能够提高代码的可读性和可维护性。

ss选择器

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后代(包括儿子 孙子 重孙...)

: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中以第一个字

:first-line

p:first-line {background: yellow}

选择每个<p>元素的第一行

版本 2

选择器

示例

说明

*

* {padding: 0;}

选择所有标签

父子element>element

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

选择class="list"的所有儿子li

兄弟element+element

h1+p {color: red}

在h1后面选一个p兄弟

属性
[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是二儿子)

: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并且是其父元素的第一个

:last-of-type

li:last-of-type{}

选择所有li并且是其父元素的最后一个

:only-of-type

h2:only-of-type{}

选择一个h2并且它是唯一一个
(h1:only-of-type 不会选中因为不是唯一)

:only-child

h2:only-child{}

选择一个h2并且是其父元素的独子
(div1 生了4个所以选不了他的h2)

:nth-child(n)

div:nth-child(1){}

选择一个div并且是其父元素的第一个孩子

:nth-last-child(n)

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

选择一个div并且是其父元素的倒数第二个孩子


: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 = 0
  • B的值等于 ID选择器出现的次数
  • C的值等于 类选择器 和 属性选择器 和 伪类 出现的总次数
  • D 的值等于 标签选择器 和 伪元素 出现的总次数

这里举个例子:

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

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

  • 因为没有内联样式 ,所以 A = 0
  • ID选择器总共出现了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

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

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

么是样式选择器

  • Selector { /* Selector 是样式选择器 */
  • property:value; /* color:red; */
  • property:value; /* font-size:4cm; */

}

Selector:当定义一条样式规则时,必须指定受这条样式规则作用的网页元素,在一条规则中定义的网页元素就是selector(选择器),也就是选择该样式规则作用于的网页元素。

HTML选择器

  • HTML有标签, CSS就用选择器
  • 选择符就是赋予内部或外部样式表的名字
  • HTML的标签,用来改变一个指定标签的样式
  • 任何一个元素都可以是一个CSS选择符

类选择器

  • 同一个选择器能有不同的类,因而允许同一个元素有不同的样式
  • 定的方法
  • [tag].类名 (类名是自定义的,如果不加tag则代表所有HTML元素)
  • <tag class=“类名 类名1 类名2”> (同一个元素可以使用多个类,类名之间使用空格分开)

ID选择器

  • 在HTML页面中, ID属性指定了某个单一元素,id属性就用来对单一元素定义单独样式
  • 一个HTML页面中,ID属性值要唯一
  • #idname { } (idname是自定义的名称)
  • <tag id=“idname”>

关联选择器

  • 关联选择器只不过是一个用空格隔开的两个或更多的单一选择器给成的字符串
  • 因为层叠顺序的规则,它们的优先权比单一的选择符大
  • 必须按关联关系使用,不能有反顺序
  • 只要能保持关联关系就可以,不管是在多少层

组合选择器

  • 为了减少样式表的重复声明,组合是允许的
  • 只要使用英文逗号(,)隔开每个选择符就可以了

伪元素选择器

伪元素选择器是指对同一个HTML元素在不同的状态下的一种定义方式

目前只有a和p两处HTML元素可以使用

使用时的语法

标签:伪元素 标签[.类名]:伪元素

  • a:link 没有任何运作前的状态
  • a:hover 光标移到到超链接上的状态
  • a:active: 选择超链接的状态
  • a:visited 访问过超连接的状态
  • p:first-letter 一个段落中首个字母的状态
  • P:first-line 一个段落中首行的状态

样式规则的继承

所有嵌套在某个HTML标签中的HTML标签都会继承外层标签设置的样式规则。

样式规则的

优先级

关联>ID选择器>CLASS选择器>HTML标签选择器