澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

第一屏页面文章展开,手机端第一屏页面文章的

2019-10-05 作者:澳门新萄京赌场网址   |   浏览(179)

页面营造和js前端不得不说的那点事情

2012/10/30 · CSS, JavaScript · 1 评论 · CSS, Javascript

来源:微博UDC – 张传亮

用作天涯论坛的页面营造筑工程程师,首要职务正是运用html&css,高素质的做到静态页面包车型大巴造作,保障项指标限时完毕。而页面必要的js效果则交由下游的js前端技术员去做。在博客园,那五个岗位是分其他。但在我们的思考一贯里大概以为那四个岗位应由一人来实现最棒,究竟,页面构建筑工程程师写的html结构不自然是js程序员想要的这种,js程序猿恐怕有更急速的办法。所以,在页面创设在此之前最CANON与js程序员调换一下,把贯彻方案规定好。

图片 1

但在实际上项目流程中,当举办到页面营造的时候,产品经营只怕还没安插到js能源,那时大家只好遵照产品的须求和友好的主张去写html结构,不唯有要考虑到设计稿的还原度、浏览器的包容性、未来或许要增添的新效率的预知地点,还要思索什么写html结构能让js最便捷的做到产品的交互效率。作为一名有义务感的页面创设筑工程程师,表示亚苍岩山大!所以,大家常常查阅页面源码时,会发觉那样的评释,用来报告js程序猿怎么去操作dom结构。

图片 2

神迹为了变成最简,大家要考虑深远,前一阵子的London奥林匹克运动会,今日头条首页左边要增添一个奥林匹克运动金牌榜的模块,供给有收起和进展的按键,用来显示分化的剧情。

图片 3

对网址来讲那是很松散平常的相互功用。具体html实现大概有同学会想到,做多个div,各自包罗展开的内容和抽取的剧情。在点击展开开关时出现多少个,另一个藏匿;而在点击收起的时候做反而的管理。这种事自个儿也并未有对与错,能促效用益就好。但作为出现在微博首页的模块,并且出未来率先屏的岗位,对质量的优化确定是要做足的。能尽可能在我们css这一层做的,决不放到js这边去做。作者的处理情势是把收起开展的体制都写好,放在一同,让js在暗中认可张开或点击展开的时候展现turn_olym_on,在点击收起的时候改变为turn_olym_off,那样js就只是更改二个class名的代码量,而对于进行收起的三个按键,作者也经过退换的class名来展现和掩盖。

具体html代码:
图片 4

在这里把富有应用的代码全部放在一齐,把某种情形时决不显示的遮蔽掉,比方打开状态时,class=”show_less W_linecolor”的div和实行的按键class=”W_moredown”不用呈现,就足以在最外层的div上写:
图片 5

css目前隐没掉这两成分:
图片 6

而当收起的时候,最外层的div就改成:
图片 7

css则把在此之前隐敝的四个要素彰显出来,并把必要遮盖的排行的榜单四五名class=”no_45″的tr标签、赛事注重的class=”show_more”及接受的按键class=”W_moreup”隐藏:
图片 8

诸有此类,就只须要js在点击收起的时候把turn_olym_on换成turn_olym_off,而点击展开的时候把turn_olym_off换成turn_olym_on就能够了,其他的藏身显示全体有css来化解。

总结:

问询一些上下游职业的知识,让上下游关系更顺畅,提升级程序员作效能,是大家一同的目的。
页面创设的劳作,面前境遇器重重的挑战,这两天html5的新标签、高档浏览器原生支持的种种api,还会有css3极其有趣的新属性等等。。。都急需大家去学学,不求完全领悟,但求能精晓谙习,能精通是怎么回事。把学到的新知识应用到实在项目中,对公司对协会对和谐都有帮忙~

元芳,你怎么看?

赞 收藏 1 评论

图片 9

图片 10

手提式有线电话机端第一屏页面作品的进行和遮掩,第一屏页面小说张开

     本人做的是手机端的前端开采,事事随地都得从手提式有线电话机客商的体会起先思索。大家都知道手提式有线电话机相对于pc来讲要小非常多,所要容纳的事物相对于pc来讲也要相当少。一些根本的事物又希望顾客在张开手提式有线电话机网站的首先屏就会观察,那时将在全心全意地将根本表现给客户。

      内容又由文字,图片等等新闻整合,就算文字过长,就展现冗余,这里就为大家介绍一个什么隐敝多余文字和开展多余文字的章程。

      需求的本事支持:CSS3,一般jQuery库;

 

HTML代码如下:

Html代码  图片 11

  1. <div class="slideup">This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.  
  2. </div>  
  3. <a href="javascript:void(0)" class="btn_click arrowdown">打开越多</a>  

 

CSS代码如下:

