如何使用CSS创建旋转木马

如何使用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%(动画结束)进行的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

CSS 精选笔记