原生js和jQuery实现淡入淡出轮播效果


Posted in Javascript onDecember 25, 2015

本文实例为大家介绍了基于jQuery实现淡入淡出轮播效果的关键代码,分享给大家供大家参考,具体内容如下:
基本原理:将所有图片绝对定位在同一位置,透明度设为0,然后通过jQuery的淡入淡出实现图片的切换效果。
html代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>一个轮播</title>
<style>
 #scrollPlay{
 width: 730px;
 height: 336px;
 /*overflow: hidden;*/
 }
 #pre{
 position: absolute;
 margin-top: 150px;
 width:30px;
 height: 30px;
 background: #000;
 color:#fff;
 opacity: 0.7;
 text-align: center;
 line-height: 30px;
 font-size: 20px;
 z-index: 10;
 }
 img{
 opacity: 0;
 position: absolute;
 }
 #next{
 position: absolute;
 margin-left:700px;
 margin-top: 150px;
 width:30px;
 height: 30px;
 background: #000;
 color:#fff;
 opacity: 0.7;
 text-align: center;
 line-height: 30px;
 font-size: 20px;
 z-index: 10;
 }
 span{
 display: block;
 width: 15px;
 height: 15px;
 float: left;
 border: 1px solid #fff;


 }
 #buttons{

 position: absolute;
 background: #000;
 margin-top: 300px;
 margin-left: 300px;
 z-index: 10;

 }

 .onactive{
 background: green;
 }
</style>
<script src='jquery.js'></script>
<script src='index.js'></script>
</head>
<body>
 <div id='scrollPlay'>
 <div id='buttons'>
  <span index = 0 class='onactive'></span>
  <span index = 1></span>
  <span index = 2></span>
  <span index = 3></span>
  <span index = 4></span>

 </div>
 <div id='pre'><</div>
 <div id='next'>></div>
 <img src='images/1.jpg' alt='pics' style='opacity:1'>
 <img src='images/2.jpg' alt='pics'>
 <img src='images/3.jpg' alt='pics'>
 <img src='images/4.jpg' alt='pics'>
 <img src='images/5.jpg' alt='pics'>
 </div>
</body>
 
</html>

JS:

$(function(){

 var index = 0;
 var flag = false; //用于判断是否处于动画状态
 //切换函数
 function move(offset){ 
 flag=true;
 //console.log(offset)
 $('img').eq(index).fadeOut('slow',function(){
  if(offset>0){
  if(index ==4){
   index=0; 
  }else{
   //console.log(index);
   index=index+offset;
   //console.log(index);
  }
  }
  if(offset<0){
  if(index==0){
  index=4;
  }else{
  index=index+offset
  }
  }
  $('img').eq(index).fadeTo('slow',1) //使用fadeIn不成功:$('img').eq(index).fadeIn('slow')
  showButton();
  flag=false;
 }); 
 }


 //点击切换上一张
 $('#pre').click(function(){
 if(flag==false){
  move(-1)
 }
 
 })

 //点击切换下一张
 $('#next').click(function(){
 if(flag==false){
  move(1)
 }
 })

 //点击按钮直接切换
 $('span').click(function(){
 if(flag==false){
  var i= $(this).attr('index')
  //console.log(i)
  //console.log(index)
  //console.log(i-index)
  move(i-index) 
  showButton();
 }
 
 })
 
 //高亮显示按钮
 function showButton(){
 if($('span').hasClass('onactive')){
  $('span').removeClass();
 }
 $('span').eq(index).addClass('onactive')
 }


 //自动播放
 var timer;

 function go(){
 timer = setInterval(function(){
  $('#next').trigger('click');
 },3000)
 }
 //鼠标悬停,清除自动播放
 $('#scrollPlay').mouseover(function(){
  clearInterval(timer)
 })

 //鼠标移开,开始自动播放
 $('#scrollPlay').mouseout(function(){
  go();
 })

 go(); 
})

文章最后为大家提了一个小问题,希望大家能给出解决方法。
使用fadeIn淡入时却无效果,最后只能使用fadeTo实现,这是什么原因?
为大家分享一个小例子:原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)
淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透明度的方法, 是按IE规则(0~100)设置, 若改成标准设置方法(0.00~1.00), 下面使用时请考虑浮点精确表达差值.
参数说明:
fadeIn()与fadeOut()均有三个参数,第一个是事件, 必填; 第二个是淡入淡出速度, 正整数, 大小自己权衡, 可选参数; 第三个, 是指定淡入淡出到的透明度值(类似于jQuery中的fadeTo()), 0~100的正整数值, 也是可选参数.

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>原生JS实现淡入淡出效果</title> 
<style> 
/*demo css*/ 
#demo div.box {float:left;width:31%;margin:0 1%} 
#demo div.box h2{margin-bottom:10px} 
#demo div.box h2 input{padding:5px 8px;font-size:14px;font-weight:bolder} 
#demo div.box div{text-indent:10px; line-height:22px;border:2px solid #555;padding:0.5em;overflow:hidden} 
</style> 
<script> 
window.onload = function(){ 
 //底层共用 
 var iBase = { 
 Id: function(name){ 
  return document.getElementById(name); 
 }, 
 //设置元素透明度,透明度值按IE规则计,即0~100 
 SetOpacity: function(ev, v){ 
  ev.filters ? ev.style.filter = 'alpha(opacity=' + v + ')' : ev.style.opacity = v / 100; 
 } 
 } 
 //淡入效果(含淡入到指定透明度) 
 function fadeIn(elem, speed, opacity){ 
 /* 
  * 参数说明 
  * elem==>需要淡入的元素 
  * speed==>淡入速度,正整数(可选) 
  * opacity==>淡入到指定的透明度,0~100(可选) 
  */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 100; 
 //显示元素,并将元素值为0透明度(不可见) 
 elem.style.display = 'block'; 
 iBase.SetOpacity(elem, 0); 
 //初始化透明度变化值为0 
 var val = 0; 
 //循环将透明值以5递增,即淡入效果 
 (function(){ 
  iBase.SetOpacity(elem, val); 
  val += 5; 
  if (val <= opacity) { 
  setTimeout(arguments.callee, speed) 
  } 
 })(); 
 } 
 
 //淡出效果(含淡出到指定透明度) 
 function fadeOut(elem, speed, opacity){ 
 /* 
  * 参数说明 
  * elem==>需要淡入的元素 
  * speed==>淡入速度,正整数(可选) 
  * opacity==>淡入到指定的透明度,0~100(可选) 
  */ 
 speedspeed = speed || 20; 
 opacityopacity = opacity || 0; 
 //初始化透明度变化值为0 
 var val = 100; 
 //循环将透明值以5递减,即淡出效果 
 (function(){ 
  iBase.SetOpacity(elem, val); 
  val -= 5; 
  if (val >= opacity) { 
  setTimeout(arguments.callee, speed); 
  }else if (val < 0) { 
  //元素透明度为0后隐藏元素 
  elem.style.display = 'none'; 
  } 
 })(); 
 } 
 
 
 var btns = iBase.Id('demo').getElementsByTagName('input'); 
 
 btns[0].onclick = function(){ 
 fadeIn(iBase.Id('fadeIn')); 
 } 
 btns[1].onclick = function(){ 
 fadeOut(iBase.Id('fadeOut'),40); 
 } 
 btns[2].onclick = function(){ 
 fadeOut(iBase.Id('fadeTo'), 20, 10); 
 } 
 
} 
</script> 
</head> 
<body> 
 
<!--DEMO start--> 
<div id="demo"> 
 <div class="box"> 
 <h2><input type="button" value="点击淡入" /></h2> 
 <div id="fadeIn" style="display:none"> 
  <p>三水点靠木</p> 
  <p>3water.com</p> 
 </div> 
 <p>三水点靠木是国内专业的网站建设资源.</p> 
 </div> 
 
 <div class="box"> 
 <h2><input type="button" value="点击淡出" /></h2> 
 <div id="fadeOut"> 
  <p>三水点靠木</p> 
  <p>3water.com</p> 
 </div> 
 <p>三水点靠木是国内专业的网站建设资源.</p> 
 </div> 
 
 <div class="box"> 
 <h2><input type="button" value="点击淡出至指定透明度" /></h2> 
 <div id="fadeTo"> 
  
 </div> 
 <p>三水点靠木是国内专业的网站建设资源.</p> 
 </div> 
</div> 
<!--DEMO end--> 
 
</body> 
</html>

以上就是本文的全部内容,希望对大家学习原生js和jQuery实现淡入淡出轮播效果有所帮助。

Javascript 相关文章推荐
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
解决Window10系统下Node安装报错的问题分析
Dec 13 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 Javascript
Vue-resource拦截器判断token失效跳转的实例
Oct 27 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
js获取本日、本周、本月的时间代码
Feb 01 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 #Javascript
尝试动手制作javascript放大镜效果
Dec 25 #Javascript
js操作cookie保存浏览记录的方法
Dec 25 #Javascript
js实现跨域的多种方法
Dec 25 #Javascript
jquery.cookie.js用法实例详解
Dec 25 #Javascript
理解javascript中try...catch...finally
Dec 25 #Javascript
javascript实现简单加载随机色方块
Dec 25 #Javascript
You might like
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php简单图像创建入门实例
2015/06/10 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
django_orm查询性能优化方法
2018/08/20 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
致跳远运动员加油稿
2014/02/11 职场文书
自荐信的基本格式
2014/02/22 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2015年安全生产责任书
2015/01/30 职场文书
区域经理岗位职责
2015/02/02 职场文书
公司酒会主持词
2015/07/02 职场文书