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可以使页面的样式更加精确地控制,同时也能够提高代码的可读性和可维护性。
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属性选择器常用的有:
还有一些使用频率相对没那么多的选择器:
: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中新增的选择器有如下:
: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 |
后代 | 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;} | 选择活动链接(按住鼠标不松开触发) |
: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兄弟 |
属性 | [type] {display: block;} | 选择带有 type 属性的标签 |
属性等于 | [type=text] {display: block;} | 选择type属性值为text的标签 |
属性包含 | [eyes~=小眼睛] {display:none} | 选择所有eyes属性包含小眼睛的元素 |
[attribute|=word] | [eyes|="小眼睛"] | 选择eyes属性为小眼睛开头的元素; |
:focus | input:focus{backgroundr:yellow;} | 选择具有焦点的输入元素 |
大儿子 | h1:first-child{color: red} | 选择一个h1标签并且是其父元素的第一个元素 |
:before | span:before | 在每个<span>元素之前插入内容 |
:after | span:after | 在每个<span>元素之后插入内容 |
版本 3
选择器 | 示例 | 说明 |
酒场兄弟 | h1~p {color: red} | 版本2的只能选一个兄弟,版本3能选h1后面所有p兄弟 |
属性开头 | [name^="李"]{border: 1px solid red;} | 选择所有name属性以‘李’开头的元素,^ 类似正则 |
属性结尾 | img[src$=".png"]{width: 100%} | 选择src 为 .png 结尾的 img 元素 |
属性包含 | [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并且它是唯一一个 |
:only-child | h2:only-child{} | 选择一个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元素 |
小儿子 | 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 | 【主要用于表单元素】 | 选择器匹配每个启用的的元素 |
:disabled | 【主要用于表单元素】 | 选择器匹配每个禁用的的元素 |
:checked | 【主要用于表单元素】 | 选择器匹配每个选中的输入元素 |
:out-of-range | 【主要用于表单校验】 | 选中【超出】设置范围的元素(input) |
:in-range | 【主要用于表单校验】 | 选中输入值【未超出】指定范围的元素 |
:read-write | 【主要用于表单元素】 | 选中【可写】状态的input |
:read-only | 【主要用于表单元素】 | 选中【只读】状态的input |
:optional | 【主要用于表单校验】 | 选中【非必填】状态的input |
:required | 【主要用于表单校验】 | 选中【必填】状态的input |
:valid | 【主要用于表单校验】 | 选中 输入email【合法】的input |
:invalid | 【主要用于表单校验】 | 选中 输入email【不合法】的input |
状态 | 示例 | 说明 |
: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 的值来决定的,其中它们的值计算规则如下:
这里举个例子:
#nav-global > ul > li > a.nav-link
套用上面的算法,依次求出 A B C D 的值:
上面算出的A 、 B、C、D 可以简记作:(0, 1, 1, 3)
知道了优先级是如何计算之后,就来看看比较规则:
经过上面的优先级计算规则,我们知道内联样式的优先级最高,如果外部样式需要覆盖内联样式,就需要使用!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:箭头可以变成需要的形状
继承中比较特殊的几点:
给大家分享我收集整理的各种学习资料,前端小白交学习流程,入门教程等回答-下面是学习资料参考。
前端学习交流、自学、学习资料等推荐 - 知乎
…
}
Selector:当定义一条样式规则时,必须指定受这条样式规则作用的网页元素,在一条规则中定义的网页元素就是selector(选择器),也就是选择该样式规则作用于的网页元素。
伪元素选择器是指对同一个HTML元素在不同的状态下的一种定义方式
目前只有a和p两处HTML元素可以使用
使用时的语法
标签:伪元素 标签[.类名]:伪元素
所有嵌套在某个HTML标签中的HTML标签都会继承外层标签设置的样式规则。
样式规则的
优先级
关联>ID选择器>CLASS选择器>HTML标签选择器
*请认真填写需求信息,我们会在24小时内与您取得联系。