DIV与CSS基础详解
1. DIV和CSS样式
详细解释:
- DIV 是HTML中的一个块级元素,用于将文档分割为独立的区块。它本身没有特定的语义,主要作为容器使用,通过CSS来定义其外观和布局。
- CSS(层叠样式表)是一种描述HTML或XML文档外观和格式的样式表语言。CSS的核心理念是将内容与表现分离,使网页结构更清晰、更易于维护。
为什么使用DIV+CSS:
- 与传统的表格布局相比,DIV+CSS布局更加灵活、代码更简洁
- 提高网页加载速度(减少冗余HTML标签)
- 更好的SEO优化(搜索引擎更容易抓取内容)
- 便于后期维护和修改
示例:
1 |
|
2. 样式表类型
2.1 嵌入样式表
详细解释:
- 在HTML文档的
<head>部分使用<style>标签定义CSS样式 - 适用于单页应用或小型网站
- 优点:样式与内容在同一文件,无需额外HTTP请求
- 缺点:无法跨页面共享样式,不利于大型项目维护
示例:
1 |
|
2.2 外部样式表
详细解释:
- 将CSS代码保存在单独的
.css文件中,通过<link>标签或@import语句引入 - 优点:样式与内容分离,便于维护;样式可跨页面共享;浏览器可缓存CSS文件
- 最佳实践:将CSS文件放在
<head>中,避免”无样式内容闪烁”(FOUC)
示例:
- 创建
styles.css文件:
1 | /* 全局重置 */ |
- 在HTML中引入:
1 |
|
2.3 内联样式
详细解释:
- 直接在HTML元素的
style属性中定义CSS样式 - 优先级最高,但最不推荐使用
- 仅适用于特殊场景(如动态生成的样式、邮件HTML等)
- 严重违反内容与表现分离原则
示例:
1 |
|
3. 注释
详细解释:
- CSS注释使用
/* 注释内容 */语法 - 注释可以跨多行
- 用于解释代码、临时禁用样式、团队协作等
- 不会被浏览器解析和渲染
示例:
1 | /* |
4. 样式选择器
4.1 元素选择器
详细解释:
- 选择所有指定类型的HTML元素
- 语法:
元素名 { 属性: 值; } - 适用于需要统一设置某类元素样式的场景
示例:
1 | /* 选择所有段落元素 */ |
4.2 ID选择器
详细解释:
- 选择具有特定id属性的元素
- 语法:
#id名 { 属性: 值; } - 优先级高于类选择器
- 每个id在页面中应唯一
示例:
1 | /* 选择id为"main-header"的元素 */ |
4.3 类选择器
详细解释:
- 选择具有特定class属性的元素
- 语法:
.类名 { 属性: 值; } - 可以应用于多个元素
- 优先级低于ID选择器,高于元素选择器
示例:
1 | /* 选择所有class为"btn"的元素 */ |
4.4 子选择器
详细解释:
- 选择作为特定父元素直接子元素的元素
- 语法:
父元素 > 子元素 { 属性: 值; } - 与后代选择器不同,仅选择直接子元素
示例:
1 | /* 选择div的直接子元素p(不包括嵌套的p) */ |
4.5 后代选择器
详细解释:
- 选择作为特定祖先元素后代的所有元素(无论嵌套多深)
- 语法:
祖先元素 后代元素 { 属性: 值; } - 与子选择器不同,会匹配所有层级的后代
示例:
1 | /* 选择div内所有p元素,无论嵌套多深 */ |
4.6 属性选择器
详细解释:
- 选择具有特定属性或属性值的元素
- 语法:
元素[属性]或元素[属性="值"] - 多种匹配方式:包含、开头、结尾等
示例:
1 | /* 选择所有具有title属性的a元素 */ |
4.7 通配符选择器
详细解释:
- 选择文档中的所有元素
- 语法:
* { 属性: 值; } - 通常用于全局重置样式
- 优先级最低
示例:
1 | /* 全局重置 */ |
4.8 群组选择器
详细解释:
- 将多个选择器组合在一起,应用相同的样式
- 语法:
选择器1, 选择器2, 选择器3 { 属性: 值; } - 减少代码重复
示例:
1 | /* 为所有标题设置相同字体 */ |
5. 背景
5.1 背景属性详解
background-color
详细解释:
- 设置元素的背景颜色
- 可以使用颜色名称、十六进制值、RGB值、RGBA值等
- 透明背景:
transparent或rgba(0,0,0,0)
示例:
1 | /* 使用颜色名称 */ |
background-position
详细解释:
- 设置背景图像的位置
- 可以使用关键字(如
top、center、bottom、left、right) - 也可以使用百分比或像素值
- 语法:
background-position: [水平位置] [垂直位置];
示例:
1 | /* 使用关键字 */ |
background-size
详细解释:
- 设置背景图像的尺寸
- 常用值:
auto:默认值,保持原始尺寸cover:等比缩放图像,使图像完全覆盖背景区域contain:等比缩放图像,使图像完整显示在背景区域- 具体尺寸:如
100px 200px,或50% 100%
示例:
1 | /* 保持原始尺寸 */ |
background-repeat
详细解释:
- 设置背景图像如何重复
- 常用值:
repeat:默认值,水平和垂直方向都重复repeat-x:仅水平方向重复repeat-y:仅垂直方向重复no-repeat:不重复space:均匀分布,不裁剪图像round:缩放图像以适应区域
示例:
1 | /* 默认:水平和垂直重复 */ |
background-origin
详细解释:
- 设置背景图像的定位区域
- 常用值:
border-box:背景从边框区域开始padding-box:背景从内边距区域开始(默认)content-box:背景从内容区域开始
示例:
1 | /* 背景从边框区域开始 */ |
background-clip
详细解释:
- 设置背景的绘制区域
- 常用值:
border-box:背景延伸至边框外沿(默认)padding-box:背景延伸至内边距外沿content-box:背景仅在内容区域显示
示例:
1 | /* 背景延伸至边框外沿(默认) */ |
background-attachment
详细解释:
- 设置背景图像是否固定或随内容滚动
- 常用值:
scroll:默认值,背景随内容滚动fixed:背景固定,不随内容滚动local:背景随元素内容滚动
示例:
1 | /* 背景随内容滚动(默认) */ |
background-image
详细解释:
- 设置元素的背景图像
- 可以使用URL指定图像路径
- 可以设置多个背景图像(逗号分隔)
- 可以使用渐变作为背景
示例:
1 | /* 单个背景图像 */ |
5.2 背景简写
详细解释:
- 使用
background属性可以一次性设置多个背景属性 - 顺序不严格,但建议按标准顺序书写
- 标准顺序:
background: [color] [image] [repeat] [attachment] [position]/[size];
示例:
1 | /* 基本简写 */ |
6. 边框
6.1 边框属性详解
border-color
详细解释:
- 设置边框的颜色
- 可以为四条边设置不同颜色
- 语法:
border-color: [上] [右] [下] [左];
示例:
1 | /* 所有边框相同颜色 */ |
border-width
详细解释:
- 设置边框的宽度
- 可以为四条边设置不同宽度
- 语法:
border-width: [上] [右] [下] [左]; - 常用单位:px、em、rem等
示例:
1 | /* 所有边框相同宽度 */ |
border-style
详细解释:
- 设置边框的样式
- 可以为四条边设置不同样式
- 语法:
border-style: [上] [右] [下] [左];
示例:
1 | /* 所有边框相同样式 */ |
单独边框属性
详细解释:
- 可以单独设置某条边的边框
- 包括:
border-top、border-right、border-bottom、border-left - 每个属性都可以设置宽度、样式和颜色
示例:
1 | /* 设置上边框 */ |
6.2 边框简写
详细解释:
- 使用
border属性可以一次性设置边框的宽度、样式和颜色 - 语法:
border: [宽度] [样式] [颜色]; - 可以针对特定边使用:
border-top、border-right等
示例:
1 | /* 所有边框相同 */ |
7. 文字属性
7.1 文字属性详解
color
详细解释:
- 设置文本颜色
- 可以使用颜色名称、十六进制值、RGB值、RGBA值等
示例:
1 | /* 颜色名称 */ |
font-size
详细解释:
- 设置文本的大小
- 常用单位:px、em、rem、%、pt等
- 相对单位(em、rem、%)会根据父元素或根元素的字体大小进行缩放
示例:
1 | /* 像素单位(固定大小) */ |
font-weight
详细解释:
- 设置文本的粗细
- 常用值:
normal(400)、bold(700)、bolder、lighter或100-900的数字值
示例:
1 | /* 关键字 */ |
font-family
详细解释:
- 设置文本的字体
- 指定多个字体作为备选,浏览器会使用第一个可用的字体
- 通常包括一个具体的字体和一个通用字体族
示例:
1 | /* 单个字体 */ |
font-variant
详细解释:
- 设置文本的变体
- 常用值:
normal、small-caps(小型大写字母)
示例:
1 | /* 正常文本 */ |
8. 文本属性
8.1 文本属性详解
text-align
详细解释:
- 设置文本的水平对齐方式
- 常用值:
left、right、center、justify(两端对齐)
示例:
1 | /* 左对齐(默认) */ |
line-height
详细解释:
- 设置行高(行与行之间的垂直间距)
- 可以使用无单位数值(相对于字体大小的倍数)、长度值或百分比
- 常用于垂直居中文本
示例:
1 | /* 无单位数值(推荐) */ |
text-indent
详细解释:
- 设置首行缩进
- 常用单位:px、em、rem、%等
示例:
1 | /* 像素单位 */ |
text-decoration
详细解释:
- 设置文本的装饰线
- 常用值:
none、underline、overline、line-through、blink - 可组合使用
示例:
1 | /* 无装饰线(默认) */ |
letter-spacing
详细解释:
- 设置字间距(字符之间的间距)
- 可以使用正值(增加间距)或负值(减少间距)
示例:
1 | /* 增加字间距 */ |
9. 列表
9.1 列表属性详解
list-style-type
详细解释:
- 设置列表项标记的类型
- 适用于有序列表(ol)和无序列表(ul)
示例:
1 | /* 无序列表 */ |
list-style-position
详细解释:
- 设置列表项标记的位置
- 常用值:
inside、outside(默认)
示例:
1 | /* 标记在文本内部 */ |
list-style-image
详细解释:
- 使用图像代替列表项标记
- 可以使用URL指定图像路径
示例:
1 | /* 使用自定义图像作为列表标记 */ |
list-style 简写
详细解释:
- 使用
list-style属性可以一次性设置列表的所有样式 - 顺序:
list-style: [type] [position] [image];
示例:
1 | /* 基本简写 */ |
10. 超链接
10.1 超链接状态详解
详细解释:
- 超链接有四种状态,可以通过伪类选择器进行样式设置
- 顺序建议:
a:link→a:visited→a:hover→a:active(LVHA顺序)
示例:
1 | /* 未访问的链接 */ |
11. 盒子模型
详细解释:
- CSS盒子模型是网页布局的基础
- 每个HTML元素都被视为一个矩形盒子
- 盒子由四个部分组成:
- 内容区域(content):显示实际内容的区域
- 内边距(padding):内容区域与边框之间的空间
- 边框(border):围绕内边距和内容的边框
- 外边距(margin):边框外的空间,用于与其他元素的间隔
可视化表示:
1 | +-------------------------------------------+ |
示例:
1 | .box { |
注意: 默认情况下,元素的总宽度 = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
12. margin与padding
12.1 padding(内边距)
详细解释:
- 内边距是内容区域与边框之间的空间
- 增加内边距会扩大元素的总尺寸
- 语法:
padding: [上] [右] [下] [左]; - 可以单独设置:
padding-top、padding-right、padding-bottom、padding-left
示例:
1 | /* 所有方向相同内边距 */ |
12.2 margin(外边距)
详细解释:
- 外边距是边框外的空间,用于与其他元素的间隔
- 外边距不会影响元素自身尺寸,但会影响与其他元素的距离
- 语法:
margin: [上] [右] [下] [左]; - 可以单独设置:
margin-top、margin-right、margin-bottom、margin-left - 外边距合并:当两个垂直方向的外边距相邻时,它们会合并为一个外边距,取两者中的较大值
示例:
1 | /* 所有方向相同外边距 */ |
13. float(浮动)
详细解释:
- 浮动使元素脱离标准文档流,向左或向右移动
- 其他内容会环绕浮动元素
- 常用于创建多列布局
- 浮动元素会影响其父元素的高度(可能导致父元素高度塌陷)
示例:
1 | /* 向左浮动 */ |
浮动布局示例:
1 | <div class="clearfix"> |
14. 块级元素、行内元素
14.1 块级元素
详细解释:
- 块级元素独占一行
- 默认宽度为父元素的100%
- 可以设置width、height、margin、padding
- 常见块级元素:
<div>,<p>,<h1>-<h6>,<ul>,<ol>,<li>,<table>,<form>,<header>,<footer>,<section>,<article>等
示例:
1 | <div style="background: #f0f0f0; margin: 5px; padding: 10px;">div - 块级元素</div> |
14.2 行内元素
详细解释:
- 行内元素不独占一行,与其他行内元素在同一行显示
- 宽度由内容决定
- 无法直接设置width、height
- 水平方向的margin和padding有效,垂直方向无效
- 常见行内元素:
<a>,<span>,<img>,<strong>,<em>,<b>,<i>,<u>,<br>,<input>,<label>等
示例:
1 | <span style="background: #ffcccc;">span - 行内元素</span> |
14.3 元素类型转换
详细解释:
- 使用
display属性可以转换元素类型 - 常用值:
block:块级元素inline:行内元素inline-block:行内块元素(像行内元素一样排列,但可以设置宽高)none:不显示元素
示例:
1 | /* 转换为块级元素 */ |
15. 溢出
详细解释:
overflow属性控制当内容溢出元素框时的行为- 常用值:
visible:默认值,内容溢出时正常显示hidden:内容溢出时被裁剪,不可见scroll:内容溢出时显示滚动条(无论是否溢出)auto:内容溢出时自动显示滚动条clip:裁剪内容,不提供滚动机制
示例:
1 | /* 默认:内容溢出时正常显示 */ |
16. 定位
16.1 定位类型详解
static(静态定位)
详细解释:
- 默认定位方式
- 元素在正常文档流中
- 忽略top、bottom、left、right和z-index属性
示例:
1 | .static { |
relative(相对定位)
详细解释:
- 相对于元素在正常文档流中的位置进行定位
- 不脱离文档流,其他元素仍按正常流布局
- 可以使用top、bottom、left、right调整位置
示例:
1 | .relative { |
absolute(绝对定位)
详细解释:
- 相对于最近的已定位祖先元素(position不是static)进行定位
- 脱离文档流,不占据空间
- 如果没有已定位祖先元素,则相对于初始包含块(通常是视口)
示例:
1 | .absolute { |
fixed(固定定位)
详细解释:
- 相对于浏览器窗口进行定位
- 脱离文档流,不占据空间
- 即使页面滚动,元素位置保持不变
示例:
1 | .fixed { |
sticky(粘性定位)
详细解释:
- 相对于最近的滚动祖先元素进行定位
- 在滚动到特定阈值前表现为相对定位,之后表现为固定定位
- 需要指定至少一个阈值(top、bottom、left或right)
示例:
1 | .sticky { |
16.2 z-index
详细解释:
- 设置元素的堆叠顺序
- 值越大,越靠近用户(显示在上层)
- 仅对定位元素(position不是static)有效
- 可以是正数、负数或auto
示例:
1 | .box1 { |
综合大例子
以下是一个包含所有知识点的综合性示例:
1 |
|
总结
这个综合示例展示了以下知识点:
- DIV和CSS基础:使用DIV作为容器,CSS控制样式
- 样式表类型:嵌入样式表(主要部分)和内联样式(仅用于演示)
- 注释:CSS注释用于解释代码
- 样式选择器:元素选择器、类选择器、ID选择器、后代选择器、伪类选择器等
- 背景:背景颜色、背景图像、背景渐变、背景重复等
- 边框:边框样式、宽度、颜色
- 文字属性:颜色、大小、粗细、字体
- 文本属性:对齐、行高、首行缩进、文本装饰
- 列表:列表样式、位置、自定义图像
- 超链接:四种状态的样式设置
- 盒子模型:内容、内边距、边框、外边距
- margin与padding:设置元素间距
- float:创建多列布局,以及清除浮动
- 块级元素与行内元素:不同元素类型的特性和转换
- 溢出:处理内容溢出的情况
- 定位:static、relative、absolute、fixed、sticky定位方式
- z-index:控制元素堆叠顺序
这个示例还包含了响应式设计、CSS动画、Flexbox和Grid布局等现代Web技术,展示了如何将这些基础知识点应用到实际项目中。