掌握核心技巧,让你的CSS代码焕然一新
发表时间: 2024-12-20 12:27
写出简洁优雅的 CSS 代码不仅能提高代码的可维护性,还能减少样式冲突。本文将介绍 8 个实用技巧,帮你提升 CSS 代码质量。
使用 CSS 变量的好处:
/* 之前的写法 */.card h2,.card h3,.card h4,.card h5,.card h6 { margin-bottom: 16px;}/* 使用 :is() 简化后 */.card :is(h2, h3, h4, h5, h6) { margin-bottom: 16px;}/* 使用 :where() 降低优先级 */:where(.card, .panel, .box) p { line-height: 1.5;}
这个技巧可以:
/* 常见的 16:9 视频容器 */.video-container { width: 100%; aspect-ratio: 16 / 9; background: #000;}/* 保持正方形的头像容器 */.avatar { width: 100px; aspect-ratio: 1; object-fit: cover; border-radius: 50%;}
这个属性特别适合:
.title { /* 最小 16px,最大 32px,基于视窗宽度动态计算 */ font-size: clamp(16px, 4vw, 32px);}.container { /* 响应式内边距 */ padding: clamp(1rem, 3vw, 3rem); /* 响应式宽度 */ width: clamp(320px, 80vw, 1200px);}
clamp() 的优势:
.grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px;}.flex-container { display: flex; flex-wrap: wrap; gap: 16px; /* 可以分别设置行列间距 */ /* gap: 16px 24px; */}
gap 属性的优点:
.container { /* 替代 margin-left/right */ margin-inline: auto; /* 替代 padding-top/bottom */ padding-block: 2rem; /* 替代 width */ inline-size: 100%; /* 替代 height */ block-size: auto;}
逻辑属性的优势:
/* 当卡片包含图片时应用样式 */.card:has(img) { padding: 0;}/* 当表单存在错误输入时改变样式 */.form:has(:invalid) { border-color: red;}/* 调整空列表的样式 */ul:not(:has(li)) { display: none;}
:has() 选择器的应用场景:
@layer base, components, utilities;@layer base { h1 { font-size: 2rem; margin-bottom: 1rem; }}@layer components { .button { padding: 0.5rem 1rem; border-radius: 4px; }}@layer utilities { .text-center { text-align: center; }}
@layer 的优势: