花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 53|回复: 17

使用mask属性实现图片转场

[复制链接]
  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2025-8-10 12:06 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    本帖最后由 马黑黑 于 2025-8-10 18:10 编辑

    CSS 属性 mask 属性允许用户使用图片去遮罩使用了该属性的元素的指定区域。利用此属性,可以实现美妙的图片转场效果。

    实现思路:

    多张图片放入数组待用,接着按顺序读取数组图片,第 n 张图片做主元素背景,第 n+1 张图片做伪元素的背景,每间隔一段时间执行一次,如此循环往复。伪元素做图片入场、出场效果,使用 mask 进行线性或其它渐变遮罩(本文使用线性渐变遮罩),非透明渐变区域是伪元素背景图呈现的区域,先从 -2% 开始,0% 开始是透明区域伪元素背景不可见,然后非透明区域递增到 100%,这样伪元素上的背景图片入场方式就是淡入,而上一张图片已是主元素背景图片,它的出场就是淡出。伪元素进出的角度可以随意设计,本文采用矩形四个角作为进出场的地点。

    以下是具体代码,可以点击代码框右上角的预览链接查看效果:

    <style> #pa { margin: 30px auto; width: 1024px; height: 640px; background: var(--bg); position: relative; /* 主元素初始背景图片为JS数组中最后一张 */ --bg: url('https://638183.freep.cn/638183/t24/w5/g5.webp') no-repeat center/cover; --bg1: none; /* 伪元素开始时背景为空 */ } /* 伪元素使用遮罩 */ #pa::before { content: ''; position: absolute; inset: 0; background: var(--bg1); mask: linear-gradient(var(--a), red var(--per), transparent calc(var(--per) + 2%), transparent); /* 兼容版本 < 120 的 Chrome */ -webkit-mask: linear-gradient(var(--a), red var(--per), transparent calc(var(--per) + 2%), transparent); } /* 关键帧动画播放控制器 */ #ma { position: absolute; left: 40px; top: 40px; animation: rot 8s linear infinite; } /* 指针移入时暂停关键帧动画 */ #ma:hover { animation-play-state: paused; } @keyframes rot { to { transform: rotate(1turn); } } </style> <div id="pa"> <img id="ma" src="https://638183.freep.cn/638183/small/780.webp" alt="" title="移出播放/移入暂停" /> </div> <script> // per : 遮罩起始点,step : 递增系数,aniCounter : 关键帧动画运行计数器, // raf : requestAnimationFrame API 计数器 var per = -2, step = 0.5, aniCounter = 0, raf; // 图片数组 var pics = [ 'https://638183.freep.cn/638183/t24/w5/g1.webp', 'https://638183.freep.cn/638183/t24/w5/g2.webp', 'https://638183.freep.cn/638183/t24/w5/g3.webp', 'https://638183.freep.cn/638183/t24/w5/g4.webp', 'https://638183.freep.cn/638183/t24/w5/g5.webp' ]; // 播放控制器关键帧运行迭代事件 ma.onanimationiteration = () => { // angle : 渐变角度,picIdx : 图片序号 var angle = aniCounter % 4, picIdx = aniCounter % pics.length; // 更新CSS变量 --a pa.style.setProperty('--a', `${45 + (angle * 90)}deg`); // 更新伪元素使用的CSS变量 --bg1 pa.style.setProperty('--bg1', `url(${pics[picIdx]}) no-repeat center/cover`); picIdx = (picIdx + 1) % pics.length; // 图片序号变更 aniCounter ++; // 关键帧动画计数器递增 changePic(); // 运行图片转场函数 }; // 图片转场函数 function changePic() { // 遮罩起始点若大于 100 if (per > 100) { cancelAnimationFrame(raf); // 取消请求关键帧动画API计数器 per = -2; // 遮罩起始点回到原始值 var picIdx = aniCounter % pics.length; // 计算当前图片序号 picIdx = picIdx > 0 ? picIdx - 1: pics.length - 1; // 防止序号超出范围 // 更新主元素背景图 pa.style.setProperty('--bg', `url(${pics[picIdx]}) no-repeat center/cover`); // 否则 } else { per += step; // 遮罩起始点递增 pa.style.setProperty('--per', per + '%'); // 更新遮罩起始点 raf = requestAnimationFrame(changePic); // 递归运行函数自身并更新raf计数器 } } </script>

    mask 遮罩所使用的线性渐变角度可以使用数组替代算式以设计更具个性化的变换方式。此外,可以考虑其它方式的渐变背景,甚至可以使用图片、SVG路径。

    评分

    参与人数 4威望 +140 金钱 +280 经验 +140 收起 理由
    梦江南 + 30 + 60 + 30 很给力!
    杨帆 + 30 + 60 + 30 精品文章!
    红影 + 50 + 100 + 50 赞一个!
    花飞飞 + 30 + 60 + 30 很给力!

    查看全部评分

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-8-10 13:03 | 显示全部楼层
    图片的转场效果很漂亮,分别依次从四个角点开始的呢,都是沿着45度方向行进。同时背景图也依次轮换着,这样的转场顺畅而自然,真漂亮
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-8-10 13:05 | 显示全部楼层
    鼠标放在小播上,也会让转场暂停呢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-8-10 16:50 | 显示全部楼层
    中午时看了一眼,有事先跑了,现在来仔细学一下这个漂亮的转场。。。。
    新画面淡入自然流畅,边缘有微微的羽化效果,好看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-8-10 16:55 | 显示全部楼层
    转场在视频里常见。。
    之前白老师在贴子里也做过一些图片转场效果,还有用各种不同的形状实现。
    今天从mask 属性角度实现,也很新奇。。
    角度可以任意变换,上下平铺,或者左右平铺也都很漂亮。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-8-10 16:57 | 显示全部楼层
    这个二楼代码又有改变吧。。看着特别舒适
    主代码与背景黑白分明,经典色系。。
    注释全部用彩色,一目了然。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-30 00:22
  • 签到天数: 380 天

    [LV.9]以坛为家II

    297

    主题

    2548

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-8-10 17:30 | 显示全部楼层
    本帖最后由 杨帆 于 2025-8-10 17:31 编辑

    美妙的图片转场效果,谢谢马老师经典讲授、精彩分享
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-10 17:46 | 显示全部楼层
    杨帆 发表于 2025-8-10 17:30
    美妙的图片转场效果,谢谢马老师经典讲授、精彩分享

    这类设计,还有很多可能
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-27 09:01
  • 签到天数: 591 天

    [LV.9]以坛为家II

    377

    主题

    1万

    回帖

    3万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师花潮贵宾

    发表于 2025-8-10 18:09 | 显示全部楼层
    老师辛苦了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-10 18:09 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-30 00:22
  • 签到天数: 380 天

    [LV.9]以坛为家II

    297

    主题

    2548

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-8-10 18:38 | 显示全部楼层
    马黑黑 发表于 2025-8-10 17:46
    这类设计,还有很多可能

    是的,只有明白其原理才可尝试一下
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-10 22:09 | 显示全部楼层
    杨帆 发表于 2025-8-10 18:38
    是的,只有明白其原理才可尝试一下

    比如角度,你可以从其它角度开始,然后不是加90度,而是N。

    转一圈应该是几步,用 360 / N 作为取余数的标准即可
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-30 00:22
  • 签到天数: 380 天

    [LV.9]以坛为家II

    297

    主题

    2548

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-8-10 22:13 | 显示全部楼层
    马黑黑 发表于 2025-8-10 22:09
    比如角度,你可以从其它角度开始,然后不是加90度,而是N。

    转一圈应该是几步,用 360 / N 作为取余数 ...

    谢谢马老师细致入微的指导,我好好琢磨一下
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-10 22:15 | 显示全部楼层
    杨帆 发表于 2025-8-10 22:13
    谢谢马老师细致入微的指导,我好好琢磨一下

    这里面需要感受的是角度的划分,都是以圆的度数为参照
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-30 00:22
  • 签到天数: 380 天

    [LV.9]以坛为家II

    297

    主题

    2548

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-8-10 22:18 | 显示全部楼层
    马黑黑 发表于 2025-8-10 22:15
    这里面需要感受的是角度的划分,都是以圆的度数为参照

    有点明白了,谢谢老师
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-10 22:28 | 显示全部楼层
    杨帆 发表于 2025-8-10 22:18
    有点明白了,谢谢老师

    你可以先尝试开始的角度,去体会它从哪儿开始
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-30 00:22
  • 签到天数: 380 天

    [LV.9]以坛为家II

    297

    主题

    2548

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-8-10 23:09 | 显示全部楼层
    马黑黑 发表于 2025-8-10 22:28
    你可以先尝试开始的角度,去体会它从哪儿开始

    好的,谢谢老师
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-30 07:45
  • 签到天数: 1655 天

    [LV.Master]伴坛终老

    3024

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-8-18 19:24 | 显示全部楼层
    杨帆 发表于 2025-8-10 23:09
    好的,谢谢老师

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-11-30 15:07 , Processed in 0.095457 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表