只用CSS的轮播图?快来看一看!

只用CSS的轮播图?快来看一看!

  • 设计
  • 写出html基本结构
  • 加一些基本样式
  • 让他们动起来
  • 鼠标悬停停止
  • 成品代码和效果
  • 本博客其他文章推荐

设计

只用CSS的轮播图?快来看一看!_第1张图片

  • 一个主容器+一个图形链;
  • 图像加分步动画实现轮播;
  • 鼠标移上去可暂停;
  • 显示当前图片页码;

写出html基本结构


<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css轮播title>
head>
<body>
	
	<div class="scroll-photo">
		
		<div class="photos">
			<img src="./photo/1.jpg" alt="">
			<img src="./photo/2.jpg" alt="">
			<img src="./photo/3.jpg" alt="">
			<img src="./photo/4.jpg" alt="">
		div>
		
		<div class="index">
			<ul>
				<li>1li>
				<li>2li>
				<li>3li>
				<li>4li>
			ul>
		div>
	div>
body>
html>

加一些基本样式


现在的效果
只用CSS的轮播图?快来看一看!_第2张图片

让他们动起来

/**
 * 	滚动
 */
div.photos{
	animation:scroll 8s steps(4,end);
	animation-iteration-count: infinite;
}

div.index ul::after{
	animation:index-scroll 8s steps(4,end);
	animation-iteration-count: infinite;
}

@keyframes scroll{
	to{
		transform: translateX(-1600px);
	}
}

@keyframes index-scroll{
	to{
		transform: translateX(200px);
	}
}

现在的效果
只用CSS的轮播图?快来看一看!_第3张图片

鼠标悬停停止

/**
 * 鼠标悬停效果
 */
div.scroll-photo:hover div.photos,
div.scroll-photo:hover div.index ul::after{
	animation-play-state: paused;
}

成品代码和效果


<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css轮播title>
	<style type="text/css">
		/**
		 *	基本样式
		 */
		*{padding: 0;margin: 0;}
		body{
			width: 100vw;
			height: 100vh;
			background: #82ccdd;
			display: flex;
			justify-content: center;
			align-items: center;
		}

		div.scroll-photo{
			position: absolute;
			width: 400px;
			height: 300px;
			overflow: hidden;
			cursor: pointer;
		}

		div.photos{
			position: absolute;
			width: 1600px;
			height: 300px;
			z-index: -1;
		}

		div.photos img{
			position: relative;
			width: 400px;
			height: 300px;
			float: left;
		}

		div.index ul{
			position: absolute;
			display: grid;
			bottom: 20px;
			left: 50%;
			transform: translateX(-50%);
			list-style: none;
			width: 200px;
			grid-template: 1fr/repeat(4,1fr);
			justify-items: center;
		}

		div.index ul::after{
			content: '';
			position: absolute;
			top: 0;
			left: 12.5px;
			width: 25px;
			height: 25px;
			border-radius: 50%;
			z-index: -1;
			background: #d63031;
		}

		div.index ul li{
			position: relative;
			width: 25px;
			height: 25px;
			border-radius: 50%;
			color: #FFF;
			background: rgba(0,0,0,.5);
			display: grid;
			justify-content: center;
			align-items: center;
		}

		/**
		 * 	滚动
		 */
		div.photos{
			animation:scroll 8s steps(4,end);
			animation-iteration-count: infinite;
		}

		div.index ul::after{
			animation:index-scroll 8s steps(4,end);
			animation-iteration-count: infinite;
		}

		@keyframes scroll{
			to{
				transform: translateX(-1600px);
			}
		}

		@keyframes index-scroll{
			to{
				transform: translateX(200px);
			}
		}

		/**
		 * 鼠标悬停效果
		 */
		div.scroll-photo:hover div.photos,
		div.scroll-photo:hover div.index ul::after{
			animation-play-state: paused;
		}
	style>
head>
<body>
	
	<div class="scroll-photo">
		
		<div class="photos">
			<img src="./photo/1.jpg" alt="">
			<img src="./photo/2.jpg" alt="">
			<img src="./photo/3.jpg" alt="">
			<img src="./photo/4.jpg" alt="">
		div>
		
		<div class="index">
			<ul>
				<li>1li>
				<li>2li>
				<li>3li>
				<li>4li>
			ul>
		div>
	div>
body>
html>

成品效果(注:已经测试得知鼠标悬停功能不完美兼容火狐浏览器):
只用CSS的轮播图?快来看一看!_第4张图片

本博客其他文章推荐

原生js获取css伪类元素并设置属性

模仿一个球落地效果,最终停在地面上(仿真效果,CSS实现)

让一个小球无限的弹弹弹~(CSS实现球无限弹动)

如果有一屏幕的爱心,你愿意送给谁?(简单实现原生js、css随机生成521个心)

maven新手上路–创建webapp项目,引入jstl、el依赖及el不解析的问题解决(详细图文)

你可能感兴趣的:(前端)