【CSS】样式与效果
个人主页:Guiat
归属专栏:HTML CSS JavaScript
文章目录
- 1. CSS盒模型
- 1.1 盒模型基础
- 1.2 盒模型类型
- 1.2.1 标准盒模型
- 1.2.2 IE盒模型
- 2. CSS选择器
- 2.1 基本选择器
- 2.2 组合选择器
- 2.3 伪类和伪元素
- 3. CSS布局技术
- 3.1 Flexbox布局
- 3.2 Grid布局
- 3.3 定位
- 4. CSS过渡与动画
- 4.1 过渡
- 4.2 动画
- 5. 响应式设计
- 5.1 媒体查询
- 5.2 视口单位
- 6. CSS变量
- 7. CSS预处理器
- 7.1 Sass/SCSS
- 7.2 Less
- 8. CSS优化技巧
- 8.1 选择器优化
- 8.2 简写属性
- 8.3 减少重绘和回流
正文
1. CSS盒模型
1.1 盒模型基础
盒模型是CSS布局的基础,由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
.box {
width: 300px;
height: 200px;
padding: 20px;
border: 1px solid black;
margin: 30px;
}
1.2 盒模型类型
1.2.1 标准盒模型
在标准盒模型中,元素的宽度和高度只包括内容区域。
.standard-box {
box-sizing: content-box; /* 默认值 */
width: 300px; /* 仅内容区域宽度 */
}
1.2.2 IE盒模型
在IE盒模型中,元素的宽度和高度包括内容、内边距和边框。
.ie-box {
box-sizing: border-box;
width: 300px; /* 包括内容区域、内边距和边框 */
}
2. CSS选择器
2.1 基本选择器
/* 元素选择器 */
p { color: blue; }
/* 类选择器 */
.highlight { background-color: yellow; }
/* ID选择器 */
#header { font-size: 24px; }
/* 通用选择器 */
* { margin: 0; padding: 0; }
2.2 组合选择器
/* 后代选择器 */
article p { line-height: 1.6; }
/* 子元素选择器 */
ul > li { list-style-type: square; }
/* 相邻兄弟选择器 */
h2 + p { font-weight: bold; }
/* 通用兄弟选择器 */
h2 ~ p { color: gray; }
2.3 伪类和伪元素
/* 伪类 */
a:hover { text-decoration: underline; }
li:first-child { font-weight: bold; }
/* 伪元素 */
p::first-line { font-variant: small-caps; }
p::before { content: "➤ "; }
3. CSS布局技术
3.1 Flexbox布局
Flexbox提供了一种更有效的方式来布局、对齐和分配容器中项目之间的空间。
.container {
display: flex;
justify-content: space-between;
align-items: center;
}
.item {
flex: 1;
margin: 5px;
}
3.2 Grid布局
Grid布局允许开发者创建二维网格布局系统。
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.grid-item {
grid-column: span 2;
}
3.3 定位
CSS定位允许你精确控制元素的位置。
.relative {
position: relative;
top: 20px;
left: 30px;
}
.absolute {
position: absolute;
top: 50px;
right: 10px;
}
.fixed {
position: fixed;
bottom: 0;
width: 100%;
}
4. CSS过渡与动画
4.1 过渡
CSS过渡允许元素在不同状态之间平滑地改变。
.button {
background-color: blue;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: darkblue;
}
4.2 动画
CSS动画使用@keyframes规则来创建动画序列。
@keyframes slide-in {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0);
}
}
.animated {
animation: slide-in 1s ease forwards;
}
5. 响应式设计
5.1 媒体查询
媒体查询允许根据设备特性应用不同的样式。
/* 桌面设备 */
@media (min-width: 992px) {
.container {
width: 970px;
}
}
/* 平板设备 */
@media (min-width: 768px) and (max-width: 991px) {
.container {
width: 750px;
}
}
/* 移动设备 */
@media (max-width: 767px) {
.container {
width: 100%;
}
}
5.2 视口单位
视口单位基于视口的尺寸,适合响应式设计。
.hero {
height: 100vh; /* 视口高度的100% */
width: 100vw; /* 视口宽度的100% */
}
.text {
font-size: 5vw; /* 视口宽度的5% */
}
6. CSS变量
CSS变量(自定义属性)提供了在整个文档中重用值的能力。
:root {
--primary-color: #3498db;
--secondary-color: #2ecc71;
--font-size-base: 16px;
}
.button {
background-color: var(--primary-color);
font-size: var(--font-size-base);
}
.highlight {
color: var(--secondary-color);
}
7. CSS预处理器
7.1 Sass/SCSS
Sass为CSS添加了变量、嵌套、混合等高级功能。
$primary-color: #3498db;
.navbar {
background-color: $primary-color;
ul {
display: flex;
li {
margin: 0 10px;
a {
color: white;
&:hover {
text-decoration: underline;
}
}
}
}
}
7.2 Less
Less是另一种流行的CSS预处理器,语法与CSS更接近。
@primary-color: #3498db;
.button {
background-color: @primary-color;
&:hover {
background-color: darken(@primary-color, 10%);
}
}
8. CSS优化技巧
8.1 选择器优化
/* 避免 */
body .content article .title { color: red; }
/* 推荐 */
.content-title { color: red; }
8.2 简写属性
/* 避免 */
.element {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
}
/* 推荐 */
.element {
margin: 10px 20px;
}
8.3 减少重绘和回流
/* 避免 */
.box {
width: 100px;
height: 100px;
position: absolute;
top: 50px;
left: 50px;
border: 1px solid black;
}
/* 推荐 */
.box {
transform: translate(50px, 50px);
width: 100px;
height: 100px;
position: absolute;
border: 1px solid black;
}
结语
感谢您的阅读!期待您的一键三连!欢迎指正!