当前位置: 首页 > news >正文

CSS Transitions 过渡效果详解

CSS Transitions 过渡效果详解

一、Transitions 概述

CSS Transitions(过渡)用于在元素状态变化时创建平滑的动画效果。它们允许属性值在一段时间内平滑过渡。

1.1 基本语法

.element { transition: property duration timing-function delay; }

二、过渡属性

2.1 transition-property

/* 单个属性 */ .element { transition-property: width; } /* 多个属性 */ .element { transition-property: width, height, opacity; } /* 所有属性 */ .element { transition-property: all; }

2.2 transition-duration

.element { transition-duration: 0.3s; transition-duration: 500ms; }

2.3 transition-timing-function

/* 线性 */ .timing-linear { transition-timing-function: linear; } /* 缓入 */ .timing-ease-in { transition-timing-function: ease-in; } /* 缓出 */ .timing-ease-out { transition-timing-function: ease-out; } /* 缓入缓出 */ .timing-ease-in-out { transition-timing-function: ease-in-out; } /* 自定义贝塞尔曲线 */ .timing-custom { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } /* 步进 */ .timing-steps { transition-timing-function: steps(4); }

2.4 transition-delay

.element { transition-delay: 0.2s; }

三、组合写法

3.1 简写形式

/* 完整写法 */ .element { transition: all 0.3s ease-in-out 0.1s; } /* 多个属性 */ .element { transition: width 0.3s ease, height 0.5s ease-out; }

四、可过渡属性

4.1 常用可过渡属性

.element { /* 尺寸 */ width: 100px; height: 100px; padding: 10px; /* 颜色 */ color: #333; background-color: #fff; border-color: #ccc; /* 位置 */ transform: translateX(0); left: 0; top: 0; /* 透明度 */ opacity: 1; /* 边框 */ border-width: 1px; border-radius: 4px; /* 阴影 */ box-shadow: 0 2px 4px rgba(0,0,0,0.1); }

五、实战案例

5.1 悬停效果

.button { padding: 12px 24px; background: #667eea; color: white; border-radius: 8px; transition: all 0.3s ease; } .button:hover { background: #764ba2; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4); }

5.2 卡片翻转

.card { transition: transform 0.6s ease; transform-style: preserve-3d; } .card.flipped { transform: rotateY(180deg); }

5.3 进度条动画

.progress-bar { height: 10px; background: #eee; border-radius: 5px; overflow: hidden; } .progress-bar::after { content: ''; display: block; width: 0; height: 100%; background: linear-gradient(90deg, #667eea, #764ba2); transition: width 1s ease-out; } .progress-bar.active::after { width: 75%; }

5.4 菜单展开

.menu { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; } .menu.open { max-height: 500px; }

5.5 图片悬停缩放

.image-container { overflow: hidden; border-radius: 12px; } .image-container img { width: 100%; height: auto; transition: transform 0.4s ease; } .image-container:hover img { transform: scale(1.1); }

六、性能考虑

6.1 触发重绘/回流

/* 触发回流(不推荐) */ .element { transition: width 0.3s; } /* 仅触发合成(推荐) */ .element { transition: transform 0.3s; }

6.2 will-change

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

七、JavaScript 触发过渡

7.1 添加/移除类

const element = document.querySelector('.box'); // 添加过渡 element.classList.add('active'); // 移除过渡 element.classList.remove('active');

7.2 监听过渡结束

element.addEventListener('transitionend', (event) => { console.log('过渡完成:', event.propertyName); });

八、浏览器兼容性

属性ChromeFirefoxSafariIE
transition26+16+6.1+10+

九、总结

CSS Transitions 是创建平滑动画的基础:

  1. 过渡属性- property、duration、timing-function、delay
  2. 可过渡属性- 尺寸、颜色、位置、透明度等
  3. 性能优化- 使用 transform 和 opacity
  4. JavaScript 集成- 触发过渡、监听结束事件

合理使用过渡可以提升用户体验。

http://www.jsqmd.com/news/913029/

相关文章:

  • 抖音音频提取革命:3分钟搞定批量下载的开源神器
  • Claude生成代码质量究竟如何?37项实测指标揭穿90%开发者忽略的隐藏风险
  • C++跨平台开发:微信聊天记录导出工具架构解析与实现
  • 【雷达干扰】FMCW 雷达稀疏低秩 Hankel 矩阵分解的干扰抑制附Matlab代码
  • 2026年近期,如何选择行业知名的液压马达定制厂家? - 2026年企业资讯
  • 挖坑指南:为什么你的数据采集卡老是“丢帧”?一篇文章讲透Flash、FRAM、PSRAM的区别与实战
  • 三步轻松复活经典游戏联机:IPXWrapper让老游戏重获新生
  • 别再瞎测了!用IxChariot给工业网关做吞吐量测试,这5个坑我帮你踩过了
  • 隐形冠军舜展智能:16年磨一剑,用等离子技术点亮中国高端制造
  • 第19篇|沉浸式首页:地图、玻璃层、信息卡片的层级关系
  • 制造业AI智能体选型:跨系统执行、任务拆解与信创适配三大技术维度对比
  • Photoshop AVIF插件深度探索:为什么这款开源神器正在改变图像处理工作流?
  • 从Windows转战Ubuntu?手把手教你无缝迁移Beyond Compare使用习惯(含dpkg安装与破解详解)
  • 16位ADC不够用?别急着换芯片!教你用“过采样+滑动平均”榨出24位极致精度
  • 别再重装系统了!LightDM报错‘Failed to Start’的5种修复方案与深度解析
  • Flutter Hero Animation 详解
  • 2026年Q2北京铝合金回收:北京溴化锂机组回收/北京电器回收/北京电子设备回收/北京电池回收/北京电线电缆回收/选择指南 - 优质品牌商家
  • 从MODBUS协议栈到你的代码:深入理解CRC-16校验的‘位反序’到底在干什么?
  • 高性能语音合成部署:基于Sherpa-Onnx的MeloTTS多语言模型转换与优化方案
  • 文泉驿微米黑终极安装指南:5MB轻量级中文字体跨平台快速部署
  • 【图像提取】基于数学形态学的数字视网膜图像血管提取 (DRIVE) 数据集分割附Matlab代码
  • 【AI搜索革命性差异指南】:3大核心维度拆解AI搜索与传统搜索的底层逻辑差异
  • 别只用来聊天!解锁BitoAI在VSCode中的5个高效编程场景(含代码规范检查与性能优化)
  • FastAdmin后台开发实战:手把手教你从零新增一个自定义管理页面(ThinkPHP6框架)
  • Simulink封装模块的‘隐藏关卡’:初始化命令与回调函数实战指南(避坑+案例)
  • 深入Windows消息循环:手把手教你用Unity拦截WM_SIZING实现自定义窗口控制
  • 【绿化】Fong投屏 一键手机投屏 多设备兼容超稳定
  • 给STM32CubeIDE新手的第一份保姆级环境搭建指南(含JRE安装、汉化、主题美化)
  • 如何让AI代理操作SCADA和PLC设备获取数据?实在Agent闭锁环实战解析
  • 给Kali 2022.1换张‘脸’:从默认主题到中文界面,一次搞定所有视觉和语言设置