CSS(层叠样式表)是前端开发的核心技术之一,掌握一些实用技巧可以大幅提升开发效率和代码质量。本文将分享30+个CSS实用技巧,涵盖布局、动画、响应式设计、性能优化等方面,助你写出更优雅、高效的样式代码!
box-sizing: border-box
避免尺寸计算问题* {
box-sizing: border-box; /* 宽度包含padding和border */
}
作用:让元素的width
和height
包含padding
和border
,避免布局错乱。
margin: auto
实现水平居中.container {
width: 80%;
margin: 0 auto; /* 水平居中 */
}
适用场景:块级元素水平居中。
flex: 1
让子元素自动填充剩余空间.parent {
display: flex;
}
.child {
flex: 1; /* 自动填满剩余空间 */
}
适用场景:弹性布局中的自适应宽度。
gap
替代 margin
控制间距.grid-container {
display: grid;
gap: 16px; /* 替代 margin 管理间距 */
}
.flex-container {
display: flex;
gap: 16px; /* Flexbox 也支持 gap */
}
优势:比margin
更简洁,避免margin
重叠问题。
min-height: 100vh
确保页面占满视口高度body {
min-height: 100vh; /* 至少占满整个屏幕高度 */
}
适用场景:避免内容不足时页面底部留白。
aspect-ratio
固定宽高比.video-container {
aspect-ratio: 16 / 9; /* 保持16:9比例 */
}
适用场景:图片、视频、卡片等需要固定比例的场景。
object-fit
控制图片填充方式img {
width: 100%;
height: 200px;
object-fit: cover; /* 裁剪填充 */
}
可选值:cover
(裁剪)、contain
(完整显示)、fill
(拉伸)。
position: sticky
实现粘性定位.header {
position: sticky;
top: 0; /* 滚动到顶部时固定 */
}
适用场景:导航栏、表头固定。
columns
实现多列布局.article {
columns: 2; /* 两列布局 */
column-gap: 20px;
}
适用场景:新闻、博客等多列文本布局。
clip-path
创建自定义形状.shape {
clip-path: polygon(0 0, 100% 0, 100% 75%, 0 100%); /* 梯形 */
}
适用场景:不规则图形、斜切背景。
var()
定义CSS变量:root {
--primary-color: #3498db;
}
.button {
background: var(--primary-color);
}
优势:方便主题切换和全局样式管理。
filter
实现图片滤镜img {
filter: grayscale(50%) blur(1px); /* 灰度+模糊 */
}
可选效果:brightness()
、contrast()
、drop-shadow()
等。
backdrop-filter
实现毛玻璃效果.modal {
backdrop-filter: blur(10px); /* 背景模糊 */
}
适用场景:弹窗、侧边栏背景。
text-overflow: ellipsis
实现文本溢出省略.text {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis; /* 超出显示省略号 */
}
适用场景:标题、列表项文字截断。
::first-letter
设置首字下沉p::first-letter {
font-size: 2em;
float: left;
margin-right: 5px;
}
适用场景:文章排版增强视觉效果。
::selection
自定义选中文本样式::selection {
background: #ffcc00;
color: #000;
}
适用场景:提升用户体验。
mix-blend-mode
实现混合模式.overlay {
mix-blend-mode: multiply; /* 正片叠底效果 */
}
适用场景:图片叠加、文字与背景融合。
writing-mode
改变文字方向.vertical-text {
writing-mode: vertical-rl; /* 垂直文字 */
}
适用场景:中文竖排、特殊排版需求。
scroll-behavior: smooth
平滑滚动html {
scroll-behavior: smooth;
}
适用场景:锚点跳转、返回顶部按钮。
will-change
优化动画性能.animated-element {
will-change: transform; /* 提前告知浏览器优化 */
}
适用场景:复杂动画性能优化。
transition
实现平滑过渡.button {
transition: all 0.3s ease;
}
.button:hover {
transform: scale(1.05);
}
适用场景:悬停效果、状态切换。
@keyframes
创建自定义动画@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.element {
animation: fadeIn 1s;
}
适用场景:加载动画、入场效果。
animation-fill-mode: forwards
保持动画结束状态.box {
animation: slideIn 1s forwards; /* 动画结束后保持最后一帧 */
}
适用场景:无需JS控制的动画状态保持。
transform: translateZ(0)
触发GPU加速.element {
transform: translateZ(0); /* 强制GPU渲染 */
}
适用场景:优化动画流畅度。
steps()
实现逐帧动画@keyframes typing {
from { width: 0 }
to { width: 100% }
}
.text {
animation: typing 3s steps(40);
}
适用场景:打字机效果、游戏动画。
@media
实现响应式布局@media (max-width: 768px) {
.container {
flex-direction: column;
}
}
适用场景:移动端适配。
clamp()
实现动态尺寸.title {
font-size: clamp(1rem, 5vw, 2rem); /* 最小1rem,最大2rem,中间按5vw缩放 */
}
适用场景:响应式字体、间距调整。
min()
和 max()
限制尺寸范围.card {
width: min(100%, 500px); /* 不超过500px */
height: max(50vh, 300px); /* 至少300px */
}
适用场景:弹性布局中的约束条件。
prefers-color-scheme
适配深色模式@media (prefers-color-scheme: dark) {
body {
background: #121212;
color: #fff;
}
}
适用场景:自动切换深色/浅色主题。
@supports
检测CSS特性支持@supports (display: grid) {
.container {
display: grid;
}
}
适用场景:渐进增强,优雅降级。
content-visibility: auto
优化长列表渲染.long-list {
content-visibility: auto; /* 只渲染可见区域 */
}
适用场景:大数据列表、无限滚动。
will-change
提前告知浏览器优化.animated-element {
will-change: transform, opacity;
}
适用场景:复杂动画性能优化。
font-display: swap
避免字体加载闪烁@font-face {
font-family: 'CustomFont';
src: url('font.woff2') format('woff2');
font-display: swap; /* 先显示备用字体,再替换 */
}
适用场景:优化字体加载体验。
@media (prefers-reduced-motion)
减少动画@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
}
}
适用场景:适配用户“减少动画”设置。
:where()
降低选择器优先级:where(.card, .list) a {
color: blue; /* 不影响优先级 */
}
适用场景:减少!important
的使用。
这些CSS技巧涵盖了布局、动画、响应式设计、性能优化等多个方面,熟练掌握它们可以大幅提升开发效率。建议收藏本文,并在实际项目中尝试应用!
你还有哪些常用的CSS技巧?欢迎在评论区分享!