这段代码我也是网上找的,方便记录,也为了分享所以解刨记录一下
简单介绍
目标元素选择器
这段代码的开头部分,通过 CSS 选择器精准锁定了三类图像元素img.avatar-img.avatar-lg
选择同时拥有avatar-img和avatar-lg
两个类名的<img>
元素。这种组合选择器能够精确匹配特定场景下的图像,比如网站用户头像中特定尺寸和样式的大头像。
img.avatar.lazyloaded
针对同时具有avatar
和lazyloaded
类的图像。lazyloaded
类通常用于实现图片的懒加载功能,该选择器确保懒加载完成后的头像元素也能应用相应样式。
img.avatar
只要图像元素拥有avatar
类,都会被选中。这是一个更宽泛的选择,作为前两个选择器的补充,覆盖了所有带有avatar
类的图像。
通过这种细致的选择器组合,开发者可以灵活地控制不同条件下的图像样式,避免样式的误应用,提升代码的可控性和维护性。
基础样式设定
animation light 4s ease-in-out infinite
这行代码应用了名为light
的动画,动画时长为 4 秒,以ease-in-out
的缓动函数运行,并且会无限循环播放。通过这个动画,图像将产生不断变化的发光效果。
transition
0.5s设置了 0.5 秒的过渡效果。这意味着当图像的样式发生改变时(比如后续的悬停状态),样式变化不会瞬间完成,而是会在 0.5 秒内平滑过渡,让用户的视觉体验更加流畅自然。
悬停效果
接下来的代码块定义了图像在悬停状态下的样式变化:
img.avatar-img.avatar-lg:hover,
img.avatar.lazyloaded:hover,
img.avatar:hover {
transform: scale(1.15) rotate(720deg); /* 悬停时放大15%并旋转两周(720度) */
}
hover
伪类是 CSS 中用于检测鼠标指针是否悬停在元素上的重要特性。当用户将鼠标悬停在之前选中的图像上时,transform
属性发挥作用,使图像放大 15% 并旋转 720 度(即两周)。结合之前设置的过渡效果,这个变化过程会显得非常平滑,给用户带来惊喜的交互体验,增强用户与网页之间的互动感。
动画关键帧
最后,@keyframes
规则定义了名为light
的动画关键帧,这是实现图像发光效果的核心部分:
@keyframes light {
0% { box-shadow: 0 0 4px #f00; } /* 起始状态:红色小光晕 */
25% { box-shadow: 0 0 16px #0f0; } /* 25%进度:绿色大光晕 */
50% { box-shadow: 0 0 4px #00f; } /* 50%进度:蓝色小光晕 */
75% { box-shadow: 0 0 16px #0f0; } /* 75%进度:绿色大光晕 */
100% { box-shadow: 0 0 4px #f00; } /* 结束状态:回到红色小光晕 */
}
@keyframes
规则允许开发者定义动画在不同阶段的样式变化。在light
动画中:
动画开始(0%)时,图像周围产生一个红色的小光晕(box-shadow: 0 0 4px #f00;
)。
当动画进行到 25% 时,光晕变为绿色且尺寸变大(box-shadow: 0 0 16px #0f0;
)。
50% 时,光晕切换为蓝色小光晕。
75% 时,再次出现绿色大光晕。
动画结束(100%)时,回到初始的红色小光晕状态。由于设置了infinite
无限循环,这个过程会一直持续,使图像始终散发着光晕。
完整代码展示
/* 目标元素选择器组:指定样式仅应用于以下三类图像元素 */
img.avatar-img.avatar-lg, /* 同时拥有avatar-img和avatar-lg类的图像 */
img.avatar.lazyloaded, /* 同时拥有avatar和lazyloaded类的图像 */
img.avatar { /* 拥有avatar类的图像 */
/* 使图像呈现圆形效果 */
animation: light 4s ease-in-out infinite; /* 应用4秒循环的发光动画 */
transition: 0.5s; /* 设置0.5秒的过渡效果,用于平滑响应悬停动作 */
}
/* 目标元素的悬停状态样式 */
img.avatar-img.avatar-lg:hover,
img.avatar.lazyloaded:hover,
img.avatar:hover {
transform: scale(1.15) rotate(720deg); /* 悬停时放大15%并旋转两周(720度) */
}
/**
* 发光动画定义
* 实现图像周围的光晕效果,在红、绿、蓝之间循环变化
*/
@keyframes light {
0% { box-shadow: 0 0 4px #f00; } /* 起始状态:红色小光晕 */
25% { box-shadow: 0 0 16px #0f0; } /* 25%进度:绿色大光晕 */
50% { box-shadow: 0 0 4px #00f; } /* 50%进度:蓝色小光晕 */
75% { box-shadow: 0 0 16px #0f0; } /* 75%进度:绿色大光晕 */
100% { box-shadow: 0 0 4px #f00; } /* 结束状态:回到红色小光晕 */
}
学会了,去看我网站
@lovau
让我看看