# 1. 使用 clamp() 实现响应式字体大小

clamp() 函数可以让你轻松实现响应式字体大小,避免手动编写复杂的媒体查询。

h1 {
  font-size: clamp(1.5rem, 5vw, 3rem);
}

解释clamp(最小值, 理想值, 最大值) ,字体大小会根据视口宽度自动调整,但不会超出设定的范围。


# 2. 利用 aspect-ratio 控制元素宽高比

aspect-ratio 属性可以轻松控制元素的宽高比,特别适合处理图片、视频等媒体内容。

img {
  aspect-ratio: 16 / 9;
}

使用场景:确保图片或视频在不同设备上保持一致的宽高比。


# 3. 使用 gap 简化网格和弹性布局的间距

gap 属性可以快速为网格(Grid)和弹性盒子(Flexbox)布局设置间距,无需使用繁琐的 margin

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

优势:代码更简洁,间距控制更直观。


# 4. 利用 backdrop-filter 实现毛玻璃效果

backdrop-filter 可以为元素的背景添加滤镜效果,轻松实现毛玻璃效果。

.modal {
  backdrop-filter: blur(10px);
  background-color: rgba(255, 255, 255, 0.5);
}

使用场景:弹窗、卡片等需要突出显示的元素。


# 5. 使用 scroll-snap 实现平滑滚动定位

scroll-snap 可以让页面滚动时自动吸附到指定位置,适合轮播图、全屏滚动等场景。

.container {
  scroll-snap-type: y mandatory;
  overflow-y: scroll;
}
.section {
  scroll-snap-align: start;
}

优势:提升用户体验,滚动效果更流畅。


# 6. 利用 @supports 实现渐进增强

@supports 规则可以检测浏览器是否支持某个 CSS 特性,从而实现渐进增强。

@supports (display: grid) {
  .container {
    display: grid;
  }
}

使用场景:兼容性处理,确保在不支持某些特性的浏览器中提供备用方案。


# 7. 使用 conic-gradient 创建锥形渐变

conic-gradient 可以创建围绕中心点的渐变效果,适合制作饼图、色轮等。

.pie-chart {
  background: conic-gradient(red 0% 25%, green 25% 50%, blue 50% 100%);
  border-radius: 50%;
}

优势:无需使用 SVG 或 JavaScript,纯 CSS 实现复杂图形。


# 8. 利用 :is():where() 简化选择器

:is():where() 可以简化复杂的选择器,减少代码冗余。

:is(h1, h2, h3) {
  color: #333;
}
:where(.card, .modal) {
  padding: 20px;
}

区别:is() 会影响优先级,而 :where() 的优先级始终为 0。


# 9. 使用 will-change 优化动画性能

will-change 可以提前告知浏览器哪些属性即将发生变化,从而优化动画性能。

.element {
  will-change: transform, opacity;
}

注意:不要滥用,仅在需要时使用。


# 10. 利用 @property 自定义 CSS 变量

@property 可以定义带有类型和初始值的 CSS 变量,增强变量的可控性。

@property --primary-color {
  syntax: '<color>';
  inherits: false;
  initial-value: #ff0000;
}
.element {
  --primary-color: #00ff00;
  background: var(--primary-color);
}

使用场景:动态主题切换、复杂动画控制。