html5怎么给图片加动态边框_html5动态边框制作法【代码】
技术百科
星夢妙者
发布时间:2026-01-27
浏览: 次 用 CSS 动画实现图片动态边框最直接,核心是 @keyframes 配合 box-shadow 或 outline;box-shadow 性能好且不占布局,outline 适合“电流流动”效果;需注意 inline 元素要设 display、兼容性及移动端性能优化。
用 CSS 动画实现图片动态边框最直接
HTML5 本身不提供“动态边框”功能,真正起作用的是 CSS(尤其是 @keyframes 和 border / outline / box-shadow 的组合)。直接在 上加 class 就能生效,无需 JS 或 Canvas。
常见错误是试图用 绘制边框来“模拟动态”,反而增加复杂度且难响应式。实际项目中,95% 的需求用纯 CSS 就够了。
- 优先用
box-shadow动画:不占布局、支持多层、性能好 - 避免用
border动画做“流动光效”:宽度/样式频繁变化会触发重排(reflow) - 记得加
display: inline-block或block:默认是 inline 元素,部分动画在 inline 下表现异常
复制即用的发光呼吸边框代码
下面这段 CSS 给图片加一个柔和脉动的蓝紫色光晕边框,兼容所有现代浏览器(Chrome/Firefox/Safari/Edge):
.img-pulse-border {
display: inline-block;
vertical-align: middle;
box-shadow: 0 0 0 0 rgba(106, 76, 147, 0.4);
animation: pulse 2s infinite;
}
@keyframes pulse {
0% {
box-shadow: 0 0 0 0 rgba(106, 76, 147, 0.4);
}
70% {
box-shadow: 0 0 0 10px rgba(106, 76, 147, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(106, 76, 147, 0);
}
}
用法:
关键点:
-
vertical-align: middle防止行内对齐错位 - 动画从
0px→10px→0px变化,比单纯缩放更自然 - rgba 的 alpha 值从
0.4→0→0,控制透明度过渡
要“描边流动”效果?用 outline + animation 更稳
如果需要类似“电流沿边跑”的效果(比如科技感导航图标),outline 比 border 更合适:它不参与盒模型,动画时不会挤压内容。
示例(单侧流动高亮):
.img-outline-flow {
outline: 2px solid transparent;
outline-offset: -2px;
animation: outlineFlow 3s linear infinite;
}
@keyframes outlineFlow {
0% {
outline-color: #4a90e2;
}
33% {
outline-color: #50e3c2;
}
66% {
outline-color: #f5a623;
}
100% {
outline-color: #4a90e2;
}
}
注意:
-
outline-offset: -2px让
outline 贴紧图片边缘(否则默认有间隙)
- 不要用
outline: none在 hover 中清掉——会导致动画中断;改用透明色过渡 - 该写法在 Safari 旧版(≤14)可能有渲染抖动,可加
transform: translateZ(0)强制 GPU 加速
移动端适配和性能提醒
在手机上跑动画容易卡顿,尤其低端安卓机。必须做三件事:
- 给动画元素加
will-change: box-shadow(仅对真正需要的元素) - 避免同时动画 >3 个属性(比如
box-shadow+transform+opacity) - 用
prefers-reduced-motion降级:用户开启“减少动画”时停掉
降级写法示例:
@media (prefers-reduced-motion: reduce) {
.img-pulse-border {
animation: none;
box-shadow: 0 0 0 2px #6a4c93;
}
}
真正麻烦的不是写法,而是设计师给的“边框要像水波纹扩散再收缩三次,每次颜色不同”——这种需求得拆成多个 box-shadow 层叠动画,调试成本高,上线前务必真机测 iOS 和 Android 各版本。
# safari
# 浏览器
# css
# edge
# js
# class
# html
# chrome
# ios
# canva
# firefox
# 安卓
# android
# html5
# 移动端适配
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python代码测试策略_质量保障解析【教程】
- php能控制zigbee模块吗_php通过串口与c
- PHP cURL GET请求:正确设置认证与自定义
- Windows10如何更改开机密码_Win10登录
- PHP 中如何在函数内持久化修改引用变量的指向
- 如何使用Golang管理模块版本_Golanggo
- 如何关闭Win10自动更新更新_Win10系统自动
- Golang如何实现基本的用户注册_Golang用
- Python路径拼接规范_跨平台处理说明【指导】
- Python文件管理规范_工程实践说明【指导】
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- Mac如何使用听写功能_Mac语音输入打字【效率技
- Win11怎么查看局域网电脑_Windows 11
- php8.4匿名类怎么用_php8.4匿名类创建与
- Python数据挖掘核心算法实践_聚类分类与特征工
- 如何使用Golang encoding/json解
- 使用类变量定义字符串常量时的类型安全最佳实践
- Windows系统被恶意软件破坏后的恢复策略_错误
- Python函数参数高级用法_默认值与可变参数解析
- Win11怎么更改任务栏位置_修改注册表将Win1
- Mac如何修复应用程序权限问题_Mac磁盘工具修复
- Win11怎样安装微信开发者工具_Win11安装开
- LINUX怎么设置系统语言_LINUX修改中文环境
- Win11系统占用空间大怎么办 Win11深度瘦身
- Windows10电脑怎么设置电源按钮_Win10
- 企业SEO优化选择网站建设模板的技巧
- Windows蓝屏错误0x0000002C怎么解决
- Windows系统时间服务错误_W32Time服务
- Win11怎么设置桌面图标间距_Windows11
- Win11怎么更改任务栏颜色_Windows11个
- Windows10系统怎么查看CPU核心数_Win
- 如何提升Golang JSON序列化性能_Gola
- Win11如何设置开机自动联网 Win11宽带连接
- Win11怎么设置快速访问主页_Windows11
- Windows 10怎么把任务栏放在屏幕上方_Wi
- Win11怎么清理C盘下载文件夹_Win11清理下
- Python生成器表达式内存优化_惰性计算说明【指
- 如何在Golang中引入测试模块_Golang测试
- c# Task.Yield 的作用是什么 它和Ta
- php订单日志怎么记录评价_php记录订单评价日志
- SAX解析器是什么,它与DOM在处理大型XML文件
- Windows电脑如何截屏?(四种快捷方法)
- PHP的FastAdmin架构适合二次开发吗_特点
- 如何在JavaScript中动态拼接PHP的bas
- Golang如何避免指针逃逸_Golang逃逸分析
- 如何在Golang中实现并发消息队列消费者_Gol
- php中::能用于接口静态方法吗_接口静态方法调用
- php订单日志怎么按金额排序_php按订单金额排序
- Windows10如何更改鼠标图标_Win10鼠标
- Win11怎么更改计算机名_Windows11系统


QQ客服