最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

【JS+CSS3】實(shí)現(xiàn)帶預(yù)覽圖幻燈片效果的示例代碼

 更新時(shí)間:2016年03月17日 16:22:22   投稿:jingxian  
下面小編就為大家?guī)硪黄綣S+CSS3】實(shí)現(xiàn)帶預(yù)覽圖幻燈片效果的示例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家。給大家一個(gè)參考

一、前期準(zhǔn)備

1.1 案例分析

適用場(chǎng)景:?jiǎn)卫季?br /> 1.2 方法論

V視圖 HTML+CSS+調(diào)試
C js實(shí)現(xiàn)控制流程
D數(shù)據(jù) 優(yōu)化擴(kuò)展

二、代碼

結(jié)構(gòu)

<div class="slider"><!-- 特效區(qū) -->
  <div class="main"><!-- 主視圖區(qū) -->
    <div class="main_i">
      <div class="caption">
        <h2>h2 caption</h2>
        <h2>h3 caption</h2>
      </div>
    <img src="images/{{index}}.jpg" alt="">
    </div>
  </div><!-- 主視圖區(qū)結(jié)束 -->
  <div class="ctrl"><!-- 控制區(qū) -->
    <a href="javascript:;"><img src="images/{{index}}.jpg" alt="">
    </a>
  </div><!-- 控制區(qū)結(jié)束 -->
</div><!-- 特效區(qū)結(jié)束 -->

樣式(CSS略)

腳本功能開發(fā)

>>內(nèi)容輸出
Template改造 輸出幻燈片&控制按鈕 圖片位置調(diào)整

>>切換控制
切換幻燈片 .main_i_active 切換控制按鈕 .ctrl_i_active


0、修改VIEW ->Template(關(guān)鍵字替換),增加Template id
圖片區(qū)
<div class="main" id="template_main">
<h2>{{h2}}}</h2>
<h3>{{h3}}}</h3>
<img src="images/{{index}}.jpg">
按鈕區(qū)
<div class="ctrl" id="template_ctrl">
<a class="ctrl_i" id="ctrl_{{index}}" href="javascript:switchSlider({{index}});"><img src="images/{{index}}.jpg" alt="圖片預(yù)覽"></a>


下面是重點(diǎn) JS腳本的編寫~~

<script type="text/javascript">

  // 1、數(shù)據(jù)定義(實(shí)際生產(chǎn)環(huán)境,應(yīng)由后臺(tái)給出)
  var data = [
    {img:1,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:2,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:3,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:4,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:5,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:6,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
    {img:7,h2:"我是標(biāo)題二,小標(biāo)題",h3:"我是標(biāo)題三,大標(biāo)題"},
  ];

  // 2、通用函數(shù)
  var g = function(id){
    if( id.substr(0,1) =="." ){
      return document.getElementsByClassName( id.substr(1) );
    }
    return document.getElementById(id);
  }

  // 3、添加幻燈片的操作(所有幻燈片&對(duì)應(yīng)的按鈕)
  function addSliders(){
    // 3.1 獲取模版
    var tpl_main = g("template_main").innerHTML
      .replace(/^\s*/,'')
      .replace(/\s*$/,'');

    var tpl_ctrl = g("template_ctrl").innerHTML
      .replace(/^\s*/,'')
      .replace(/\s*$/,'');

    // 3.2 定義最終輸出HTML的變量
    var out_main = [];
    var out_ctrl = [];

    // 3.3 遍歷所有數(shù)據(jù),構(gòu)建最終輸出的HTML
    for( i in data ){
      var _html_main = tpl_main
        .replace(/{{index}}/g,data[i].img)
        .replace(/{{h2}}/g,data[i].h2)
        .replace(/{{h3}}/g,data[i].h3)
        .replace(/{{css}}/g,['','main_i_right'][i%2]);

      var _html_ctrl = tpl_ctrl
        .replace(/{{index}}/g,data[i].img);
      
      out_main.push(_html_main);
      out_ctrl.push(_html_ctrl);
    }

    // 3.4 把HTML回寫到對(duì)應(yīng)的DOM里面
    g("template_main").innerHTML = out_main.join('');
    g("template_ctrl").innerHTML = out_ctrl.join('');
    
    // 7、增加#main_background
    g('template_main').innerHTML += tpl_main
      .replace(/{{index}}/g,'{{index}}')
      .replace(/{{h2}}/g,data[i].h2)
      .replace(/{{h3}}/g,data[i].h3);

    g('main_{{index}}').id = 'main_background';
  }

  // 5、幻燈片切換
  function switchSliders(n){
    // 5.1 獲得要展現(xiàn)的幻燈片&控制按鈕 DOM
    var main = g("main_"+n);
    var ctrl = g("ctrl_"+n);

    // 5.2 獲得所有的幻燈片&控制按鈕
    var clear_main = g('.main_i');
    var clear_ctrl = g('.ctrl_i');

    // 5.3 清除他們的active樣式
    for(var i=0;i<clear_ctrl.length;i++){
      clear_main[i].className = clear_main[i].className.replace('main_i_active','');
      clear_ctrl[i].className = clear_ctrl[i].className.replace('ctrl_i_active','');
    }

    // 5.4為當(dāng)前控制按鈕和幻燈片附加樣式  
    g("main_"+n).className += ' main_i_active';
    g("ctrl_"+n).className += ' ctrl_i_active';
    // 7.2切換時(shí) 復(fù)制上一張幻燈片到main_background中
    setTimeout(function(){
      g('main_background').innerHTML = main.innerHTML;
    },1000);
    
  }

  // 6、動(dòng)態(tài)調(diào)整圖片的margin-top 使其垂直居中
  function movePictures(){
    var pictures = g('.picture');
    for(i=0;i<pictures.length;i++){
      pictures[i].style.marginTop = -(pictures[i].clientHeight/3) + 'px';
    }
  }

  // 4、定義何時(shí)處理幻燈片輸出
  window.onload = function(){
    addSliders();
    switchSliders(1);
    setTimeout(function(){
      movePictures();
    },100)
  }
</script>

效果圖 … = =莫吐槽又是這幾張圖~~~ 

 

遇到問題:

1、 給圖片直接加top:50%;會(huì)有BUG,沒作用,原因可能是沒給height固定高度~~給了固定高度就好了

但問題又來了,2、給固定高度后,按鈕組不能自適應(yīng)寬度 … 會(huì)被擠到第二排去  ……

以上這篇【JS+CSS3】實(shí)現(xiàn)帶預(yù)覽圖幻燈片效果的示例代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

凤翔县| 塔城市| 赤城县| 瓮安县| 石家庄市| 栾川县| 昆明市| 锦州市| 张家港市| 高要市| 晋城| 酒泉市| 滁州市| 华池县| 莱西市| 英吉沙县| 乐东| 泰来县| 民勤县| 衡阳县| 新源县| 齐齐哈尔市| 兴安县| 米泉市| 突泉县| 怀柔区| 翼城县| 江川县| 米脂县| 剑河县| 甘泉县| 崇信县| 金寨县| 宿州市| 从江县| 竹山县| 南乐县| 土默特左旗| 家居| 彝良县| 黎川县|