知识篇 -- CSS高级概念

Ray Shine 2023/11/11 CSS高级概念

# 过渡 (Transitions) 和动画 (Animations)

# 过渡 (Transitions)

CSS 过渡允许您在不使用 Flash 动画或 JavaScript 的情况下,平滑地改变 CSS 属性值。

  • transition-property: 指定要过渡的 CSS 属性。
  • transition-duration: 指定过渡的持续时间。
  • transition-timing-function: 指定过渡的速度曲线(例如 ease, linear, ease-in, ease-out, ease-in-out)。
  • transition-delay: 指定过渡开始前的延迟时间。
  • transition: 上述属性的简写。
.box {
    width: 100px;
    height: 100px;
    background-color: blue;
    transition: width 2s ease-in-out 0.5s, background-color 1s linear;
}

.box:hover {
    width: 200px;
    background-color: red;
}

# 动画 (Animations)

CSS 动画允许您创建更复杂的动画序列,通过 @keyframes 规则定义动画的各个阶段。

  • @keyframes: 定义动画序列的关键帧。
  • animation-name: 指定要绑定的 @keyframes 规则的名称。
  • animation-duration: 指定动画的持续时间。
  • animation-timing-function: 指定动画的速度曲线。
  • animation-delay: 指定动画开始前的延迟时间。
  • animation-iteration-count: 指定动画播放的次数(infinite 为无限次)。
  • animation-direction: 指定动画是否应该轮流反向播放(normal, reverse, alternate, alternate-reverse)。
  • animation-fill-mode: 指定动画在播放之前和之后如何应用样式(none, forwards, backwards, both)。
  • animation-play-state: 指定动画是运行还是暂停(running, paused)。
  • animation: 上述属性的简写。
@keyframes slidein {
    from {
        transform: translateX(0%);
    }
    to {
        transform: translateX(100%);
    }
}

.element {
    animation: slidein 3s ease-in-out infinite alternate;
}

# 变换 (Transforms)

CSS transform 属性允许您对元素进行 2D 或 3D 转换,例如移动、旋转、缩放和倾斜。

  • translate(x, y): 沿 X 和 Y 轴移动元素。
  • rotate(angle): 旋转元素。
  • scale(x, y): 缩放元素。
  • skew(x-angle, y-angle): 倾斜元素。
  • matrix(): 将所有 2D 转换合并为一个。
  • translate3d(x, y, z): 沿 X、Y、Z 轴移动元素。
  • rotate3d(x, y, z, angle): 沿 3D 空间中的轴旋转元素。
  • scale3d(x, y, z): 缩放元素。
  • perspective(value): 为 3D 变换定义透视视图。
.box {
    transform: rotate(45deg) scale(1.2) translateX(20px);
}

# 阴影 (Shadows)

# box-shadow

为元素添加阴影效果。

.card {
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3); /* 水平偏移 垂直偏移 模糊半径 颜色 */
    box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.2) inset; /* 内阴影 */
}

# text-shadow

为文本添加阴影效果。

h1 {
    text-shadow: 2px 2px 4px #333; /* 水平偏移 垂直偏移 模糊半径 颜色 */
}

# 渐变 (Gradients)

CSS 渐变允许您在两个或多个指定颜色之间创建平滑的过渡。

# 线性渐变 (Linear Gradients)

颜色沿着一条直线过渡。

.linear-gradient {
    background-image: linear-gradient(to right, red, yellow); /* 从左到右,从红到黄 */
    background-image: linear-gradient(45deg, blue, green); /* 45度角,从蓝到绿 */
}

# 径向渐变 (Radial Gradients)

颜色从一个中心点向外扩散。

.radial-gradient {
    background-image: radial-gradient(circle, red, yellow, green); /* 从中心向外,红->黄->绿 */
}

# 自定义属性 (CSS Variables)

CSS 自定义属性(也称为 CSS 变量)允许您定义可在整个文档中重复使用的值。

:root {
    --main-color: #007bff;
    --panel-background: #f8f9fa;
}

.header {
    background-color: var(--main-color);
}

.panel {
    background-color: var(--panel-background);
    color: var(--main-color);
}

# CSS 预处理器 (CSS Preprocessors)

CSS 预处理器是 CSS 的超集,它在编译成 CSS 之前提供了一些额外的功能,如变量、嵌套、混合(mixins)、函数等。

  • Sass/SCSS: 最流行的预处理器之一。
  • Less: 另一个流行的预处理器。
  • Stylus: 具有更灵活语法的预处理器。

# CSS 方法论 (CSS Methodologies)

CSS 方法论是一套用于组织和管理 CSS 代码的规则和最佳实践,旨在提高代码的可维护性、可扩展性和可重用性。

  • BEM (Block Element Modifier): 一种组件化的命名约定,将 UI 分解为独立的块、元素和修饰符。
  • OOCSS (Object Oriented CSS): 鼓励将结构和外观分离,以及将重复的模式抽象为可重用的“对象”。
  • SMACSS (Scalable and Modular Architecture for CSS): 将样式规则分为五个类别:Base, Layout, Module, State, Theme。

# 性能优化 (Performance Optimization)

  • 代码压缩: 移除不必要的空格、注释和缩进,减小文件大小。
  • 关键 CSS (Critical CSS): 提取首屏渲染所需的最小 CSS,内联到 HTML 中,以加快页面加载速度。
  • 懒加载: 对于非首屏的图片、视频等资源,延迟加载。
  • 避免使用 @import: @import 会导致样式表串行加载,影响性能。
  • 优化选择器: 避免使用过于复杂的选择器。

# CSS 可访问性 (CSS Accessibility - A11y)

确保网站对所有用户(包括残障人士)都可用。

  • 焦点状态: 为可交互元素提供清晰的 :focus 样式。
  • 语义化 HTML: 使用正确的 HTML 标签来传达内容的含义。
  • 颜色对比度: 确保文本和背景颜色之间有足够的对比度,以便于阅读。
  • 响应式设计: 确保布局在不同设备和屏幕尺寸上都能正常工作。
最后更新时间: 2025/11/20 22:59:30
ON THIS PAGE