应设transform-origin: center、显式声明transform: scale(1)和transition: transform 0.2s ease于常态,用scale(1.03)微调,避免width/padding变化及overflow: hidden裁切,合并:hover与:focus状态,并为图标文字单独重置transform。

搜索框悬停时只放大一点点,别让它“跳”起来
直接给 transform: scale(1.05) 会抖,因为默认以左上角为原点缩放。得加 transform-origin: center 锁定中心点,否则悬停瞬间位置偏移,光标还可能失焦。
常见错误是只写 :hover 但没设过渡起点——必须在常态下就声明 transition: transform 0.2s ease,否则动画不生效或卡顿。
- 用
scale(1.03)比1.05更克制,视觉上更“微小” - 别对
width或padding做 hover 变化,会触发重排,动画易卡 - 如果父容器有
overflow: hidden,放大后边缘可能被裁,要预留一点内边距
输入框聚焦时保持动画连贯,不中断悬停效果
用户常把 :focus 和 :hover 分开写,结果鼠标悬停再点进去,动画突然重置。正确做法是合并状态::hover, :focus-within 或直接用 :focus 继承 hover 的 transform。
注意:用 :focus-within 包裹整个搜索区域(比如 form),比只盯 input 更可靠——尤其带图标的搜索框,点图标也要触发动画。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
-
input:focus { transform: scale(1.03); }单独写没问题,但需确保未聚焦时也有transform: scale(1)(显式声明,别依赖默认) - 避免同时对
border和transform做过渡,CSS 引擎可能不同步,建议只过渡transform和box-shadow - 移动端 Safari 对
transformhover 支持弱,真要兼容得加cursor: pointer激活伪类
图标和文字别跟着一起放大,破坏布局节奏
如果搜索框里塞了 svg 或 i 图标,它们会随父元素 scale 被拉伸变形。得单独重置:.search-icon { transform: scale(1); },或者用 transform: none。
文字放大后容易糊——不是 bug,是 subpixel 渲染问题。解决方法很简单:加 will-change: transform 提前告知浏览器,或改用 scaleZ(1) 这种不影响文本渲染的轴向缩放(但实际效果一样,只是绕过渲染层限制)。
- 图标用
em或rem单位,别用固定px,否则 scale 后尺寸失控 - 文字阴影(
text-shadow)在 scale 后会变粗,若用了记得 hover 时同步调细 - 如果用了 Flex 布局,
align-items: center在 scale 后可能偏移,加transform-style: preserve-3d稳定基线
动画卡顿?检查是否触发了 layout 或 paint
打开 Chrome DevTools → Rendering → 勾选 “Paint flashing”,悬停时看是不是整块红闪。如果是,说明你在动 width、left、top 这类触发重排的属性。
真正流畅的悬停动画只该动 transform 和 opacity —— 它们走合成层,GPU 加速。其他任何改动,哪怕只是 background-color,在低端设备上都可能掉帧。
- 确认没在 hover 里写
height、margin、font-size—— 这些全是高成本属性 - 如果用了
box-shadow,别用太大的模糊值(比如20px),控制在4px以内 - 动画时长设
0.2s到0.25s最自然,超过0.3s就像卡顿,低于0.15s又难察觉
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










