CSS基础语法
CSS(cascading style sheet,层叠式样式表)是用来给HTML标签添加样式的语言。CSS3是CSS的最新版本。
一、使用方式
1. 内联样式(Inline Style):将样式规则直接写在 HTML 标签的 style 属性中。这种方式虽然使用方便,但是不易维护,也不利于样式的复用,因此通常不建议使用。
例如:
<p style="color: red; font-size: 16px;">这是一段红色的文本。</p>
2. 内部样式表(Internal Style Sheet):将样式规则写在 HTML 文档头部的 style 标签中,可以用于整个页面或单个文档。
例如:
<html>
<head>
<style>
p {
color: red;
font-size: 16px;
}
</style>
</head>
<body>
<p>这是一段红色的文本。</p>
</body>
</html>
3. 外部样式表(External Style Sheet):将样式规则写在一个单独的 CSS 文件中,然后在 HTML 中使用 link
标签将其引入。
例如:
在一个名为 styles.css
的文件中:
p {
color: red;
font-size: 16px;
}
在 HTML 中引入样式表:
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<p>这是一段红色的文本。</p>
</body>
</html>
使用外部样式表的方式是最常见的,它可以将页面的样式与内容分离开来,使得页面更易于维护和修改。
4. 导入式:在CSS样式表中引入外部CSS样式表的方法。使用CSS import导入式,可以将一个外部的CSS文件嵌入到另一个CSS文件中。
要使用CSS import导入式,请按照以下步骤操作:
在CSS样式表中使用@import关键字,如下所示:
@import url("style.css");
在@import语句中指定外部CSS文件的URL,如上例中的
style.css
文件。
注意事项:
- @import语句必须放在CSS样式表的开头。
- 不建议在HTML文档中使用@import语句,因为它可能会导致页面加载速度变慢。
- 如果使用多个@import语句,它们之间的顺序很重要,因为它们会按照顺序依次加载。
二、选择器
CSS选择器用于选取HTML文档中的元素,并为其应用样式。CSS选择器可以根据元素的标签名、class、id、属性等多种方式进行选择。
标签选择器(Tag Selector):
p { /* 样式 */ }
根据HTML元素的标签名称来选择元素。例如,
p
选择所有段落元素。类选择器(Class Selector):
.my-class { /* 样式 */ }
根据HTML元素的类名来选择元素。类选择器以.为前缀,例如,.my-class选择所有具有my-class类名的元素。
ID选择器(ID Selector):
#my-id { /* 样式 */ }
根据HTML元素的ID属性来选择元素。ID选择器以#为前缀,例如,#my-id选择具有my-id ID属性的元素。
属性选择器(Attribute Selector):
input[type="text"] { /* 样式 */ }
根据HTML元素的属性值来选择元素。属性选择器使用方括号[]来选择具有指定属性值的元素。
后代选择器(Descendant Selector):
div p { /* 样式 */ }
选择元素的后代元素。后代选择器使用空格分隔两个选择器,例如,
div p
选择所有div
元素内部的所有段落元素。子元素选择器(Child Selector):
ul > li { /* 样式 */ }
选择元素的直接子元素。子元素选择器使用大于号>分隔两个选择器,例如,
ul
>li
选择所有直接作为ul
元素子元素的li
元素。相邻兄弟选择器(Adjacent Sibling Selector):
h1 + p { /* 样式 */ }
选择元素后面的相邻兄弟元素。相邻兄弟选择器使用加号
+
分隔两个选择器,例如,h1 + p
选择紧跟在h1
元素后面的第一个p元素。通用选择器(Universal Selector):
'*' { /* 样式 */ }
选择所有元素。通用选择器使用星号
*
表示,例如,*
选择文档中的所有元素。伪类选择器(Pseudo-class Selector):
a:hover { /* 样式 */ }
根据元素的状态或位置来选择元素。伪类选择器以冒号
:
为前缀,例如,a:hover
选择所有鼠标悬停在a
元素上的状态。
伪类:用于为元素在不同状态下设置样式。伪类可以根据用户与元素的交互行为、元素的位置和其他条件来选择元素,以实现更丰富的样式效果。
常见的伪类包括:- :hover:鼠标悬停在元素上时应用的样式。
- :active:鼠标点击元素时应用的样式。
- :focus:元素获得焦点时应用的样式。
- :visited:已访问过的链接应用的样式。
- :first-child:选择作为其父元素第一个子元素的元素。
- :last-child:选择作为其父元素最后一个子元素的元素。
- :nth-child(n):选择作为其父元素的第n个子元素的元素。
伪元素选择器(Pseudo-Element Selector):
.my-class::before { content: "前缀 "; font-weight: bold; color: blue; }
伪元素:是指在文档中不存在的虚拟元素,可以用来为HTML元素添加特殊的样式和效果。伪元素是由双冒号
::
或单冒号:
标识的,与伪类(Pseudo-Class)区分开来。
常见的伪元素包括:- ::before:在元素内容之前添加内容。
- ::after:在元素内容之后添加内容。
- ::first-letter:选中元素的第一个字母。
- ::first-line:选中元素的第一行。
- ::selection:选中元素中被用户选中的部分。
三、选择器的权重
选择器权重是用来决定当多个CSS规则应用于同一个元素时,哪个规则将具有优先权的值。选择器权重是根据选择器的组合方式计算的,通常表示为四个数字,分别对应于行内样式、ID选择器、类选择器和元素选择器的数量。
以下是选择器权重的具体计算方法:
- 行内样式(Inline styles):1000
- ID选择器(ID selectors):100
- 类选择器、属性选择器和伪类选择器(Class selectors, attribute selectors, and pseudo-class selectors):10
- 元素选择器和伪元素选择器(Element selectors and pseudo-element selectors):1
因此,选择器权重越高,就越具有优先权。当多个CSS规则应用于同一个元素时,CSS将按照选择器权重从高到低的顺序应用这些规则,具有相同权重的规则则按照后者覆盖前者的原则进行。
例如,以下CSS规则应用于同一个元素:
<style>
#my-element {
color: red;
}
.my-class {
color: blue;
}
p {
color: green;
}
</style>
<p id="my-element" class="my-class">Hello World!</p>
由于选择器权重的计算,此时元素的文本颜色将为红色,因为ID选择器的权重是100,而类选择器的权重是10。虽然元素选择器也匹配了该元素,但其权重只有1,因此其样式被ID选择器和类选择器的样式所覆盖。
四、CSS继承性
- 文本相关的属性普遍具有继承性,只需要给祖先标签设置,即可在后代所有标签中生效
- 只有特定的CSS属性才具有继承性。例如,字体、颜色、行高等属性可以被继承,而背景图像、边框等属性则不能被继承。
- 继承性遵循“就近原则”。如果一个元素的某个属性值在多个祖先元素中都有定义,那么该元素将继承距离最近的祖先元素中的属性值。
五、常用基础样式(文本段落)
字体样式(font-style):可以设置为normal(默认)、italic(斜体)。
p { font-style: italic; }
字体粗细(font-weight):可以设置为normal(默认400)、bold(粗体700)、lighter(细体)和100-900等值。
h1 { font-weight: bold; }
字体大小(font-size):可以设置为像素、em或百分比等单位。
p { font-size: 16px; }
字体系列(font-family):可以设置为一系列字体,以备选字体为例。
body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
在网页中还可使用自定义字体,具体方法如下:
/* 1、使用@font-face规则将字体映入网页 */ @font-face { font-family: 'CustomFont'; src: url('path/custom-font.ttf').format('truetype') } /* 2、使用 */ body { font-family: 'CustomFont', sans-serif; }
文本颜色(color):可以设置为颜色名称、十六进制代码或RGB值。
p { color: #333; }
文本对齐方式(text-align):可以设置为left(左对齐)、right(右对齐)、center(居中对齐)和justify(两端对齐)等值。
h1 { text-align: center; }
行高(line-height):可以设置为数字或百分比,用于调整行与行之间的间距。
p { line-height: 1.5; }
文字间距(letter-spacing):设置文字的间距
p { letter-spacingt: 10px; }
文本装饰(text-decoration):可以设置为none(默认)、underline(下划线)、line-through(中划线)、和overline(上划线)等值。
a { text-decoration: line-through; }
首行缩进(text-indent):可以设置为像素或em等单位,用于控制第一行的缩进。
p { text-indent: 2em; }