国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

【JS+CSS3】實現帶預覽圖幻燈片效果的示例代碼

2019-11-20 10:22:38
字體:
來源:轉載
供稿:網友

一、前期準備

1.1 案例分析

適用場景:單例布局
1.2 方法論

V視圖 HTML+CSS+調試
C js實現控制流程
D數據 優化擴展

二、代碼

結構

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

樣式(CSS略)

腳本功能開發

>>內容輸出
Template改造 輸出幻燈片&控制按鈕 圖片位置調整

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


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


下面是重點 JS腳本的編寫~~

<script type="text/javascript">  // 1、數據定義(實際生產環境,應由后臺給出)  var data = [    {img:1,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:2,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:3,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:4,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:5,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:6,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},    {img:7,h2:"我是標題二,小標題",h3:"我是標題三,大標題"},  ];  // 2、通用函數  var g = function(id){    if( id.substr(0,1) =="." ){      return document.getElementsByClassName( id.substr(1) );    }    return document.getElementById(id);  }  // 3、添加幻燈片的操作(所有幻燈片&對應的按鈕)  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 遍歷所有數據,構建最終輸出的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回寫到對應的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 獲得要展現的幻燈片&控制按鈕 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為當前控制按鈕和幻燈片附加樣式      g("main_"+n).className += ' main_i_active';    g("ctrl_"+n).className += ' ctrl_i_active';    // 7.2切換時 復制上一張幻燈片到main_background中    setTimeout(function(){      g('main_background').innerHTML = main.innerHTML;    },1000);      }  // 6、動態調整圖片的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、定義何時處理幻燈片輸出  window.onload = function(){    addSliders();    switchSliders(1);    setTimeout(function(){      movePictures();    },100)  }</script>

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

 

遇到問題:

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

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

以上這篇【JS+CSS3】實現帶預覽圖幻燈片效果的示例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新余市| 六安市| 蒙山县| 外汇| 景宁| 泰安市| 万安县| 福泉市| 芷江| 珲春市| 永定县| 东乡县| 寿宁县| 桃园市| 喜德县| 西宁市| 那曲县| 托里县| 嘉鱼县| 通榆县| 东兰县| 广昌县| 洞口县| 唐山市| 乐昌市| 江华| 富宁县| 天气| 永康市| 封开县| 南安市| 封丘县| 安徽省| 巴楚县| 从化市| 新晃| 阿合奇县| 金湖县| 金湖县| 万载县| 会昌县|