Css代码  图片 12

  1. .slideup{width:320px;height:auto;overflow:hidden;margin:0 auto;border:1px solid #fff;text-align: center;padding: 10px;background: #999;color:#fff;font-weight:bold;border-radius: 0 0 8px 8px;}  
  2. .the_height{height: 450px;}  
  3. .slidedown{height: auto;}  
  4. .btn_click{display: block;width: 120px;height: 30px;position:relative;line-height:30px;margin: 10px auto;color: #第一屏页面文章展开,手机端第一屏页面文章的展开和隐藏。fff;background: #999;text-align: center;text-decoration: none;text-indent:-1em;border-radius: 5px;}  
  5. .arrowup:after{content: "";width: 8px;height: 8px;border: 3px double #fff;position: absolute;top: 10px;right:18px;border-width: 3px 3px 0 0;-webkit-transform:rotate(-45deg);}  
  6. .arrowup:before{content: "";width: 6px;height: 6px;border: 1px solid #fff;position: absolute;top: 15px;right:20px;border-width: 1px 1px 0 0;-webkit-transform:rotate(-45deg);}  
  7. .arrowdown:after{content: "";width: 8px;height: 8px;border: 3px double #fff;position: absolute;top: 8px;right:18px;border-width: 3px 3px 0 0;-webkit-transform:rotate(135deg);}  
  8. .arrowdown:before{content: "";width: 6px;height: 6px;border: 1px solid #fff;position: absolute;top: 7px;right:20px;border-width: 1px 1px 0 0;-webkit-transform:rotate(135deg);}  

 

js代码如下:

Js代码  图片 13

  1. $('.btn_click').click(function(){  
  2.     var class_lists=$('.slideup').attr('class');  
  3.     var class_index=class_lists.indexOf('isdown');  
  4.     if(class_index==-1){  
  5.     $('.slideup').slideDown().addClass('isdown slidedown');  
  6.     $('.btn_click').html("收起越多").removeClass('arrowdown').addClass('arrowup');  
  7. }else{  
  8.     $('.slideup').slideDown().addClass('the_height').removeClass('isdown slidedown');  
  9.     $('.btn_click').html("打开更加的多").removeClass('arrowup').addClass('arrowdown');  
  10. }  
  11. });  
  12. $(document).ready(function(){  
  13.     var article_height=$('.slideup').height();  
  14.     //alert(article_height);  
  15.     if(article_height<=450){  
  16.         $('.btn_click').hide();  
  17.         $('.slideup').addClass('slidedown');  
  18.     }else{  
  19.         $('.slideup').addClass('the_height');  
  20.     }  
  21. });  

     

      最终效果如下:

      假设文字中度大于450px,就隐藏,如下:

图片 14
      通过点击张开越多按键就可以进行越多文字,如下:

图片 15      

此间也是有多少个重点和大家说下:

1.页面第三遍加载时的境况:依据按键的景色分,一是作品中度超过450px时,开关遮蔽;二是小说中度小于450px时,开关突显。当开关显示时,又分为五个情景,即为小说收起的意况和小说实行的状态;

2.CSS最主要解析:.slideup:设置页面加载时页面包车型客车起来样式;.the_height:设置页面加载时,假使作品中度当先450px时,就加多该类;.slidedown:设置小说展开时的体裁;.btn_click:设置按键的起头样式;.arrowup:after,.arrowup:before及.arrowdown:after,.arrowdown:before分别为作品张开和接纳时的箭头的势头设置;

3.js代码剖析:当HTML文书档案加载落成后,先做四个剖断,如果小说中度小于450px,那么就无独有偶展现小说,张开收起开关掩饰;如若文章高度抢先450px,就将稿子的中度设置为450px,打开收起开关显示。接下来,假若小说的惊人当先450px,最初状态为文章凌驾部分遮掩,点击按键后,作品超过部分显得,同期按键的情况改动。

      那是敌方机端著作展现和遮盖的一个总计,望多多调换。图片 16

本身做的是手提式无线话机端的前端开荒,事事处处都得从手提式无线话机客商的体验开头思虑。大家...

 本文给大家分享的是采纳原生JS和JQ两种艺术分别完成均等的图纸轮播特效,拾分的实用,也充足方便大家对待学习原生js和jQuery,有亟待的同伙能够参见下。

1)首先是页面包车型客车协会有个别

对此自个儿这种左右切换式

1.第一是个外围部分(其实也便是最外边的完全wrapper)

2.接着正是你设置图片轮播的地点(也正是一个banner吧)

3.然后是二个图片组(能够用新的div 也得以平昔动用 ul-->li方式)

4.然后是图片两端的左箭头和右箭头
5.然后是二个晶莹剔透背景层,放在图片底部

6.然后是一个图纸描述info层,放在透明背景层的左下角(div 或 ul-->li)

7.然后是一个开关层,用来牢固图片组的index吧,放在透明背景层的右下角(div 或 ul-->li)

因而,能够先构造出html结构

<div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
      <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>

周旋于事先,只是扩张了三个箭头img标签

2)CSS样式部分(图片组的拍卖)跟淡入淡出式就不均等了

淡入淡出只须求展现只怕遮蔽对应序号的图样就行了,直接通过display来设定

左右切换式则是选拔图片li 浮动,父层元素ul 总宽为总图片宽,并设定为有限banner宽度下遮盖高出宽度的一些

然后当想切换成某序号的图样时,则利用其ul 定位 left样式设定相应属性值达成

比方说突显第一张图纸开始定位left为0px, 要想显示第二张图纸则须要left:-400px 管理

<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>

(3)页面基本已经营造好久方可拓宽js的管理了

一、jQuery方式

照常先说jq管理

1.全局变量等

1 var curIndex = 0, //当前index
2      imgLen = $(".imgList li").length; //图片总数

2.电动切换电火花计时器管理

// 定时器自动变换2.5秒每次
var autoChange = setInterval(function(){ 
  if(curIndex < imgLen-1){ 
    curIndex   ; 
  }else{ 
    curIndex = 0;
  }
  //调用变换处理函数
  changeTo(curIndex); 
},2500);

3.为左右箭头增多事件处理

左箭头

//左箭头滑入滑出事件处理
$("#prev").hover(function(){ 
  //滑入清除定时器
  clearInterval(autoChange);
},function(){ 
  //滑出则重置定时器
  autoChangeAgain();
});
//左箭头点击处理
$("#prev").click(function(){ 
  //根据curIndex进行上一个图片处理
  curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
  changeTo(curIndex);
});

右箭头

//右箭头滑入滑出事件处理
 $("#next").hover(function(){ 
   //滑入清除定时器
   clearInterval(autoChange);
 },function(){ 
   //滑出则重置定时器
   autoChangeAgain();
 });
 //右箭头点击处理
 $("#next").click(function(){ 
   curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
   changeTo(curIndex);
 });

当中autoChangeAgain()正是二个重新恢复设置沙漏函数

//清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen-1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }

里面changeTo()正是贰个图片切换的管理函数

1 function changeTo(num){ 
2     var goLeft = num * 400;
3     $(".imgList").animate({left: "-"   goLeft   "px"},500);
4     $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
5     $(".indexList").find("li").removeClass("indexOn").eq(num).addClass("indexOn");
6   }

每传入三个图片序号,则按理实行goLeft

4.为右下角的那么些li 开关绑定事件处理

//对右下角按钮index进行事件绑定处理等
  $(".indexList").find("li").each(function(item){ 
    $(this).hover(function(){ 
      clearInterval(autoChange);
      changeTo(item);
      curIndex = item;
    },function(){ 
      autoChangeAgain();
    });
  });

jq正是这么,简便,原生代码量就某些多了

一体化代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>图片轮播 jq(左右切换)</title>
<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}
  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>
</head>
<body>
  <div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
  </div>
  <script type="text/javascript" src="./js/jquery.min.js"></script>
  <script type="text/javascript">
  var curIndex = 0, //当前index
      imgLen = $(".imgList li").length; //图片总数
     // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen-1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);
   //左箭头滑入滑出事件处理
  $("#prev").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //左箭头点击处理
  $("#prev").click(function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  });
  //右箭头滑入滑出事件处理
  $("#next").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //右箭头点击处理
  $("#next").click(function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  });
  //对右下角按钮index进行事件绑定处理等
  $(".indexList").find("li").each(function(item){ 
    $(this).hover(function(){ 
      clearInterval(autoChange);
      changeTo(item);
      curIndex = item;
    },function(){ 
      autoChangeAgain();
    });
  });
  //清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen-1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }
  function changeTo(num){ 
    var goLeft = num * 400;
    $(".imgList").animate({left: "-"   goLeft   "px"},500);
    $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
    $(".indexList").find("li").removeClass("indexOn").eq(num).addClass("indexOn");
  }
  </script>
</body>
</html>

二、js 原生完毕

js原生大致也正是模仿jq的兑现思路

1.全局变量等

1 var curIndex = 0, //当前index
2       imgArr = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //获取图片组
3       imgLen = imgArr.length,
4       infoArr = getElementsByClassName("infoList")[0].getElementsByTagName("li"), //获取图片info组
5       indexArr = getElementsByClassName("indexList")[0].getElementsByTagName("li"); //获取控制index组

2.自动切换计时器管理

 1   // 定时器自动变换2.5秒每次
 2 var autoChange = setInterval(function(){ 
 3   if(curIndex < imgLen -1){ 
 4     curIndex   ; 
 5   }else{ 
 6     curIndex = 0;
 7   }
 8   //调用变换处理函数
 9   changeTo(curIndex); 
10 },2500);

长久以来的,有三个重新设贮存大计时器的函数

 1 //清除定时器时候的重置定时器--封装
 2  function autoChangeAgain(){ 
 3      autoChange = setInterval(function(){ 
 4      if(curIndex < imgLen -1){ 
 5        curIndex   ;
 6      }else{ 
 7        curIndex = 0;
 8      }
 9    //调用变换处理函数
10      changeTo(curIndex); 
11    },2500);
12    }

3.因为有一对class呀,所以来多少个class函数的模仿也是急需的

 1 //通过class获取节点
 2  function getElementsByClassName(className){ 
 3    var classArr = [];
 4    var tags = document.getElementsByTagName('*');
 5    for(var item in tags){ 
 6      if(tags[item].nodeType == 1){ 
 7        if(tags[item].getAttribute('class') == className){ 
 8          classArr.push(tags[item]);
 9        }
10      }
11    }
12    return classArr; //返回
13  }
14  
15  // 判断obj是否有此class
16  function hasClass(obj,cls){  //class位于单词边界
17    return obj.className.match(new RegExp('(\s|^)'   cls   '(\s|$)'));
18   }
19   //给 obj添加class
20  function addClass(obj,cls){ 
21    if(!this.hasClass(obj,cls)){ 
22       obj.className  = cls;
23    }
24  }
25  //移除obj对应的class
26  function removeClass(obj,cls){ 
27    if(hasClass(obj,cls)){ 
28      var reg = new RegExp('(\s|^)'   cls   '(\s|$)');
29         obj.className = obj.className.replace(reg,'');
30    }
31  }

4.要左右切换,就得模拟jq的animate-->left .

本身的思路就是动态地设置element.style.left 举办固定。因为要有多少个安分守己的历程,所以加上的一丢丢阶段管理。

固定的时候left的安装也可能有一点复杂的..要思索方向等景况

 1 //图片组相对原始左移dist px距离
 2  function goLeft(elem,dist){ 
 3    if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style="left:0;"
 4      elem.style.left = "0px";
 5    }
 6    var toLeft; //判断图片移动方向是否为左
 7    dist = dist   parseInt(elem.style.left); //图片组相对当前移动距离
 8    if(dist<0){  
 9      toLeft = false;
10      dist = Math.abs(dist);
11    }else{ 
12      toLeft = true;
13    }
14    for(var i=0;i<= dist/20;i  ){ //这里设定缓慢移动,10阶每阶40px
15      (function(_i){ 
16        var pos = parseInt(elem.style.left); //获取当前left
17        setTimeout(function(){ 
18          pos  = (toLeft)? -(_i * 20) : (_i * 20); //根据toLeft值指定图片组位置改变
19          //console.log(pos);
20          elem.style.left = pos   "px";
21        },_i * 25); //每阶间隔50毫秒
22      })(i);
23    }
24  }

