如何使用CSS创建旋转木马
旋转木马在互联网上是非常有名的。 Web旋转木马 是一种利用优质网站空间来有序地展示类似内容的优雅方式。它们被用于展示照片、展示产品并吸引新访问者的兴趣。但它们的效果如何?对于旋转木马有许多争论,也有关于使用旋转木马改善性能的研究。但旋转木马如何影响网页的可用性呢?
在本文中,我们将讨论旋转木马的基础知识以及如何使用HTML和CSS创建旋转木马。
什么是旋转木马
旋转木马是一种展示一系列旋转横幅/图片的幻灯片。旋转木马通常出现在网站的首页上,它可以改善网站的外观。Web旋转木马也被称为滑块、画廊和幻灯片,它们允许您在一个动态的“滑动”块中显示文本、图形、图像甚至视频。对于组合内容和概念,它们是一个很好的设计选择,可以建立特定内容之间的视觉链接。
因此,Web旋转木马非常适合在电子商务网站上推广相关产品,在设计作品集上展示特色项目,甚至在房地产网站上轮播房屋的室内外图片。然而,它们并不总是最佳选择。
许多设计师批评它们会减慢加载时间并破坏设计的流畅度。然而,与任何与设计相关的事物一样,当正确使用时,Web旋转木马可以以更容易遍历的方式划分内容。
如何制作Web旋转木马
在这里,我们将看到如何在不使用Bootstrap等框架的情况下制作一个简单的Web旋转木马。
需要遵循的步骤
- 使用HTML创建木马的基本结构,其中包含图片。在以下示例中,我们为木马添加了4张图片。此外,还有4个按钮,点击按钮将会显示相应的图片。
-
首先,创建一个充当容器的div元素,其中包含 标题 和 内容 。
-
现在, 内容 div包含两部分- 木马内容 (包含在过渡期间保持不变的文字部分)和 幻灯片 (包含4张图片和按钮的移动部分)。
-
使用CSS对木马图片和按钮进行样式设置。将幻灯片的位置设置为相对布局。
-
使用CSS动画使木马图片在过渡中平滑切换。
示例
下面的示例演示了一个包含4张图片和按钮的旋转木马,按钮控制图片的显示。这些图片以固定的时间间隔进行过渡显示。
<!DOCTYPE html>
<html>
<head>
<title> Web Carousel </title>
<style>
* {
box-sizing: border-box;
margin: 10px;
padding: 3px;
}
body {
background-color: rgb(195, 225, 235);
}
.box {
width: 600px;
height: 400px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin: auto;
}
.title {
padding: 10px 0 10px 0;
position: absolute;
top: 10px;
}
.content {
position: relative;
top: 10%;
}
.carousel-content {
position: absolute;
top: 50%;
left: 45%;
transform: translate(-40%, -40%);
text-align: center;
z-index: 50;
}
.carousel-title {
font-size: 48px;
color: black;
margin-bottom: 1rem;
font-family: Times New Roman;
}
.slideshow {
position: relative;
height: 100%;
overflow: hidden;
}
.wrapper {
display: flex;
width: 400%;
height: 100%;
top: 10%;
border-radius: 30%;
position: relative;
animation: motion 20s infinite;
}
.slide {
width: 80%;
height: 200%;
border-radius: 30%;
}
.img {
width: 100%;
height: 100%;
object-fit: cover;
}
@keyframes motion {
0% {left: 0;}
10% {left: 0;}
15% {left: -100%;}
25% {left: -100%;}
30% {left: -200%;}
40% {left: -200%;}
45% {left: -300%;}
55% {left: -300%;}
60% {left: -200%;}
70% {left: -200%;}
75% {left: -100%;}
85% {left: -100%;}
90% {left: 0%;}
}
.button {
position: absolute;
bottom: 3%;
left: 50%;
width: 1.3rem;
height: 1.3rem;
background-color: red;
border-radius: 50%;
border: 0.2rem solid #d38800;
outline: none;
cursor: pointer;
transform: translateX(-50%);
z-index: 70;
}
.button-1 {
left: 20%;
}
.button-2 {
left: 25%;
}
.button-3 {
left: 30%;
}
.button-4 {
left: 35%;
}
.button-1:focus~.wrapper {
animation: none;
left: 0%;
}
.button-2:focus~.wrapper {
animation: none;
left: -100%;
}
.button-3:focus~.wrapper {
animation: none;
left: -200%;
}
.button-4:focus~.wrapper {
animation: none;
left: -300%;
}
.button:focus {
background-color: black;
}
</style>
</head>
<body>
<div class= "box">
<h1 class= "title"> Responsive Carousel using CSS </h1>
<div class= "content">
<div class= "carousel-content">
</div>
<div class= "slideshow">
<button class= "button button-1"> </button>
<button class= "button button-2"> </button>
<button class= "button button-3"> </button>
<button class= "button button-4"> </button>
<div class= "wrapper">
<div class= "slide">
<img class= "img" src= "https://www.tutorialspoint.com/static/images/simply-easy-learning.jpg">
</div>
<div class= "slide">
<img class= "img" src="https://wallpapercave.com/wp/wp2782600.jpg">
</div>
<div class= "slide">
<img class= "img" src="https://i.insider.com/5fd90e7ef773c90019ff1293?width=700">
</div>
<div class= "slide">
<img class= "img" src="https://wallpaperaccess.com/full/1164582.jpg">
</div>
</div>
</div>
</div>
</div>
</body>
</html>
CSS Transform属性
为了修改CSS中的可视化格式模型所使用的坐标空间,请使用transform属性。通过这样做,可以对元素应用扭曲、旋转和平移等效果。
语法
transform: none| transform-functions| initial| inherit;
数值
- translate(x, y) − 此函数定义了沿X和Y坐标的平移。
-
translate3d(x, y, z) − 此函数提供了沿X、Y和Z坐标的平移。
-
initial − 将元素设置为其默认值。
-
inherit − 继承父元素的值。
CSS动画
CSS的animation属性允许我们在一定的时间间隔内更改元素的各种样式属性,从而给它一个动画效果。
animation的一些属性如下所示 −
- Animation-name – 它允许我们指定动画的名称,后面可以使用@keyframes来指定要使用该动画执行的CSS规则。
-
Animation-duration – 设置动画的持续时间
-
Animation-timing-function – 表示动画的速度曲线,即动画用于从一组CSS自定义属性更改为另一组CSS自定义属性的时间间隔。
-
Animation-delay – 为给定的时间间隔的起始值设置延迟
@keyframes 用于指定在给定时间段内动画期间需要执行的代码。这是通过在动画期间为特定的“帧”指定CSS属性,从0%(动画开始)到100%(动画结束)进行的。