讲师中心 微信公众号
AI工具推荐 视频效率加速

怎么在CSS中制作类似微信摇一摇的手机晃动动效

夏磊同学_1586

夏磊同学_1586

发布时间:2026-11-03 13:13:05

|

262人浏览过

|

来源于php中文网

原创

微信摇一摇动效需模拟真实手部晃动:采用非对称旋转(-3deg→4deg→-1deg)、±1%缩放、0.4s ease-out时长、transform-origin偏移至握持点,并由JS通过devicemotion事件触发防误触。

怎么在css中制作类似微信摇一摇的手机晃动动效

用 @keyframes 模拟摇晃的物理感,不是单纯左右平移

微信摇一摇的动效核心是「短时高频+轻微旋转+轻微缩放」,不是匀速 translateX 来回拉。直接写 0% { transform: rotate(0); } 50% { transform: rotate(5deg); } 100% { transform: rotate(0); } 会显得生硬——人手晃手机时,是轴心不稳、角度不对称、末尾还有微顿感。

实操建议:

立即学习“前端免费学习笔记(深入)”;

  • 用 rotate(-3deg) → rotate(4deg) → rotate(-1deg) 模拟非对称抖动,避免镜像对称的机械感
  • 叠加 scale(0.99) 到 scale(1.01),幅度控制在 ±1%,否则像弹跳而非晃动
  • 动画时长设为 0.4s,ease-out 收尾,模仿肌肉释放后的自然衰减
  • 别用 infinite 循环——真实摇一摇是一次性动作,触发后应靠 JS 控制播放次数

用 transform-origin 锚定晃动中心点

默认 transform-origin: center 会让元素绕自身中心转,但手机被握持时,晃动其实是绕手掌虎口附近的小区域发生的。视觉上更可信的做法是把旋转原点偏移到左下或右下角(模拟握持点)。

实操建议:

立即学习“前端免费学习笔记(深入)”;

  • 对容器加 transform-origin: 20% 80%(左下偏内),再配合 rotate,晃动感立刻更“沉”
  • 如果元素本身有阴影或边框,偏移原点后阴影位置会突兀,需同步用 filter: drop-shadow() 替代 box-shadow,避免投影随 transform 变形
  • 移动端 Safari 对非 center 的 transform-origin 在某些 zoom 场景下有渲染毛刺,可加 will-change: transform 预提升图层

用 JS 触发并防重复播放

CSS 动画本身不能监听设备运动,所谓“摇一摇”必须由 JS 检测 devicemotion 事件后手动触发 class 切换。很多人卡在「一摇就狂播」「停不下来」「iOS 不响应」。

CSS工具箱(专业版)
CSS工具箱(专业版)

全功能 CSS 工程手册,覆盖性能优化、无障碍、设计系统与跨浏览器兼容。

下载

实操建议:

立即学习“前端免费学习笔记(深入)”;

  • 监听 accelerationIncludingGravity 的 x/y 值,取绝对值后加权求和:Math.abs(x) + Math.abs(y) * 0.7(y 轴受重力干扰大,要降权)
  • 设阈值 12(单位 m/s²),连续 2 帧超阈值才判定为有效摇动,避免误触
  • 触发后立即 element.classList.add('shake'),并在 animationend 事件里 remove,禁止用 setTimeout 移除——动画可能被系统节流打断
  • iOS Safari 默认禁用 devicemotion,需用户首次触摸后才能启用,加一句 document.body.addEventListener('touchstart', enableMotion, { once: true })

兼容性与性能关键点

这个动效在低端安卓机上容易掉帧,尤其同时跑多个 transform 属性时。别迷信「硬件加速」,translateZ(0) 在部分 Android WebView 里反而引发闪烁。

实操建议:

立即学习“前端免费学习笔记(深入)”;

  • 只对 transform 和 opacity 做动画,杜绝 left/top 或 margin——这些会触发重排
  • 动画元素层级要独立,加 isolation: isolate 防止父容器 filter 或 backdrop-filter 拖慢子动画
  • Android Chrome 115+ 对 devicemotion 采样率大幅降低,默认 60fps 变成 15fps,检测逻辑要适应低频数据,别依赖「快速连续变化」
  • 真机调试时,Safari 开发者工具的「Timelines」面板比 Chrome 的 Performance 更准,能看清 Core Animation 提交是否卡顿

真正难的不是写出晃动,而是让每次晃动都像人手真实发出的——力度有随机性、结束有余震、中间无规律停顿。这些细节得靠 JS 控制动画参数动态生成,而不是写死一套 keyframes。

相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

5336

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

1137

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2018

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

4046

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

8425

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

7131

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2337

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

3411

2023.08.22

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn