02CSS预备知识

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

🎨 CSS

CSS(层叠样式表)用于控制网页的样式与布局,实现内容与表现分离。


一、HTML 与 CSS 的关系

  • HTML 负责网页的结构(骨架)
  • CSS 负责网页的表现(外观)
  • 原则:结构与样式分离,便于维护和复用

二、CSS 语法基础

1. 基本结构

css 复制代码
选择器 {
    属性: 值;
    属性: 值;
}
  • 每条声明以分号 ; 结束
  • 属性和值之间用冒号 :
  • 注释:/* 注释内容 */

2. CSS 的三种使用方式

方式 写法 适用场景 缺点
行内式 <div style="color:red;"> 单个元素临时调试 耦合度高,难维护
嵌入式 <style> 标签内写CSS 单个页面独有样式 无法跨页面复用
外联式 <link rel="stylesheet" href="style.css"> 多页面共用样式 需额外HTTP请求(可缓存)

实际开发推荐使用外联式


三、CSS 选择器(核心)

1. 基本选择器

选择器 格式 示例 说明
通用选择器 * * { margin:0; } 匹配所有元素
元素选择器 标签名 div { } 匹配指定标签
类选择器 .类名 .box { } 匹配 class="box" 的元素
ID选择器 #id名 #header { } 匹配 id="header"(唯一)
分组选择器 A, B h1, h2 { } 同时选中多个选择器

2. 组合选择器(层次关系)

选择器 符号 示例 说明
后代选择器 空格 ul li { } 所有后代(不限层级)
子选择器 > ul > li { } 仅直接子元素
相邻兄弟选择器 + h1 + p { } 紧邻的下一个兄弟
通用兄弟选择器 ~ h1 ~ p { } 之后的所有兄弟

3. 伪类与伪元素(进阶)

css 复制代码
/* 伪类:元素状态 */
a:hover { color: red; }      /* 鼠标悬停 */
input:focus { border: blue; } /* 获得焦点 */
li:first-child { }           /* 第一个子元素 */
li:nth-child(2) { }          /* 第二个子元素 */

/* 伪元素:插入虚拟内容 */
p::first-line { }            /* 首行 */
p::before { content: "★"; }  /* 内容前插入 */
p::after { content: "★"; }   /* 内容后插入 */

四、常用 CSS 属性详解

1. 背景(background)

属性 说明 示例
background-color 背景色 #fffrgb(0,0,0)
background-image 背景图 url(photo.jpg)
background-repeat 平铺方式 no-repeatrepeat-xrepeat-y
background-position 位置 center10px 20px
background-size 尺寸(CSS3) covercontain100px
简写 background: color image repeat position/size background: #eee url(bg.png) no-repeat center/cover;

2. 文本(text)

