必须用 background-image: -webkit-linear-gradient(), linear-gradient() 并设 background-color fallback;iOS/Android 需 :active 深色渐变、-webkit-tap-highlight-color: transparent;IE10–11 要手动加 filter 兼容。
用
+
写按钮渐变,核心是别漏掉浏览器前缀和 fallback 颜色
纯 CSS 渐变按钮不依赖图片,但直接写
在老版本 Safari(iOS 6.1–9.3)或 Android 4.3 及以下会失效——因为这些环境只认带
前缀的
形式。所以必须显式声明
,并补上前缀版本。
写法必须是
,不能只写
,否则 Safari 8–9 不识别
必须加
作为降级:放在标准写法之前,让旧引擎优先匹配
务必声明一个纯色
作为最终 fallback,防止所有渐变都失效时按钮彻底透明
渐变方向推荐用标准关键词(如
),比角度(如
)兼容性更好
按钮 hover 状态下渐变反转的常见写法陷阱
想实现“默认蓝→绿,hover 时绿→蓝”,不能只改
的颜色顺序,还要注意过渡行为:CSS
默认不支持渐变属性的平滑过渡,直接写
在 Chrome/Firefox 有效,但在 Safari 中可能卡顿或跳变。
稳妥做法是用
搭配两个不同渐变的 class 切换,或改用
等可硬件加速的属性做动效辅助
如果坚持过渡渐变,确保起止色对比足够,避免 Safari 下因渲染精度问题出现灰边或色带
不要在
里只改
的角度(比如从
改成
),部分安卓 WebView 会闪退或不重绘
移动端点击无反馈?得处理
状态和 tap-highlight
渐变按钮在 iOS 上点击没按压感,通常是因为没定义
样式,且系统默认的灰色高亮没关。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
必须写
(颜色比默认更深),否则点击像没反应
加上
消除 iOS 点击蒙层,不然渐变会被盖住
Android 4.4+ 需要
提升点击响应速度,避免 300ms 延迟影响按钮反馈
别用
改渐变方向(如
),某些 UC 浏览器内核会错位重绘
IE10–11 怎么兼容?别信自动转换工具
IE10–11 支持
,但只接受语法
,而且必须用 HEX 或 RGB,不支持 HSL/RGBA 渐变色。Babel 或 PostCSS 插件(如 autoprefixer)不会帮你补这个 filter,得手动加。
立即学习
“
前端免费学习笔记(深入)
”;
IE10–11 的
写法:先写
必须把
放在
之后,否则会被覆盖;同时设
触发 hasLayout
RGBA 渐变在 IE 下全失效,只能降级为不透明纯色组合,比如
改成
IE11 的 Edge 模式(documentMode=11)已支持标准
,但企业内网常强制用 IE8/9 兼容模式,所以
仍需保留
实际项目里,最常被忽略的是
fallback 和
的深色渐变——用户点下去没视觉反馈,第一反应不是代码错了,而是“这按钮坏了”。
background-imagelinear-gradientbackground: linear-gradient(...)-webkit-background-imagebackground-imagebackground-image: linear-gradient(...)background: linear-gradient(...)-webkit-linear-gradientbackground-colorto bottom180degbackground-imagetransitiontransition: background-image .3stransition: background-color .3stransform: scale():hoverlinear-gradientto rightto leftactive:activebutton:active { background-image: linear-gradient(to bottom, #333, #111); }-webkit-tap-highlight-color: transparent;touch-action: manipulation;:activeto toplinear-gradientfilter: progid:DXImageTransform.Microsoft.gradient(...)filterfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4facfe', endColorstr='#00f2fe');filterbackground-imagezoom: 1#4facfe → #00f2fe#4FACFE → #00F2FElinear-gradientfilterbackground-color:active