CSS
一, CSS的三种定义方式
1.行内样式
每个HTML标签都有这个属性style
行内样式的语法格式:style=“key1:value1;key2:value2;…”
2.内嵌样式
<style>
h1 {
border: 5px solid red;
font-weight: 100;
color: green;
}
</style>
3.外部引用
外部引入一般都会写在最前面
<link rel="stylesheet" href="css/1-css.css"/>
二,CSS选择器
1.标签选择器
作用:把页面上所有这个标签都应用这个样式。一般写通用样式就会用标签选择器。
p {
color: red;
}
2.id选择器
id属性每个标签都有,这个标签理论是唯一的,样式一般都是唯一指向某个标签
一般用在这个标签有一个唯一的样式
#p5 {
color: blueviolet;
font-size: 2em;
}
3.类选择器(★★★))
class可以重复
.pp23 {
font-weight: 900;
}
4.父子选择器
- 空格隔开:只要是当前标签下面的标签就可以了
div下所有的p标签,包括子类的子类标签也可以选择
div p {
background-color: yellow;
}
- 小于号隔开:只能识别当前标签的子标签。
div的子p标签可以识别,子标签的子标签无法识别。
div > p {
background-color: yellow;
}
...
1 2 4变颜色
<p>div 中的段落 1。</p>
<p>div 中的段落 2。</p>
<section><p>div 中的段落 3。</p></section> 非子但属后代
<p>div 中的段落 4。</p>
- +隔开:相邻兄弟选择器。识别当前标签的兄弟标签。
兄弟(同级)元素必须具有相同的父元素,“相邻”的意思是“紧随其后”。
- ~隔开:相邻兄弟选择器。识别当前元素的后面所有的兄弟标签。
父子选择器 | 示例 | 示例描述 |
---|---|---|
★空格隔开: | div p | 选择
元素内的所有
元素 |
★>隔开: | div > p | 选择其父元素是
元素的所有
元素 |
+隔开: | div + p | 选择所有紧随
元素之后的
元素 |
~隔开: | p ~ ul | 选择前面有 元素的每个
|
5.伪类选择器(★★★)
某种特定的条件下触发样式
a:link {color:#000000;} /* 未访问链接*/
a:visited {color:#00FF00;} /* 已访问链接 */
a:hover {color:#FF00FF;} /* 鼠标移动到链接上 */
a:active {color:#0000FF;} /* 鼠标点击时 */
- :hover:这是最常见的伪类选择器之一,用于选择鼠标悬停在元素上时的状态。通过:hover选择器,我们可以在鼠标悬停在元素上时应用特定的样式,例如改变背景颜色或添加阴影效果。
- :active:这个伪类选择器用于选择元素被激活或点击时的状态。一般来说,当用户点击一个元素时,它会立即变为:active状态,直到用户释放鼠标按钮。通过:active选择器,我们可以为点击时的元素应用样式,例如改变文字颜色或添加动画效果。
- :focus:这个伪类选择器用于选择当前获得焦点的元素。当用户在一个可编辑的输入框或文本区域中输入时,该元素会获得焦点。通过:focus选择器,我们可以为获得焦点的元素应用样式,例如改变边框颜色或添加特殊效果。
- :first-child:这个伪类选择器用于选择父元素的第一个子元素。通过:first-child选择器,我们可以为第一个子元素应用样式,例如改变字体大小或添加特定的边距。
- :last-child:这个伪类选择器用于选择父元素的最后一个子元素。通过:last-child选择器,我们可以为最后一个子元素应用样式,例如改变背景颜色或添加特定的边框。
- :nth-child(n):这个伪类选择器用于选择父元素的第n个子元素。通过:nth-child(n)选择器,我们可以为特定位置的子元素应用样式,例如改变文字颜色或添加动画效果。其中n可以是一个具体的数字,也可以是关键字odd(奇数)或even(偶数)。
- :nth-of-type(n):这个伪类选择器用于选择父元素中特定类型的第n个子元素。通过:nth-of-type(n)选择器,我们可以为特定类型的子元素应用样式,例如改变字体大小或添加特定的边距。
- :not(selector):这个伪类选择器用于选择不符合特定选择器的元素。通过:not选择器,我们可以排除某些元素,然后为其他元素应用样式,例如隐藏特定的元素或改变它们的背景颜色。
6.属性选择器
选择这个标签所有具有该属性的元素。
选择器 | 例子 | 例子描述 |
---|---|---|
[attribute] | [target] | 选择带有 target 属性的所有元素。 |
★[attribute=value] | [target=_blank] | 选择带有 target=“_blank” 属性的所有元素。 |
★[attribute~=value] | [title~=flower] | 选择带有包含 “flower” 一词的 title 属性的所有元素。 |
[attribute|=value] | [lang|=en] | 选择带有以 “en” 开头的 lang 属性的所有元素。 |
[attribute^=value] | a[href^=“https”] | 选择其 href 属性值以 “https” 开头的每个 元素。 |
[attribute$=value] | a[href$=“.pdf”] | 选择其 href 属性值以 “.pdf” 结尾的每个 元素。 |
★[attribute*=value] | a[href*=“w3school”] | 选择其 href 属性值包含子串 “w3school” 的每个 元素。 |
7.通用选择器(★★★)
选择页面上的所有的 HTML 元素。
* {
text-align: center;
color: blue;
}
8.分组选择器(★★★)
同时改变多个标签样式
h1, h2, p {
text-align: center;
color: red;
}
三. CSS样式
1.背景(background)
1.1 背景颜色(background-color)
属性指定元素的背景色。
1.opacity 属性指定元素的透明度。取值范围为 0.0 - 1.0。值越低,越透明:
div {
background-color: green;
opacity: 0.3;
}
1.2 背景图像(background-image)
属性指定用作元素背景的图像。
1.3 背景重复(background-repeat)
repeat(重复)
默认情况下,
background-image
属性在水平和垂直方向上都重复图像。如果上面的图像仅在水平方向重复 (
background-repeat: repeat-x;
),则背景看起来会更好:
body {
background-image: url("gradient_bg.png");
background-repeat: repeat-x;
}
CSS background-repeat: no-repeat 还可指定只显示一次背景图像:
body {
background-image: url("tree.png");
background-repeat: no-repeat;
}
background-position
属性用于指定背景图像的位置。把背景图片放在右上角:
body {
background-image: url("tree.png");
background-repeat: no-repeat;
background-position: right top;
}
1.4 背景附着(background-attachment)
background-attachment
属性指定背景图像是应该滚动还是固定的(不会随页面的其余部分一起滚动)
body {
background-image: url("tree.png");
background-repeat: no-repeat;
background-position: right top;
background-attachment: fixed;
}
指定背景图像应随页面的其余部分一起滚动:
body {
background-image: url("tree.png");
background-repeat: no-repeat;
background-position: right top;
background-attachment: scroll;
}
2.边框(border)
border
属性允许您指定元素边框的样式、宽度和颜色。
2.1 边框类型(border-style)
border-style
属性指定要显示的边框类型。
允许以下值:
dotted
- 定义点线边框dashed
- 定义虚线边框solid
- 定义实线边框double
- 定义双边框groove
- 定义 3D 坡口边框。效果取决于 border-color 值ridge
- 定义 3D 脊线边框。效果取决于 border-color 值inset
- 定义 3D inset 边框。效果取决于 border-color 值outset
- 定义 3D outset 边框。效果取决于 border-color 值none
- 定义无边框hidden
- 定义隐藏边框
border-style
属性可以设置一到四个值(用于上边框、右边框、下边框和左边框)。
<style>
p.dotted {border-style: dotted;}
p.dashed {border-style: dashed;}
p.solid {border-style: solid;}
p.double {border-style: double;}
p.groove {border-style: groove;}
p.ridge {border-style: ridge;}
p.inset {border-style: inset;}
p.outset {border-style: outset;}
p.none {border-style: none;}
p.hidden {border-style: hidden;}
p.mix {border-style: dotted dashed solid double;}
</style>
......
<p class="dotted">点状边框。</p>
<p class="dashed">虚线边框。</p>
<p class="solid">实线边框。</p>
<p class="double">双线边框。</p>
<p class="groove">凹槽边框。</p>
<p class="ridge">垄状边框。</p>
<p class="inset">3D inset 边框。</p>
<p class="outset">3D outset 边框。</p>
<p class="none">无边框。</p>
<p class="hidden">隐藏边框。</p>
<p class="mix">混合边框。</p>
2.2 边框宽度(border-width)
border-width
属性指定四个边框的宽度。可以将宽度设置为特定大小(以 px、pt、cm、em 计),
也可以使用以下三个预定义值之一:thin、medium 或 thick:
<style>
p.dotted {border-style: dotted;}
p.dashed {border-style: dashed;}
p.solid {border-style: solid;}
p.double {border-style: double;}
p.groove {border-style: groove;}
p.ridge {border-style: ridge;}
p.inset {border-style: inset;}
p.outset {border-style: outset;}
p.none {border-style: none;}
p.hidden {border-style: hidden;}
p.mix {border-style: dotted dashed solid double;}
</style>
...
<p class="dotted">点状边框。</p>
<p class="dashed">虚线边框。</p>
<p class="solid">实线边框。</p>
<p class="double">双线边框。</p>
<p class="groove">凹槽边框。</p>
<p class="ridge">垄状边框。</p>
<p class="inset">3D inset 边框。</p>
<p class="outset">3D outset 边框。</p>
<p class="none">无边框。</p>
<p class="hidden">隐藏边框。</p>
<p class="mix">混合边框。</p>
2.3 边框各边
可用于指定每个边框(顶部、右侧、底部和左侧):
p {
border-top-style: dotted;
border-right-style: solid;
border-bottom-style: dotted;
border-left-style: solid;
}![image-20231225151446681](https://s2.loli.net/2023/12/25/cPFX4UxhkdY7Lfs.png)
2.4 简写边框属性
border
属性是以下各个边框属性的简写属性:
border-width
border-style
(必需)border-color
p {
border: 5px solid red;
}
左边框
p {
border-left: 6px solid red;
background-color: lightgrey;
}
3.外边距(margin)
margin
属性用于在任何定义的边框之外,为元素周围创建空间。内边距(padding)同理
简写属性 | 示例 | 工作原理 |
---|---|---|
如果 margin 属性有四个值 | margin: 25px 50px 75px 100px; | 上外边距是 25px 右外边距是 50px 下外边距是 75px 左外边距是 100px |
如果 margin 属性设置三个值 | margin: 25px 50px 75px; | 上外边距是 25px 右和左外边距是 50px 下外边距是 75px |
如果 margin 属性设置两个值 | margin: 25px 50px; | 上和下外边距是 25px 右和左外边距是 50px |
如果 margin 属性设置了一个值 | margin: 25px; | 所有四个外边距都是 25px |
auto 值 | margin: auto; | 使元素在其容器中水平居中。 然后,该元素将占据指定的宽度 并且剩余空间将在左右边界之间平均分配 |
外边距合并
当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
4.高度和宽度(height和
width)
auto
- 默认。浏览器计算高度和宽度。length
- 以 px、cm 等定义高度/宽度。%
- 以包含块的百分比定义高度/宽度。initial
- 将高度/宽度设置为默认值。inherit
- 从其父值继承高度/宽度。
height | 设置元素的高度。 |
---|---|
max-height | 设置元素的最大高度。 |
max-width | 设置元素的最大宽度。 |
min-height | 设置元素的最小高度。 |
min-width | 设置元素的最小宽度。 |
width | 设置元素的宽度。 |
-------------- |
| max-height | 设置元素的最大高度。 |
| max-width | 设置元素的最大宽度。 |
| min-height | 设置元素的最小高度。 |
| min-width | 设置元素的最小宽度。 |
| width | 设置元素的宽度。 |
css笔记 本文章参考于 W3C 学习