地点也看出了,作者开首了left的值为0px

本身试过了,即便不起来或许把初步的left值写在行内css样式表里边,就总会报错取不到

因此一向在js中最初化或许在html中内嵌起始化也可。

5.接下来正是切换的函数达成了,比如要切换成序号为num的图形

 1 //左右切换处理函数
 2   function changeTo(num){ 
 3     //设置image
 4     var imgList = getElementsByClassName("imgList")[0];
 5     goLeft(imgList,num*400); //左移一定距离
 6     //设置image 的 info
 7     var curInfo = getElementsByClassName("infoOn")[0];
 8     removeClass(curInfo,"infoOn");
 9     addClass(infoArr[num],"infoOn");
10     //设置image的控制下标 index
11     var _curIndex = getElementsByClassName("indexOn")[0];
12     removeClass(_curIndex,"indexOn");
13     addClass(indexArr[num],"indexOn");
14   }

6.然后再给左右箭头还会有右下角那堆index绑定事件管理

 1 //给左右箭头和右下角的图片index添加事件处理
 2  function addEvent(){
 3   for(var i=0;i<imgLen;i  ){ 
 4     //闭包防止作用域内活动对象item的影响
 5     (function(_i){ 
 6     //鼠标滑过则清除定时器,并作变换处理
 7     indexArr[_i].onmouseover = function(){ 
 8       clearTimeout(autoChange);
 9       changeTo(_i);
10       curIndex = _i;
11     };
12     //鼠标滑出则重置定时器处理
13     indexArr[_i].onmouseout = function(){ 
14       autoChangeAgain();
15     };
16      })(i);
17   }
18  
19   //给左箭头prev添加上一个事件
20   var prev = document.getElementById("prev");
21   prev.onmouseover = function(){ 
22     //滑入清除定时器
23     clearInterval(autoChange);
24   };
25   prev.onclick = function(){ 
26     //根据curIndex进行上一个图片处理
27     curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
28     changeTo(curIndex);
29   };
30   prev.onmouseout = function(){ 
31     //滑出则重置定时器
32     autoChangeAgain();
33   };
34  
35    //给右箭头next添加下一个事件
36   var next = document.getElementById("next");
37   next.onmouseover = function(){ 
38     clearInterval(autoChange);
39   };
40   next.onclick = function(){ 
41     curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
42     changeTo(curIndex);
43   };
44   next.onmouseout = function(){ 
45     autoChangeAgain();
46   };
47 }

