轮播图制作

<div class="focus">
  <a href="#" class="arrow-l">?</a>
  <a href="#" class="arrow-r">?</a>
  <ul>
    <li><a href="#"><img src="./upload/focus.jpg" alt=""></a></li>
    <li><a href="#"><img src="./upload/focus1.jpg" alt=""></a></li>
    <li><a href="#"><img src="./upload/focus2.jpg" alt=""></a></li>
    <li><a href="#"><img src="./upload/focus3.jpg" alt=""></a></li>
  </ul>
  <ol class="circle">

  </ol>
</div>
.focus {position: relative;float: left;width: 722px;height: 457px;overflow: hidden;}
.focus .arrow-l,
.focus .arrow-r {position: absolute;top: 50%;width: 20px;height: 40px;margin-top: -20px; background-color: rgb(0, 0, 0, 0.2);color: #fff;font-size: 18px;font-family: ‘icomoon‘;line-height: 40px;z-index: 1;}
.focus .arrow-l {display: none;left: 0;}
.focus .arrow-r {display: none;right: 0;}
.focus ul {width: 600%;position: absolute;top: 0;left: 0;}
.focus ul li {float: left;}
.focus .circle {position: absolute; bottom: 15px;left: 50px;}
.focus .circle li{ float: left;width: 8px;height: 8px;margin: 0 3px;border: 2px solid rgba(255, 255, 255, 0.5);border-radius: 50%;cursor: pointer;}
.circle .active { background-color: #fff;}
window.addEventListener(‘load‘, function () {
	var focus = document.querySelector(‘.focus‘);
	var arrowR = document.querySelector(‘.focus .arrow-r‘);
	var arrowL = document.querySelector(‘.focus .arrow-l‘);
	var ul = document.querySelector(‘.focus ul‘);
	var ol = document.querySelector(‘.circle‘);
	// 获取 图片 的宽度
	var focusWidth = focus.offsetWidth;

	// 左右切换鼠标经过隐藏,离开消失
	focus.addEventListener(‘mouseenter‘, function () {
		arrowL.style.display = ‘block‘;
		arrowR.style.display = ‘block‘;
		clearInterval(timer);
		timer = null; // 释放定时器
	});
	focus.addEventListener(‘mouseleave‘, function () {
		arrowL.style.display = ‘none‘;
		arrowR.style.display = ‘none‘;
		timer = setInterval(function () {
			arrowR.click();
		}, 2000);
	});

	// 动态生成原点
	for (var i = 0; i < ul.children.length; i++) {
		var li = document.createElement(‘li‘);
		// 设置自定义属性 索引
		li.setAttribute(‘data-index‘, i);
		ol.appendChild(li);
		// 点击哪个小点就给哪个加选中样式
		li.addEventListener(‘click‘, function () {
			for (var i = 0; i < ol.children.length; i++) {
				ol.children[i].className = ‘‘;
			}
			this.className = ‘active‘;
			// 点击当前 li 获取 索引号
			var index = this.getAttribute(‘data-index‘);
			// 把获取到的索引号给 num 和 circle
			num = circle = index;
			// ul 移动的距离 = -li 的索引号 * 图片的宽度 (负值)
			animate(ul, -index * focusWidth);
		});
	}
	ol.children[0].className = ‘active‘;
	// 克隆第一个 li 放到 ul 的后面
	ul.appendChild(ul.children[0].cloneNode(true));
	// 点击右侧按钮图片滚动
	var num = 0;
	var circle = 0;
	var flag = true;
	arrowR.addEventListener(‘click‘, function (e) {
		e.preventDefault();
		if (flag) {
			flag = false;
			if (num == ul.children.length - 1) {
				ul.style.left = 0;
				num = 0;
			}
			num++;
			animate(ul, -num * focusWidth, function () {
				flag = true; // 开启节流阀
			});
			circle++;
			// 如果circle等于4 说明走到了克隆的 li
			if (circle == ol.children.length) {
				circle = 0;
			}
			circleChange();
		}
	});
	// 点击左侧按钮滚动
	arrowL.addEventListener(‘click‘, function (e) {
		e.preventDefault();
		if (num == 0) {
			num = ul.children.length - 1;
			ul.style.left = -num * focusWidth + ‘px‘;
		}
		num--;
		animate(ul, -num * focusWidth);
		circle--;
		// 如果circle小于0 说明第一张图片,则圆圈改为4
		circle = circle < 0 ? ol.children.length - 1 : circle;
		circleChange();
	});

	// 自动播放
	var timer = setInterval(function () {
		arrowR.click();
	}, 2000);

	// 修改 当前 circle
	function circleChange() {
		for (var i = 0; i < ol.children.length; i++) {
			ol.children[i].className = ‘‘;
		}
		ol.children[circle].className = ‘active‘;
	}

	// 封装动画函数
	function animate(obj, target, callback) {
		clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        var step = (target - obj.offsetLeft) / 10;
    	step = step < 0 ? Math.floor(step) : Math.ceil(step);
    	if (obj.offsetLeft == target) {
      		clearInterval(obj.timer);
      		callback && callback();
    	}
    	obj.style.left = obj.offsetLeft + step + ‘px‘;
  	}, 15)
	}
});

原文地址:https://www.cnblogs.com/article-record/p/12617095.html

时间: 2024-10-14 15:22:42

轮播图制作的相关文章

淘宝店铺首页全屏轮播图制作

淘宝店铺首页全屏轮播图制作 | 浏览:1081 | 更新:2014-09-27 12:03 | 标签: 淘宝 很多朋友都想要做全屏轮播图,接下来我来说说我的经验 工具/原料 美图秀秀 方法/步骤 1.首先要制作或者搜寻图片宽度1920高度610的高画质图片 2.上传到淘宝图片空间,并复制其连接 3.将复制的连接替换到如下图以“jpg”结尾的那个地方.(有3个地方,可用3张图替换) 4.复制代码,进入淘宝店铺装修页面,新建“自定义内容区” 5.将自定义内容区置于顶部,编辑,输入代码界面,黏贴代码,

前端小白案例-商品轮播图制作

知识点:html加CSS布局.html加css布局思维,定位.浮动详解. html代码: <div class="banner"> <div class="pic"> <ul id="pic"> <li style="background-image:url('images/VIP_img1.jpg');left:0;"></li> <li style=&quo

CSS-用伪类制作小箭头(轮播图的左右切换btn)

先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代替,而是用纯css制作. 第一个是left按钮,即prev: .vmc-arrow-left:after { content: "\e079"; } 第二个是right按钮的,也就是next下一张的按钮: .vmc-arrow-right:after { content: "\e

js网站轮播图怎么做如何做?鸡哥教你简单制作效果炫酷

日了狗啦,刚刚鸡哥辛苦码了那么多字全丢了又要重新写,这是第二遍写了...今天鸡哥给小白写个不需要写js原生代码,只需要几个插件和一段通俗易懂得jquery代码就能搞定的轮播图,当然js原生代码写着也不算很繁琐,但是有些浪费时间,更何况很多人并不会用js直接写包括鸡哥,当年在学校还是研究过一段时间js的,当时还独自写了一个轮播图俘获了多少同班妹子的芳心,不过现在是基本废了,这东西要常写,不然忘的很快. 唉,本来还有妹子等着鸡哥呢,我这一大意文章丢了,重新写的话估计来不及了,先打个电话让妹子回家吧~

基于css制作轮播图的部分效果

在轮播图中,我们可以通过鼠标在特定位置上的滑动来实现元素背景的改变.通常在制作轮播图时,我们首先想到的是js中的交互.可是,如果我们无法使用js,只能单纯的靠css又该如何实现这一效果呢?下面,本人将向大家介绍一种最近实验出来的一种方法. 在介绍这种方法之前,本人觉得对于css中的某些伪类选择器有必要进行进一步的分析. hover这个伪类选择器表示的是当鼠标移动到元素上时元素的反应.这一特性与js中的mousemove事件十分的相近,那么其是不是可以被近视地看做该事件呢?下面我们来做一个例子:

angularjs1 制作自定义轮播图(汉字导航)

本来想用swiper插件的,可是需求居然说要汉字当导航栏这就没办法了,只能自己写. directive // 自定义指令: Home页面的轮播图 app.directive('swiperImg', ["$interval", function ($interval) { return { restrict: 'E', replace: true, scope: { imgList: "=", tabList: "=", autoplay : &

猫猫学iOS 之广告轮播图,collectionView制作

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果图 不多说,好不好先看效果,之前做过一个scrollView的轮播图,但是很局限,很多多余代码,今天猫猫重新做了一个用collectionView的流水布局做的一个,可以拿去做广告轮播,也可以做系统新特性哦,来,看下效果吧. 源码共享:https://github.com/znycat/NYCarouselView 很久很久以前就想做了.总而言之,猫猫代码有

层叠轮播图的简易制作

之前做过很多不同样式的轮播图,不是通过改变left值使图片左右移动的,就是改变透明度实现轮播图的,偶然在网易云上看到了层叠轮播图,它转换图片的方式和其他轮播图有些不同,我从来没做过这种轮播图,思考了很久该用什么方法做,终于做出来了一个简陋的成品.由于轮播图的图片是网上找来的,所以我做了模糊处理,用清晰的图片效果更好,这里是我的一个演示(没有录制鼠标):  思路和方法 我所能想出的最简单的方法就是先给轮播图中的几张图片特定的class值,再通过改变图片class的值来改变他们的位置 话不多说,上代

Flask实战第50天:cms添加轮播图的模态对话框制作

编辑cms_banners.html, 在{% block main_content%}中加上表给内容如下 {% block main_content %} <table class="table table-bordered"> <thead> <tr> <th>名称</th> <th>图片链接</th> <th>跳转链接</th> <th>优先级</th&g