CSS
一、CSS是什么?
层叠样式表(英文全称:Cascading Style Sheets)
CSS 是一种描述 HTML 文档样式的语言。
CSS 能够对网页中元素位置的排版进行像素级精确控制,拥有对网页对象和模型样式编辑的能力。
二、选择器(十分重要)
1.简单选择器
标签选择器:
元素选择器根据元素名称来选择 HTML 元素。
id选择器:
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。
注意:id名称不能以数字开头
class选择器:
class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。
class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点”.“号显示:
2.组合选择器
后代选择器(以空格 分隔):
后代选择器用于选取某元素的后代元素。
子代选择器(以大于号>分隔):
与后代选择器相比,子代元素选择器只能选择作为某元素子元素的元素。
相邻兄弟选择器(以加号+分隔):
相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素。“相邻”的意思是“紧随其后”。
通用兄弟选择器(以破折号~分隔):
通用兄弟选择器选取所有指定元素同级的所有元素。
4.伪类选择器
- 锚伪类
a:link {color:red;}:未访问的链接
a:visited {color:green;}:已访问的链接
a:hover {color:black;}:鼠标划过链接
a:active{color:white;} : 已选中的链接
-
简单的工具提示悬停
-
CSS - :first-child 伪类
可以使用 :first-child 伪类来选择父元素的第一个子元素。
4.伪元素选择器
-
::first-line 伪元素:用于向文本的首行添加特殊样式。
注意:::first-line 伪元素只能应用于块级元素。 -
::first-letter 伪元素:用于向文本的首字母添加特殊样式。
注意:::first-letter 伪元素只适用于块级元素。 -
CSS - ::before 伪元素:可用于在元素内容之前插入一些内容。
-
CSS - ::after 伪元素:可用于在元素内容之后插入一些内容。
-
CSS - ::selection 伪元素:匹配用户选择的元素部分。
4.属性选择器
使用中括号[]来选择要选择的内容。
-
CSS [attribute] 选择器
选择器用于选取带有指定属性的元素。 -
CSS [attribute=“value”] 选择器
选择器用于选取带有指定属性和值的元素。 -
CSS [attribute~=“value”] 选择器
选择器选取属性值包含指定词的元素。 -
CSS [attribute|=“value”] 选择器
选择器用于选取指定属性以指定值开头的元素。 -
CSS [attribute^=“value”] 选择器
选择器用于选取指定属性以指定值开头的元素。 -
CSS [attribute$=“value”] 选择器
选择器用于选取指定属性以指定值结尾的元素。 -
CSS [attribute*=“value”] 选择器
选择器选取属性值包含指定词的元素。
三、路径问题
-
外部 CSS (推荐使用)
1.通过使用外部样式表,您只需修改一个文件即可改变整个网站的外观!
2.每张 HTML 页面必须在 head 部分的
<link>
元素内包含对外部样式表文件的引用。
例如:<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="CSS位置"> </head> <body> <h1>你好啊</h1> <p>你好吗</p> </body> </html>
-
内部 CSS
1.如果一张 HTML 页面拥有唯一的样式,那么可以使用内部样式表。
2.内部样式是在 head 部分的
<style>
元素中进行定义。例如:
<!DOCTYPE html> <html> <head> <style> h1 { color: red; } p { color: black; } </style> </head> <body> <h1>你好啊</h1> <p>你好吗</p> </body> </html>
-
行内 CSS(不推荐使用)
1.行内样式(也称内联样式)可用于为单个元素应用唯一的样式。
2.如需使用行内样式,请将 style 属性添加到相关元素。style 属性可包含任何 CSS 属性。
例如:<!DOCTYPE html> <html> <body> <h1 style="color:red;text-align:center;">你好啊</h1> <p style="color:blue;">你好吗</p> </body> </html>
多重样式优先级
行内样式优先级最高,外部样式和内部样式谁离body更近,谁的优先级更高!
四、CSS背景(Background)
CSS 背景属性用于定义HTML元素的背景
- background-color :定义了元素的背景颜色。
- background-image :描述了元素的背景图像。
- background-repeat:会在页面的水平或者垂直方向平铺。
repeat-x:图像仅在水平方向重复。
repeat-y:图像仅在垂直方向重复。
no-repeat:只显示一次背景图像。 - background-attachment :指定背景图像是应该滚动还是固定的(不会随页面的其余部分一起滚动)。
background-attachment: fixed:固定背景图像。
background-attachment: scroll:背景图像应随页面的其余部分一起滚动。 - background-position:指定背景图像的位置。
CSS 背景简写:
body {
background: #000000 url("图片") no-repeat right top;
}
在使用简写属性时,属性值的顺序为:
- background-color
- background-image
- background-repeat
- background-attachment
- background-position
五、边框(border)
- 边框样式:
值得注意的是:在定义各个边框的样式的时候:
当设置四个属性的时候,顺序为:上,右,下,左
当设置三个属性的时候,顺序为:上,(左右),下
当设置二个属性的时候,顺序为:(上下),(左右)
-
边框宽度:border-width 属性为边框指定宽度。
-
边框颜色:border-color属性用于设置边框的颜色。
注意: border-color单独使用是不起作用的,必须得先使用border-style来设置边框样式。 -
圆角边框:border-radius 属性用于向元素添加圆角边框。
六、内外边距
- 外边距:margin 属性用于在任何定义的边框之外,为元素周围创建空间。(和边框一样,从上开始顺时针)
margin:25px 20px 25px 20px
- 内边距:padding 属性用于在任何定义的边界内的元素内容周围生成空间。(同上)
padding:25px 20px 25px 20px
七、盒子模型(十分重要)
元素总宽度 = 宽度 + 左内边距 + 右内边距 + 左边框 + 右边框 + 左外边距 + 右外边距
元素总高度 = 高度 + 上内边距 +下内边距 + 上边框 + 下边框 + 上外边距 + 下外边距
1.CSS设置宽度和高度:
- height 和 width 属性用于设置元素的高度和宽度。
- height 和 width属性不包括内边距、边框或外边距。它设置的是元素内边距、边框以及外边距内的区域的高度或宽度。
重要:当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。
2.CSS 高度和宽度值:
- auto - 默认。浏览器计算高度和宽度。
- % - 以包含块的百分比定义高度/宽度。
3.max-width,max-height:最大高度和最大宽度的作用:可以改善浏览器对小窗口的处理。为了使网站在小型设备上可用,这一点很重要。
八、文本
属性 | 描述 |
---|---|
color | 设置文本颜色 |
direction | 设置文本方向 |
letter-spacing | 设置字符间距 |
line-height | 设置行高 |
text-align | 对齐元素中的文本 |
text-decoration | 向文本添加修饰(主要是去下划线) |
text-indent | 缩进元素中文本的首行 |
text-shadow | 设置文本阴影 |
text-transform | 控制元素中的字母 |
unicode-bidi | 设置或返回文本是否被重写 |
vertical-align | 设置元素的垂直对齐 |
white-space | 设置元素中空白的处理方式 |
word-spacing | 设置字间距 |
九、字体
-
字体样式(font-style)
-
字体系列(font-family)
-
字体大小(font-size)
-
字体粗细(font-weight)
十、链接
链接样式:
- a:link - 正常,未访问过的链接
- a:visited - 用户已访问过的链接
- a:hover - 当用户鼠标放在链接上时
- a:active - 链接被点击的那一刻
十一、Display/Visibility 属性
首先:要明白什么是块元素,什么是行内元素。
块元素是一个元素,占用了全部宽度,在前后都是换行符。例如:p标签,div标签。
内联元素只需要必要的宽度,不强制换行。例如:a标签,sapn标签。
-
display:display 属性规定元素应该生成的框的类型。
none:此元素不会被显示。
block:此元素将显示为块级元素。
inline:默认值。此元素会被显示为内联元素。
inline-block:行内块元素。(特点:1.可以改变宽高(块级元素特点),2.不独立成行(行内元素特点)) -
visibility:visibility 属性规定元素是否可见。
visible:默认值。元素是可见的。
hidden:元素是不可见的。
值得注意的是:
visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
十二、定位
- position 属性 :规定应用于元素的定位方法的类型。有五个不同位置的值:
position: static :默认值。定位方式为 static(静态)。
- 静态定位的元素不受 top、bottom、left 和 right 属性的影响。
- position: static的元素不会以任何特殊方式定位,它始终根据页面的正常流进行定位。
position: relative:相对定位。
- 设置相对定位的元素的 top、right、bottom 和 left 属性将导致其偏离其正常位置进行调整。移动相对定位元素,但它原本所占的空间不会改变。
position: fixed:固定定位。
- 相对于视口定位的,这意味着即使滚动页面,它也始终位于同一位置。 top、right、bottom 和 left 属性用于定位此元素。
- 元素的位置相对于浏览器窗口是固定位置,即使窗口是滚动的它也不会移动。
position: absolute:绝对定位。
- 相对于最近的定位祖先元素进行定位。然而,如果绝对定位的元素没有祖先,它将使用文档主体(body),并随页面滚动一起移动。
position: sticky:粘性定位。
- 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。
- 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。
- 重叠元素:具有较高堆叠顺序的元素始终位于具有较低堆叠顺序的元素之前。
z-index 属性指定元素的堆栈顺序(哪个元素应放置在其他元素的前面或后面)。
注意:如果两个定位的元素重叠而未指定 z-index,则位于 HTML 代码中最后的元素将显示在顶部。
十三、溢出
CSS Overflow:定在元素的内容太大而无法放入指定区域时是剪裁内容还是添加滚动条。
- visible:默认。溢出没有被剪裁。内容在元素框外渲染。
- hidden:溢出被剪裁,其余内容将不可见。
- scroll:溢出被剪裁,同时添加滚动条以查看其余内容。
- auto:与 scroll 类似,但仅在必要时添加滚动条。
overflow-x 和 overflow-y:规定是仅水平还是垂直地(或同时)更改内容的溢出
十四、浮动和清除浮动
folat属性:用于定位和格式化内容,例如让图像向左浮动到容器中的文本那里。
- left:元素浮动到其容器的左侧。
- right:元素浮动在其容器的右侧。
- none:默认值。元素不会浮动(将显示在文本中刚出现的位置)。
- inherit:元素继承其父级的 float 值。
clear 属性:
- none:默认值。允许两侧都有浮动元素。
- left:左侧不允许浮动元素。
- right:右侧不允许浮动元素。
- both:左侧或右侧均不允许浮动元素。
- inherit:元素继承其父级的 clear 值。
使用 clear 属性的最常见用法是在元素上使用了 float 属性之后。
十五、对齐
居中对齐元素:要使块元素(例如 <div>
)水平居中,请使用 margin: auto;
居中对齐文本:如果仅需在元素内居中文本,请使用 text-align: center;
居中对齐图像:如需居中图像,请将左右外边距设置为 auto,并将其设置为块元素。
左和右对齐 - 使用 position:position: absolute;
左和右对齐 - 使用 float:float:left; float:right;
注意:如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 “clearfix(清除浮动)” 来解决该问题。
垂直对齐 - 使用 padding:
垂直居中 - 使用 line-height
垂直对齐 - 使用 position 和 transform
垂直对齐 - 使用 Flexbox
十六、透明度
opacity 属性指定元素的不透明度/透明度。
opacity 属性的取值范围为 0.0-1.0。值越低,越透明:
十七、导航栏
什么是导航栏:导航栏基本上就是链接列表,因此使用 <ul>
和 <li>
元素会很有意义。
list-style-type: none; 删除项目符号。导航条不需要列表项标记。
设置 margin: 0; 和 padding: 0; 删除浏览器的默认设置。
-
水平导航栏:将其变为行内元素,使其在一行。
-
垂直导航栏:将其变为行块元素,使其在一列。