7.谈到底的末段,没啥了. 噢好像还要调用一下下拾壹分 add伊芙nt() ..

全体代码  代码量有些冗杂..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>图片轮播 js原生(左右切换)</title>
<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>
</head>
<body>
  <div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
  </div>
  <script type="text/javascript">
  var curIndex = 0, //当前index
      imgArr = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //获取图片组
      imgLen = imgArr.length,
      infoArr = getElementsByClassName("infoList")[0].getElementsByTagName("li"), //获取图片info组
      indexArr = getElementsByClassName("indexList")[0].getElementsByTagName("li"); //获取控制index组
     // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen -1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);

  //清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen -1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }

  //调用添加事件处理
  addEvent();

  //给左右箭头和右下角的图片index添加事件处理
 function addEvent(){
  for(var i=0;i<imgLen;i  ){ 
    //闭包防止作用域内活动对象item的影响
    (function(_i){ 
    //鼠标滑过则清除定时器,并作变换处理
    indexArr[_i].onmouseover = function(){ 
      clearTimeout(autoChange);
      changeTo(_i);
      curIndex = _i;
    };
    //鼠标滑出则重置定时器处理
    indexArr[_i].onmouseout = function(){ 
      autoChangeAgain();
    };
     })(i);
  }

  //给左箭头prev添加上一个事件
  var prev = document.getElementById("prev");
  prev.onmouseover = function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  };
  prev.onclick = function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  };
  prev.onmouseout = function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  };

   //给右箭头next添加下一个事件
  var next = document.getElementById("next");
  next.onmouseover = function(){ 
    clearInterval(autoChange);
  };
  next.onclick = function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  };
  next.onmouseout = function(){ 
    autoChangeAgain();
  };
}

  //左右切换处理函数
  function changeTo(num){ 
    //设置image
    var imgList = getElementsByClassName("imgList")[0];
    goLeft(imgList,num*400); //左移一定距离
    //设置image 的 info
    var curInfo = getElementsByClassName("infoOn")[0];
    removeClass(curInfo,"infoOn");
    addClass(infoArr[num],"infoOn");
    //设置image的控制下标 index
    var _curIndex = getElementsByClassName("indexOn")[0];
    removeClass(_curIndex,"indexOn");
    addClass(indexArr[num],"indexOn");
  }


  //图片组相对原始左移dist px距离
  function goLeft(elem,dist){ 
    if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style="left:0;"
      elem.style.left = "0px";
    }
    var toLeft; //判断图片移动方向是否为左
    dist = dist   parseInt(elem.style.left); //图片组相对当前移动距离
    if(dist<0){  
      toLeft = false;
      dist = Math.abs(dist);
    }else{ 
      toLeft = true;
    }
    for(var i=0;i<= dist/20;i  ){ //这里设定缓慢移动,10阶每阶40px
      (function(_i){ 
        var pos = parseInt(elem.style.left); //获取当前left
        setTimeout(function(){ 
          pos  = (toLeft)? -(_i * 20) : (_i * 20); //根据toLeft值指定图片组位置改变
          //console.log(pos);
          elem.style.left = pos   "px";
        },_i * 25); //每阶间隔50毫秒
      })(i);
    }
  }

  //通过class获取节点
  function getElementsByClassName(className){ 
    var classArr = [];
    var tags = document.getElementsByTagName('*');
    for(var item in tags){ 
      if(tags[item].nodeType == 1){ 
        if(tags[item].getAttribute('class') == className){ 
          classArr.push(tags[item]);
        }
      }
    }
    return classArr; //返回
  }

  // 判断obj是否有此class
  function hasClass(obj,cls){  //class位于单词边界
    return obj.className.match(new RegExp('(\s|^)'   cls   '(\s|$)'));
   }
   //给 obj添加class
  function addClass(obj,cls){ 
    if(!this.hasClass(obj,cls)){ 
       obj.className  = cls;
    }
  }
  //移除obj对应的class
  function removeClass(obj,cls){ 
    if(hasClass(obj,cls)){ 
      var reg = new RegExp('(\s|^)'   cls   '(\s|$)');
         obj.className = obj.className.replace(reg,'');
    }
  }

  </script>
