欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年03月17日 16:22:22   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇【JS+CSS3】實(shí)現(xiàn)帶預(yù)覽圖幻燈片效果的示例代碼。小編覺(jué)得挺不錯(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略)

腳本功能開(kāi)發(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腳本的編寫(xiě)~~

<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回寫(xiě)到對(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>

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

 

遇到問(wèn)題:

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

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

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

相關(guān)文章

  • javascript實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲

    javascript實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲

    本文很簡(jiǎn)單,給大家分享了一段使用javascript實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲的代碼,算是對(duì)自己學(xué)習(xí)javascript的一次小小的總結(jié),代碼參考了網(wǎng)友的部分內(nèi)容,推薦給大家,希望對(duì)大家能夠有所幫助。
    2015-03-03
  • jqgrid 表格數(shù)據(jù)導(dǎo)出實(shí)例

    jqgrid 表格數(shù)據(jù)導(dǎo)出實(shí)例

    jqgrid并沒(méi)有自帶導(dǎo)出表格數(shù)據(jù)的方法,這里就自己實(shí)現(xiàn)了一個(gè),嘗試過(guò)在頁(yè)面直接將數(shù)據(jù)導(dǎo)出,發(fā)現(xiàn)只有IE下可以通過(guò)調(diào)用saveas來(lái)實(shí)現(xiàn),但是別的瀏覽器不支持,于是考慮將數(shù)據(jù)傳回后臺(tái),然后后臺(tái)返回下載文件來(lái)實(shí)現(xiàn)
    2013-11-11
  • js實(shí)現(xiàn)京東輪播圖效果

    js實(shí)現(xiàn)京東輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)京東輪播圖效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • webpack4 配置 ssr 環(huán)境遇到“document is not defined”

    webpack4 配置 ssr 環(huán)境遇到“document is not defined”

    這篇文章主要介紹了webpack4 配置 ssr 環(huán)境遇到“document is not defined”,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 面向?qū)ο驤avascript核心支持代碼分享

    面向?qū)ο驤avascript核心支持代碼分享

    Javascript做面向?qū)ο箝_(kāi)發(fā)的時(shí)候,總是會(huì)用到很多模擬面向?qū)ο筇匦缘姆椒ǎ@些方法就構(gòu)成了支撐面向?qū)ο驤avascript的核心代碼
    2012-05-05
  • js操縱跨frame的三級(jí)聯(lián)動(dòng)select下拉選項(xiàng)實(shí)例介紹

    js操縱跨frame的三級(jí)聯(lián)動(dòng)select下拉選項(xiàng)實(shí)例介紹

    運(yùn)用HTML、CSS以及Javascript相關(guān)知識(shí),編寫(xiě)多窗口多菜單的內(nèi)容聯(lián)動(dòng),具體思路及代碼如下,感興趣的朋友可以參考下哈,希望大家有所幫助
    2013-05-05
  • 前端使用websocket發(fā)送消息的示例代碼

    前端使用websocket發(fā)送消息的示例代碼

    WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議,它可以讓客戶端和服務(wù)器之間進(jìn)行實(shí)時(shí)的雙向通信,這篇文章主要介紹了前端使用websocket發(fā)送消息的示例代碼,需要的朋友可以參考下
    2023-07-07
  • JS實(shí)現(xiàn)窗口加載時(shí)模擬鼠標(biāo)移動(dòng)的方法

    JS實(shí)現(xiàn)窗口加載時(shí)模擬鼠標(biāo)移動(dòng)的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)窗口加載時(shí)模擬鼠標(biāo)移動(dòng)的方法,涉及javascript鼠標(biāo)事件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • JavaScript動(dòng)態(tài)檢驗(yàn)密碼強(qiáng)度的實(shí)現(xiàn)方法

    JavaScript動(dòng)態(tài)檢驗(yàn)密碼強(qiáng)度的實(shí)現(xiàn)方法

    平時(shí)我們會(huì)在某些網(wǎng)站的注冊(cè)頁(yè)面或者更改密碼的頁(yè)面發(fā)現(xiàn)當(dāng)我們輸入密碼時(shí),會(huì)有一個(gè)類(lèi)似于進(jìn)度條的長(zhǎng)條進(jìn)行提示用戶輸入的密碼強(qiáng)度。那么這種效果怎么實(shí)現(xiàn)的呢?下面小編給大家介紹下js動(dòng)態(tài)檢驗(yàn)密碼強(qiáng)度的實(shí)現(xiàn)方法,一起看看吧
    2016-11-11
  • JS如何生成動(dòng)態(tài)列表

    JS如何生成動(dòng)態(tài)列表

    這篇文章主要為大家詳細(xì)介紹了JS如何生成動(dòng)態(tài)列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評(píng)論