CSS深入浅出 青训营打卡day5
CSS是什么
CSS(Cascading Style Sheets,层叠样式表)是一种用于控制网页外观的标记语言。通过CSS,我们可以设置文本样式、布局、颜色、背景等,使网页更加美观和易用。
CSS语法
CSS 规则由两部分组成:选择器和声明块。
选择器 {
属性: 值;
}
常见的选择器
选择器用于指定要应用样式的HTML元素。常见的选择器类型包括:
-
元素选择器:选择特定类型的HTML元素。
p { color: blue; } -
类选择器:选择具有特定类名的元素。
.highlight { background-color: yellow; } -
ID选择器:选择具有特定ID的元素。
#header { font-size: 24px; } -
属性选择器:选择具有特定属性的元素。
input[type="text"] { border: 1px solid black; } -
组合选择器:可以组合多种选择器来选择更具体的元素。
div p { color: green; }
3. 伪类选择器
伪类选择器用于选择处于特定状态的元素。
-
:hover:鼠标悬停时的状态。css 浅色版本 a:hover { color: red; } -
:active:元素被激活时的状态(通常指点击时)。css 浅色版本 a:active { color: orange; } -
:focus:元素获得焦点时的状态(通常指输入框被选中时)。css 浅色版本 input:focus { outline: 2px solid blue; } -
:first-child:选择作为其父元素的第一个子元素的元素。css 浅色版本 li:first-child { font-weight: bold; } -
:last-child:选择作为其父元素的最后一个子元素的元素。css 浅色版本 li:last-child { color: gray; } -
:nth-child(n):选择作为其父元素的第n个子元素的元素。css 浅色版本 li:nth-child(2) { color: purple; }
4. 伪元素选择器
伪元素选择器用于选择元素的特定部分。
-
::before:在元素内容前插入内容。p::before { content: "注意:"; color: red; } -
::after:在元素内容后插入内容。p::after { content: "结束"; color: blue; } -
::first-letter:选择元素的第一个字母。p::first-letter { font-size: 2em; color: green; } -
::first-line:选择元素的第一行。p::first-line { font-weight: bold; }
布局
盒子模型
每个HTML元素都可以看作一个矩形盒子,包括内容区、内边距、边框和外边距。
- 内容区:实际内容占据的空间。
- 内边距(padding):内容与边框之间的距离。
- 边框(border):围绕内容和内边距的线条。
- 外边距(margin):元素与其他元素之间的距离。
flex box 和 grid 布局
Flexbox(弹性布局)
1. 基本概念
Flexbox 是一种一维布局模式,主要用于单行或多行的布局。它允许你轻松地对齐和分配空间给子元素,使得布局更加灵活和响应式。
2. 主要属性
-
容器属性:
-
display: flex;:将容器设置为弹性容器。 -
flex-direction:定义主轴的方向(默认值为row)。row:从左到右(默认值)row-reverse:从右到左column:从上到下column-reverse:从下到上
-
justify-content:定义主轴上的对齐方式。flex-start:默认值,项目位于容器的开始位置flex-end:项目位于容器的结束位置center:项目位于容器的中心space-between:项目之间等间距分布space-around:项目之间及与容器边缘等间距分布
-
align-items:定义交叉轴上的对齐方式。stretch:默认值,项目拉伸以填满容器flex-start:项目位于容器的开始位置flex-end:项目位于容器的结束位置center:项目位于容器的中心baseline:项目基线对齐
-
align-content:定义多根轴线的对齐方式(仅在多行时有效)。stretch:默认值,轴线拉伸以填满容器flex-start:轴线位于容器的开始位置flex-end:轴线位于容器的结束位置center:轴线位于容器的中心space-between:轴线之间等间距分布space-around:轴线之间及与容器边缘等间距分布
-
-
项目属性:
flex-grow:定义项目的放大比例(默认值为0)。flex-shrink:定义项目的缩小比例(默认值为1)。flex-basis:定义项目在主轴上的初始大小(默认值为auto)。flex:flex-grow、flex-shrink和flex-basis的简写形式。align-self:定义单个项目在交叉轴上的对齐方式,覆盖align-items的设置。
Grid(网格布局)
1. 基本概念
Grid 是一种二维布局模式,适用于复杂的布局设计。它允许你定义行和列,并精确控制子元素的位置。
2. 主要属性
-
容器属性:
display: grid;:将容器设置为网格容器。grid-template-columns:定义列的宽度。grid-template-rows:定义行的高度。grid-template-areas:定义网格区域的名称,方便布局。grid-gap或gap:定义行和列之间的间距。justify-items:定义所有项目的水平对齐方式。align-items:定义所有项目的垂直对齐方式。justify-content:定义整个网格在容器中的水平对齐方式。align-content:定义整个网格在容器中的垂直对齐方式。
-
项目属性:
grid-column:定义项目在列中的起始和结束位置。grid-row:定义项目在行中的起始和结束位置。grid-area:定义项目在网格中的区域,可以使用grid-template-areas中定义的名称。
position
position 属性用于指定元素的定位方式。常见的定位类型有:
static:默认值,元素按照正常文档流排列,不受top、bottom、left和right属性的影响。relative:相对定位,元素相对于其正常位置进行偏移。absolute:绝对定位,元素相对于最近的非static定位的祖先元素进行偏移。fixed:固定定位,元素相对于浏览器窗口进行偏移,不随滚动条滚动。sticky:粘性定位,结合了相对定位和固定定位的特点,当滚动到指定位置时变为固定定位