</body>
</html>

 

     自身做的是手提式有线电话机端的前端开采,事事随处都得从手提式有线电话机顾客的心得初阶牵记。大家都知晓手机相对于pc来讲要小非常多,所要容纳的东西相对于pc来讲也要少之甚少。一些主要的东西又希望客户在开荒手提式无线电话机网址的第一屏就会看见,那时将在尽量地将重大表现给顾客。

(1)首先是页面包车型大巴布局局地

      内容又由文字,图片等等音信整合,假若文字过长,就显得冗余,这里就为大家介绍一个哪些隐蔽多余文字和实行多余文字的不二秘技。

对此小编这种左右切换式

      须求的本事协助:CSS3,一般jQuery库;

1.率先是个外围部分(其实也正是最外边的总体wrapper)

 

2.接着正是你设置图片轮播的地点(也正是五个banner吧)

HTML代码如下:

3.然后是多个图片组(能够用新的div 也足以一直利用 ul-->li方式)

Html代码  图片 17

4.然后是图表两端的左箭头和右箭头
5.然后是三个晶莹剔透背景层,放在图片尾部

  1. <div class="slideup">This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.This is a test about javascript function slideUp and slideDown.  
  2. </div>  
  3. <a href="javascript:void(0)" class="btn_click arrowdown">张开越来越多</a>  

6.然后是一个图形描述info层,放在透明背景层的左下角(div 或 ul-->li)

 

7.然后是一个按键层,用来定位图片组的index吧,放在透明背景层的右下角(div 或 ul-->li)

CSS代码如下:

透过,能够先构造出html结构

Css代码  图片 18