属性 说明
color 文字颜色
text-align 水平对齐:leftcenterrightjustify
text-decoration 装饰:underlineoverlineline-throughnone
text-indent 首行缩进(常用 2em
line-height 行高(可实现垂直居中)
letter-spacing 字间距
word-spacing 单词间距

3. 字体(font)

属性 说明 示例
font-family 字体族(回退机制) "微软雅黑", Arial, sans-serif
font-size 字体大小 16px1.2rem80%
font-weight 粗细 normal(400)、bold(700)、100~900
font-style 样式 normalitalic
简写 font: style weight size family font: italic bold 16px/1.5 "宋体";

4. 列表(list)

css 复制代码
ul {
    list-style-type: none;      /* 去掉项目符号 */
    list-style-image: url(arrow.png); /* 自定义图标 */
}
/* 常用值:disc, circle, square, decimal, lower-roman 等 */

5. 盒子模型(Box Model)------ 重中之重

  • 内容区(content)
  • 内边距(padding):内容与边框的距离
  • 边框(border)
  • 外边距(margin):元素之间的距离
相关属性
css 复制代码
div {
    width: 200px;
    height: 100px;
    padding: 10px 20px;      /* 上右下左:10px 20px 10px 20px */
    border: 1px solid #000;
    margin: 0 auto;          /* 上下0,左右自动 → 水平居中 */
}
  • 单独设置:padding-topmargin-left
  • 注意 :默认情况下,width/height 只作用于内容区,加上 paddingborder 会撑大元素。
    ✅ 使用 box-sizing: border-box; 让宽高包含 padding 和 border(强烈推荐)
css 复制代码
* {
    box-sizing: border-box;
}

6. 显示类型(display)

效果
block 块级元素(独占一行,可设宽高)
inline 行内元素(不换行,宽高由内容决定)
inline-block 行内块(不换行但可设宽高)
none 隐藏元素(不占位)
flex 弹性盒布局(CSS3,推荐)

五、定位(Position)与浮动(Float)

1. 定位(position)

说明 参考系
static 默认值,普通流
relative 相对定位 元素原本位置
absolute 绝对定位 最近的非 static 父元素
fixed 固定定位 浏览器视口
sticky 粘性定位(CSS3) 滚动到阈值时固定
css 复制代码
.relative {
    position: relative;
    top: 20px;   /* 相对原位置向下移动20px */
}
.absolute {
    position: absolute;
    left: 0;
    top: 0;
}
.fixed {
    position: fixed;
    bottom: 20px;
    right: 20px;
}

2. 浮动(float)

  • float: left / right → 元素脱离文档流,向左或向右排列。
  • 常用于实现多列布局(现逐渐被 Flex/Grid 替代)。
  • 清除浮动:防止父元素高度塌陷。
css 复制代码
.clearfix::after {
    content: "";
    display: block;
    clear: both;
}

3. 弹性盒布局(Flex)------ 现代主流

css 复制代码
.container {
    display: flex;
    justify-content: center;  /* 主轴居中 */
    align-items: center;      /* 交叉轴居中 */
    flex-wrap: wrap;          /* 换行 */
}
.item {
    flex: 1;                  /* 等分剩余空间 */
}

建议放弃浮动布局,改用 Flex 或 Grid。


六、进阶:CSS3 新特性(补充)

特性 示例
圆角 border-radius: 10px;(可做圆形)
阴影 box-shadow: 5px 5px 10px rgba(0,0,0,0.3);
渐变 background: linear-gradient(red, blue);
过渡 transition: all 0.3s ease;
动画 @keyframes + animation
转换 transform: rotate(45deg) scale(1.2);
媒体查询 @media (max-width: 768px) { ... }(响应式)
网格布局 display: grid;

七、案例实战:百度注册页面(完整分析)

案例来源于 以上末尾,综合运用了:

  • 外联 CSS
  • 盒子模型(margin/padding/border)
  • 浮动(float)实现左右布局
  • 背景图片精灵(CSS Sprites)
  • 表单样式

布局结构简图

复制代码
body
├── #head (头部)
│   ├── #head_logo (logo + 背景图)
│   └── #head_login (登录按钮)
├── #nav (导航分隔线)
├── #register (注册区域)
│   ├── #reg_form (左侧表单,float:left)
│   │   ├── 用户名、手机号、密码等输入框
│   │   ├── 验证码 + 获取短信按钮
│   │   ├── 复选框 + 协议链接
│   │   └── 注册按钮
│   └── #reg_qrcode (右侧二维码,float:left)
└── #copyright (版权信息)

关键 CSS 技巧

  • 容器水平居中:margin: 0 auto; + 固定宽度
  • 背景精灵图:background: url(reg_icons.png) no-repeat 0 -48px; 减少请求
  • 输入框统一样式:height, border, text-indent
  • 按钮悬停效果::hover 改变背景色

八、常见问题与最佳实践

1. 选择器优先级(由高到低)

  • 行内样式(1000)
  • ID 选择器(100)
  • 类/伪类/属性选择器(10)
  • 元素选择器(1)
  • 通配符(0)

计算法则 :叠加数值,数值大的生效。

✨ 尽量使用低优先级选择器,避免 !important

2. 常用重置样式(Reset CSS)

css 复制代码
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

3. 移动端适配

  • 使用 viewport 元标签
  • 单位推荐 rem / vw / %
  • 媒体查询断点

4. 性能小提示

  • 合并多个背景图(精灵图)
  • 避免过深的嵌套选择器
  • 使用 will-change 提示即将变化的属性

csharp 复制代码
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
相关推荐
用户059540174461 小时前
用LangChain+Chroma实现RAG多轮对话记忆与自动化测试,把bug发现时间从2小时压缩到5分钟
前端·css
2401_868534781 小时前
常见的 vue面试题目
前端·javascript·vue.js
星栈1 小时前
Makepad UI 代码怎么读:别被语法吓住
前端·rust
前端市界1 小时前
实用指南:如何本地化部署 Sentry (Self-Hosted) 完整教程
前端
颂love1 小时前
TypeScript速学
前端·javascript·typescript
IT策士1 小时前
第 46 篇 k8s之CI/CD 集成:GitOps 理念与 ArgoCD
前端·容器·kubernetes
Dalydai1 小时前
AI 辅助大屏开发:怎么让 AI 干活,但别让它干砸
前端
凌涘1 小时前
深入理解 JavaScript 执行机制:从执行上下文到调用栈全解析
前端·javascript
utmhikari1 小时前
【AI原生】用Vibe Coding写产品前端原型的一些经验
前端·ai·产品经理·web·web开发·ai-native·qoder