CSS动画(轮播图)

简介: CSS动画(轮播图)

1.整体效果

轮播图是一种常见的视觉元素,用于展示图片、信息或故事。CSS轮播图动画通过平滑的过渡效果和动态的视觉表现,极大地增强了轮播图的吸引力和用户体验。本文将探讨如何使用CSS来创建一个响应灵敏、动画流畅的轮播图,让网站内容的展示更加生动和有趣。

2.完整代码

HTML

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>轮播图</title>  
    <link rel="stylesheet" type="text/css" href="6_11.css">  
</head>  
<body>  
<div class="g-container">  
    <ul style="--s: 4">  
        <li>  
            <img src="./1.png">  
        </li>  
        <li>  
            <img src="./2.png">  
        </li>  
        <li>  
            <img src="./3.png">  
        </li>  
        <li>  
            <img src="./4.png">  
        </li>  
  
        <!--末尾补一个首尾数据-->  
        <li>  
            <img src="./1.png">  
        </li>  
    </ul>  
</div>  
</body>  
</html>

CSS

* {  
    padding: 0;  
    margin: 0;  
}  
  
li {  
    list-style: none;  
}  
  
body,  
html {  
    width: 100%;  
    height: 100%;  
    display: flex;  
}  
  
:root {  
    --w: 400;  
    --speed: 2s;  
}  
  
.g-container {  
    width: 400px;  
    margin: auto;  
    height: 240px;  
    line-height: 240px;  
    font-size: 20px;  
    background: #673ab7;  
    color: #fff;  
    overflow: hidden;  
    border: 2px solid #766c6c;  
}  
  
ul {  
    display: flex;  
    flex-wrap: nowrap;  
}  
  
ul li {  
    flex-shrink: 0;  
    width: 100%;  
    height: 100%;  
    box-sizing: border-box;  
}  
  
ul li img {  
    width: 100%;  
    height: 100%;  
    object-fit: cover;  
}  
  
ul {  
    animation: move calc(var(--speed) * var(--s)) steps(var(--s)) infinite;  
}  
  
ul li {  
    white-space: nowrap;  
    cursor: pointer;  
    animation: move1 calc(var(--speed)) infinite;  
}  
  
@keyframes move {  
    0% {  
        transform: translate(0, 0px);  
    }  
  
    100% {  
        transform: translate(calc(var(--s) * var(--w) * -1px), 0);  
    }  
}  
  
@keyframes move1 {  
    0% {  
        transform: translate(0, 0px);  
    }  
  
    80%,  
    100% {  
        transform: translate(calc(var(--w) * -1px), 0);  
    }  
}

关键技术点如下:

  1. Flexbox布局:
    ul { display: flex; flex-wrap: nowrap; }:使用flex布局来水平排列列表项,并禁止换行。
  2. ul li { flex-shrink: 0; width: 100%; height: 100%; box-sizing: border-box; }:设置列表项不收缩,宽高为100%,并使用box-sizing: border-box;来包含边框和内边距。


  1. 图片样式:


  1. ul li img { width: 100%; height: 100%; object-fit: cover; }:使图片占满整个列表项,并使用object-fit: cover;来保证图片的封面效果。


  1. 动画效果:

ul 和 ul li 的动画使用了animation属性,分别命名为move和move1,并使用了CSS变量--speed和--s来控制动画的速度和步数。

@keyframes move 和 @keyframes move1:定义了两个关键帧动画,分别用于整个列表和单个列表项的移动。

  1. 无限循环:在ul中末尾补了一个首尾数据,结合动画的步骤(steps(var(--s)))和无限循环(infinite),实现了无缝滚动效果。
相关文章
|
1月前
|
机器学习/深度学习 前端开发 JavaScript
|
25天前
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
100 58
|
3天前
|
Web App开发 前端开发 JavaScript
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
12 1
|
29天前
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
26 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
2月前
|
JavaScript 前端开发
JS配合CSS3实现动画和拖动小星星小Demo
本文通过代码示例展示了如何使用JavaScript和CSS3实现动画效果和拖动小星星的交互效果,包括文字掉落动画和鼠标拖动产生小星星动画的实现方法。
45 0
JS配合CSS3实现动画和拖动小星星小Demo
|
1月前
|
前端开发
纯CSS实现轮播图
纯CSS实现轮播图
35 0
|
1月前
|
前端开发
CSS 动画介绍及语法
CSS 动画介绍及语法
27 0
|
2月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
3月前
|
前端开发 UED 开发者
有趣的CSS - 文字加载动画效果
这个文本加载动画简单而有趣,可以在网站标题、广告标语或者关键信息的展示上吸引用户的注意力。开发者可以根据需要调整动画的持续时间、步骤数,或者光标颜色等,来适应特定的设计需求。使用这种动态元素,增强网站的互动性和用户体验,同时也为网站增添了一抹活泼的风格。
76 5
|
3月前
|
前端开发 JavaScript
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!