<div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
      <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
  </div>
  1. .slideup{width:320px;height:auto;overflow:hidden;margin:0 auto;border:1px solid #fff;text-align: center;padding: 10px;background: #999;color:#fff;font-weight:bold;border-radius: 0 0 8px 8px;}  
  2. .the_height{height: 450px;}  
  3. .slidedown{height: auto;}  
  4. .btn_click{display: block;width: 120px;height: 30px;position:relative;line-height:30px;margin: 10px auto;color: #fff;background: #999;text-align: center;text-decoration: none;text-indent:-1em;border-radius: 5px;}  
  5. .arrowup:after{content: "";width: 8px;height: 8px;border: 3px double #fff;position: absolute;top: 10px;right:18px;border-width: 3px 3px 0 0;-webkit-transform:rotate(-45deg);}  
  6. .arrowup:before{content: "";width: 6px;height: 6px;border: 1px solid #fff;position: absolute;top: 15px;right:20px;border-width: 1px 1px 0 0;-webkit-transform:rotate(-45deg);}  
  7. .arrowdown:after{content: "";width: 8px;height: 8px;border: 3px double #fff;position: absolute;top: 8px;right:18px;border-width: 3px 3px 0 0;-webkit-transform:rotate(135deg);}  
  8. .arrowdown:before{content: "";width: 6px;height: 6px;border: 1px solid #fff;position: absolute;top: 7px;right:20px;border-width: 1px 1px 0 0;-webkit-transform:rotate(135deg);}  

绝对于事先,知识充实了多个箭头img标签

 

(2)CSS样式部分(图片组的管理)跟淡入淡出式就不平等了

js代码如下:

淡入淡出只要求浮现只怕隐敝对应序号的图纸就行了,直接通过display来设定

Js代码  图片 19

左右切换式则是使用图片li 浮动,父层成分ul 总宽为总图片宽,并设定为有限banner宽度下埋伏超越宽度的有的

  1. $('.btn_click').click(function(){  
  2.     var class_lists=$('.slideup').attr('class');  
  3.     var class_index=class_lists.indexOf('isdown');  
  4.     if(class_index==-1){  
  5.     $('.slideup').slideDown().addClass('isdown slidedown');  
  6.     $('.btn_click').html("收起更加多").removeClass('arrowdown').addClass('arrowup');  
  7. }else{  
  8.     $('.slideup').slideDown().addClass('the_height').removeClass('isdown slidedown');  
  9.     $('.btn_click').html("张开越多").removeClass('arrowup').addClass('arrowdown');  
  10. }  
  11. });  
  12. $(document).ready(function(){  
  13.     var article_height=$('.slideup').height();  
  14.     //alert(article_height);  
  15.     if(article_height<=450){  
  16.         $('.btn_click').hide();  
  17.         $('.slideup').addClass('slidedown');  
  18.     }else{  
  19.         $('.slideup').addClass('the_height');  
  20.     }  
  21. });  

下一场当想切换来某序号的图形时,则应用其ul 定位 left样式设定相应属性值实现

     

举个例子说呈现第一张图纸早先定位left为0px, 要想体现第二张图片则须要left:-400px 管理

      最后效果如下:

<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>

      借使文字中度大于450px,就隐藏,如下:

(3)页面基本已经创设好久得以开展js的管理了

图片 20
      通过点击展开更加的多开关就能够进行更加多文字,如下:

一、jQuery方式

图片 21      

照常先说jq管理

此间也是有多少个根本和豪门说下:

1.全局变量等

1.页面率先次加载时的动静:依据开关的情事分,一是小说中度超越450px时,按键隐敝;二是小说中度小于450px时,按键彰显。当开关突显时,又分为七个意况,即为作品收起的气象和文章展开的景色;

 var curIndex = 0, //当前index
      imgLen = $(".imgList li").length; //图片总数

2.CSS第一解析:.slideup:设置页面加载时页面包车型地铁初步样式;.the_height:设置页面加载时,如果小说中度超越450px时,就增添该类;.slidedown:设置文章打开时的体制;.btn_click:设置开关的上马样式;.arrowup:after,.arrowup:before及.arrowdown:after,.arrowdown:before分别为文章打开和选用时的箭头的趋向设置;

2.自动切换机械漏刻管理

3.js代码解析:当HTML文书档案加载达成后,先做贰个论断,假若小说中度小于450px,那么就见惯不惊显示小说,张开收起开关隐敝;若是小说中度超越450px,就将稿子的冲天设置为450px,展开收起开关展现。接下来,假如小说的惊人超过450px,开头状态为小说超越部分遮盖,点击开关后,文章高出部分显得,同不时候开关的状态改换。

   // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen-1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);

      那是对手提式无线电话机端文章彰显和隐身的三个计算,望多多交换。图片 22

3.为左右箭头增添事件管理

左箭头

  //左箭头滑入滑出事件处理
  $("#prev").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //左箭头点击处理
  $("#prev").click(function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  });

右箭头

 //右箭头滑入滑出事件处理
  $("#next").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //右箭头点击处理
  $("#next").click(function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  });

中间autoChangeAgain()就是二个重新载入参数电磁照应计时器函数

//清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen-1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }

里头changeTo()便是三个图形切换的管理函数

function changeTo(num){ 
    var goLeft = num * 400;
    $(".imgList").animate({left: "-"   goLeft   "px"},500);
    $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
    $(".indexList").find("li").removeClass("indexOn").eq(num).addClass("indexOn");
  }

每传入多个图形序号,则按理进行goLeft

4.为右下角的那些li 按键绑定事件管理

//对右下角按钮index进行事件绑定处理等
  $(".indexList").find("li").each(function(item){ 
    $(this).hover(function(){ 
      clearInterval(autoChange);
      changeTo(item);
      curIndex = item;
    },function(){ 
      autoChangeAgain();
    });
  });

jq便是这般,简便,原生代码量就某些多了

完全代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>图片轮播 jq(左右切换)</title>
<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}
  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>
</head>
<body>
  <div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
  </div>
  <script type="text/javascript" src="./js/jquery.min.js"></script>
  <script type="text/javascript">
  var curIndex = 0, //当前index
      imgLen = $(".imgList li").length; //图片总数
     // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen-1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);
   //左箭头滑入滑出事件处理
  $("#prev").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //左箭头点击处理
  $("#prev").click(function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  });
  //右箭头滑入滑出事件处理
  $("#next").hover(function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  },function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  });
  //右箭头点击处理
  $("#next").click(function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  });
  //对右下角按钮index进行事件绑定处理等
  $(".indexList").find("li").each(function(item){ 
    $(this).hover(function(){ 
      clearInterval(autoChange);
      changeTo(item);
      curIndex = item;
    },function(){ 
      autoChangeAgain();
    });
  });
  //清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen-1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }
  function changeTo(num){ 
    var goLeft = num * 400;
    $(".imgList").animate({left: "-"   goLeft   "px"},500);
    $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
    $(".indexList").find("li").removeClass("indexOn").eq(num).addClass("indexOn");
  }
  </script>
</body>
</html>

二、js 原生落成

js原生大概也正是仿照jq的贯彻思路

1.全局变量等

var curIndex = 0, //当前index
      imgArr = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //获取图片组
      imgLen = imgArr.length,
      infoArr = getElementsByClassName("infoList")[0].getElementsByTagName("li"), //获取图片info组
      indexArr = getElementsByClassName("indexList")[0].getElementsByTagName("li"); //获取控制index组

2.电动切换电磁料理计时器管理

    // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen -1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);

同样的,有一个复位机械漏刻的函数

 //清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen -1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }

3.因为有一部分class呀,所以来多少个class函数的效仿也是急需的

 //通过class获取节点
  function getElementsByClassName(className){ 
    var classArr = [];
    var tags = document.getElementsByTagName('*');
    for(var item in tags){ 
      if(tags[item].nodeType == 1){ 
        if(tags[item].getAttribute('class') == className){ 
          classArr.push(tags[item]);
        }
      }
    }
    return classArr; //返回
  }

  // 判断obj是否有此class
  function hasClass(obj,cls){  //class位于单词边界
    return obj.className.match(new RegExp('(\s|^)'   cls   '(\s|$)'));
   }
   //给 obj添加class
  function addClass(obj,cls){ 
    if(!this.hasClass(obj,cls)){ 
       obj.className  = cls;
    }
  }
  //移除obj对应的class
  function removeClass(obj,cls){ 
    if(hasClass(obj,cls)){ 
      var reg = new RegExp('(\s|^)'   cls   '(\s|$)');
         obj.className = obj.className.replace(reg,'');
    }
  }

4.要左右切换,就得模拟jq的animate-->left .

本人的思绪正是动态地设置element.style.left 实行定位。因为要有叁个渐进的进度,所以加上的一丢丢阶段管理。

固化的时候left的设置也许有一点点复杂的..要思考方向等境况

 //图片组相对原始左移dist px距离
  function goLeft(elem,dist){ 
    if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style="left:0;"
      elem.style.left = "0px";
    }
    var toLeft; //判断图片移动方向是否为左
    dist = dist   parseInt(elem.style.left); //图片组相对当前移动距离
    if(dist<0){  
      toLeft = false;
      dist = Math.abs(dist);
    }else{ 
      toLeft = true;
    }
    for(var i=0;i<= dist/20;i  ){ //这里设定缓慢移动,10阶每阶40px
      (function(_i){ 
        var pos = parseInt(elem.style.left); //获取当前left
        setTimeout(function(){ 
          pos  = (toLeft)? -(_i * 20) : (_i * 20); //根据toLeft值指定图片组位置改变
          //console.log(pos);
          elem.style.left = pos   "px";
        },_i * 25); //每阶间隔50毫秒
      })(i);
    }
  }

地点也看看了,小编初阶了left的值为0px

自个儿试过了,借使不发轫只怕把开首的left值写在行内css样式表里边,就总会报错取不到

故此直接在js中开端化或然在html中内嵌伊始化也可。

5.接下来正是切换的函数完结了,比如要切换来序号为num的图片

//左右切换处理函数
  function changeTo(num){ 
    //设置image
    var imgList = getElementsByClassName("imgList")[0];
    goLeft(imgList,num*400); //左移一定距离
    //设置image 的 info
    var curInfo = getElementsByClassName("infoOn")[0];
    removeClass(curInfo,"infoOn");
    addClass(infoArr[num],"infoOn");
    //设置image的控制下标 index
    var _curIndex = getElementsByClassName("indexOn")[0];
    removeClass(_curIndex,"indexOn");
    addClass(indexArr[num],"indexOn");
  }

6.然后再给左右箭头还恐怕有右下角那堆index绑定事件管理

 //给左右箭头和右下角的图片index添加事件处理
 function addEvent(){
  for(var i=0;i<imgLen;i  ){ 
    //闭包防止作用域内活动对象item的影响
    (function(_i){ 
    //鼠标滑过则清除定时器,并作变换处理
    indexArr[_i].onmouseover = function(){ 
      clearTimeout(autoChange);
      changeTo(_i);
      curIndex = _i;
    };
    //鼠标滑出则重置定时器处理
    indexArr[_i].onmouseout = function(){ 
      autoChangeAgain();
    };
     })(i);
  }

  //给左箭头prev添加上一个事件
  var prev = document.getElementById("prev");
  prev.onmouseover = function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  };
  prev.onclick = function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  };
  prev.onmouseout = function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  };

   //给右箭头next添加下一个事件
  var next = document.getElementById("next");
  next.onmouseover = function(){ 
    clearInterval(autoChange);
  };
  next.onclick = function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  };
  next.onmouseout = function(){ 
    autoChangeAgain();
  };
}

7.最终的尾声,没啥了. 噢好像还要调用一下下十三分 addEvent() ..

全体代码  代码量有个别冗杂..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>图片轮播 js原生(左右切换)</title>
<style type="text/css">
  body,div,ul,li,a,img{margin: 0;padding: 0;}
  ul,li{list-style: none;}
  a{text-decoration: none;}

  #wrapper{position: relative;margin: 30px auto;width: 400px;height: 200px;}
  #banner{position:relative;width: 400px;height: 200px;overflow: hidden;}
  .imgList{position:relative;width:2000px;height:200px;z-index: 10;overflow: hidden;}
  .imgList li{float:left;display: inline;}
  #prev,
  #next{position: absolute;top:80px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
  #prev{left: 10px;}
  #next{right: 10px;}
  #prev:hover,
  #next:hover{opacity: 0.5;filter:alpha(opacity=50);}
  .bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index:20;opacity: 0.4;filter:alpha(opacity=40);background: black;}
  .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
  .infoList li{display: none;}
  .infoList .infoOn{display: inline;color: white;}
  .indexList{position: absolute;right: 10px;bottom: 5px;z-index: 30;}
  .indexList li{float: left;margin-right: 5px;padding: 2px 4px;border: 2px solid black;background: grey;cursor: pointer;}
  .indexList .indexOn{background: red;font-weight: bold;color: white;}
</style>
</head>
<body>
  <div id="wrapper"><!-- 最外层部分 -->
    <div id="banner"><!-- 轮播部分 -->
      <ul class="imgList"><!-- 图片部分 -->
        <li><a href="#"><img src="./img/test1.jpg" width="400px" height="200px" alt="puss in boots1"></a></li>
      <li><a href="#"><img src="./img/test2.jpg" width="400px" height="200px" alt="puss in boots2"></a></li>
      <li><a href="#"><img src="./img/test3.jpg" width="400px" height="200px" alt="puss in boots3"></a></li>
      <li><a href="#"><img src="./img/test4.jpg" width="400px" height="200px" alt="puss in boots4"></a></li>
      <li><a href="#"><img src="./img/test5.jpg" width="400px" height="200px" alt="puss in boots5"></a></li>
      </ul>
      <img src="./img/prev.png" width="20px" height="40px" id="prev">
      <img src="./img/next.png" width="20px" height="40px" id="next">
      <div class="bg"></div> <!-- 图片底部背景层部分-->
      <ul class="infoList"><!-- 图片左下角文字信息部分 -->
        <li class="infoOn">puss in boots1</li>
        <li>puss in boots2</li>
        <li>puss in boots3</li>
        <li>puss in boots4</li>
        <li>puss in boots5</li>
      </ul>
      <ul class="indexList"><!-- 图片右下角序号部分 -->
        <li class="indexOn">1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
  </div>
  <script type="text/javascript">
  var curIndex = 0, //当前index
      imgArr = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //获取图片组
      imgLen = imgArr.length,
      infoArr = getElementsByClassName("infoList")[0].getElementsByTagName("li"), //获取图片info组
      indexArr = getElementsByClassName("indexList")[0].getElementsByTagName("li"); //获取控制index组
     // 定时器自动变换2.5秒每次
  var autoChange = setInterval(function(){ 
    if(curIndex < imgLen -1){ 
      curIndex   ; 
    }else{ 
      curIndex = 0;
    }
    //调用变换处理函数
    changeTo(curIndex); 
  },2500);

  //清除定时器时候的重置定时器--封装
  function autoChangeAgain(){ 
      autoChange = setInterval(function(){ 
      if(curIndex < imgLen -1){ 
        curIndex   ;
      }else{ 
        curIndex = 0;
      }
    //调用变换处理函数
      changeTo(curIndex); 
    },2500);
    }

  //调用添加事件处理
  addEvent();

  //给左右箭头和右下角的图片index添加事件处理
 function addEvent(){
  for(var i=0;i<imgLen;i  ){ 
    //闭包防止作用域内活动对象item的影响
    (function(_i){ 
    //鼠标滑过则清除定时器,并作变换处理
    indexArr[_i].onmouseover = function(){ 
      clearTimeout(autoChange);
      changeTo(_i);
      curIndex = _i;
    };
    //鼠标滑出则重置定时器处理
    indexArr[_i].onmouseout = function(){ 
      autoChangeAgain();
    };
     })(i);
  }

  //给左箭头prev添加上一个事件
  var prev = document.getElementById("prev");
  prev.onmouseover = function(){ 
    //滑入清除定时器
    clearInterval(autoChange);
  };
  prev.onclick = function(){ 
    //根据curIndex进行上一个图片处理
    curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1);
    changeTo(curIndex);
  };
  prev.onmouseout = function(){ 
    //滑出则重置定时器
    autoChangeAgain();
  };

   //给右箭头next添加下一个事件
  var next = document.getElementById("next");
  next.onmouseover = function(){ 
    clearInterval(autoChange);
  };
  next.onclick = function(){ 
    curIndex = (curIndex < imgLen - 1) ? (  curIndex) : 0;
    changeTo(curIndex);
  };
  next.onmouseout = function(){ 
    autoChangeAgain();
  };
}

  //左右切换处理函数
  function changeTo(num){ 
    //设置image
    var imgList = getElementsByClassName("imgList")[0];
    goLeft(imgList,num*400); //左移一定距离
    //设置image 的 info
    var curInfo = getElementsByClassName("infoOn")[0];
    removeClass(curInfo,"infoOn");
    addClass(infoArr[num],"infoOn");
    //设置image的控制下标 index
    var _curIndex = getElementsByClassName("indexOn")[0];
    removeClass(_curIndex,"indexOn");
    addClass(indexArr[num],"indexOn");
  }


  //图片组相对原始左移dist px距离
  function goLeft(elem,dist){ 
    if(dist == 400){ //第一次时设置left为0px 或者直接使用内嵌法 style="left:0;"
      elem.style.left = "0px";
    }
    var toLeft; //判断图片移动方向是否为左
    dist = dist   parseInt(elem.style.left); //图片组相对当前移动距离
    if(dist<0){  
      toLeft = false;
      dist = Math.abs(dist);
    }else{ 
      toLeft = true;
    }
    for(var i=0;i<= dist/20;i  ){ //这里设定缓慢移动,10阶每阶40px
      (function(_i){ 
        var pos = parseInt(elem.style.left); //获取当前left
        setTimeout(function(){ 
          pos  = (toLeft)? -(_i * 20) : (_i * 20); //根据toLeft值指定图片组位置改变
          //console.log(pos);
          elem.style.left = pos   "px";
        },_i * 25); //每阶间隔50毫秒
      })(i);
    }
  }

  //通过class获取节点
  function getElementsByClassName(className){ 
    var classArr = [];
    var tags = document.getElementsByTagName('*');
    for(var item in tags){ 
      if(tags[item].nodeType == 1){ 
        if(tags[item].getAttribute('class') == className){ 
          classArr.push(tags[item]);
        }
      }
    }
    return classArr; //返回
  }

  // 判断obj是否有此class
  function hasClass(obj,cls){  //class位于单词边界
    return obj.className.match(new RegExp('(\s|^)'   cls   '(\s|$)'));
   }
   //给 obj添加class
  function addClass(obj,cls){ 
    if(!this.hasClass(obj,cls)){ 
       obj.className  = cls;
    }
  }
  //移除obj对应的class
  function removeClass(obj,cls){ 
    if(hasClass(obj,cls)){ 
      var reg = new RegExp('(\s|^)'   cls   '(\s|$)');
         obj.className = obj.className.replace(reg,'');
    }
  }

  </script>
</body>
</html>

上述所述正是本文的全体内容了,希望大家能够欣赏。

你或者感兴趣的小说:

  • js实现下一页页码效果
  • javascript分页代码(当前页码居中)
  • 某页码展现的helper 一些些调节,另附js版
  • javascript 扶助页码格式的分页类
  • javascript结合CSS达成苹果开关按键特效
  • js达成图片无缝滚动特效
  • 贰个归纳的JS鼠标悬停特效具体方法
  • js文字横向滚动特效
  • js实现文字闪烁特效的章程
  • 贰13个Javascript弹出窗口特效整理
  • 相配多浏览器的字幕特效Marquee的通用js类
  • 纯JS完结可用以页码改变的飞页特效示例

本文由澳门新萄京官方网站发布于澳门新萄京赌场网址,转载请注明出处:第一屏页面文章展开,手机端第一屏页面文章的

关键词: