1. 程式人生 > >改變opacity實現圖片輪播

改變opacity實現圖片輪播

這裡實現原理我就不詳細述說了,主要是通過改變圖片的opacity,利用fadeIn和fadeOut來實現過渡效果,使切換不會顯得很突兀。
但是我在這裡遇到了一個問題,讓我糾結了一段時間。問題是,我發現頁面初始化的時候首屏切換並沒有過渡效果,僅僅是直接切換了。我想了很久,以為是我的index的初始值不對,但發現根本不是這個問題。最後,終於發現,原來是我的樣式的問題,我將所有的圖片都設定為display:block;所以首屏切換根本沒有過渡效果,將display改為none就可以了。這個問題很簡單,但是我當時就是一直沒想到。 

還有一個問題是,因為我將包裹圖片的li標籤都設定為絕對定位,所以首屏最開始顯示的是圖片堆疊後的最後一張圖片,我將第一張圖片的z-index設定更大一些便可以了。

完整的原始碼如下:

xml:

<ul class="sl-cont">
    <t t-foreach="images" t-as="image">
        <li class="sl-panel">
            <a t-att-href="image[1]">
                <img t-att-src="image[0]" />
            </a>
        </li>
    </t>
</ul>
<div class="sl-page">
    <a href="javascript:;" class="sl-prev"><</a>
    <a href="javascript:;" class="sl-next">></a>
</div>

css:
.sl-cont {
        position: relative;
        width: 100%;
        height: 100%;
        overflow: hidden;
      }
      .sl-panel {
        display: none;
        position: absolute;
        left:0;
        top:0;
        width:100%;
        height: 100%;
        img {
          display: block;
          width: 100%;
          height: 100%;
        }
        &:first-child {
          display: block;
          z-index: 5;
        }
      }

      .sl-page {
        a{
          position: absolute;
          top:50%;
          width: 28px;
          height: 62px;
          line-height: 62px;
          text-align: center;
          background: rgba(0,0,0,.2);
          color: #fff;
          font-size: 22px;
          font-weight: 400;
          font-family: simsun;
          text-decoration: none;
          z-index: 10;
          margin-top: -31px;
          &:hover {
            text-decoration: none;
          }
        }
        .sl-prev {
          left: 0;
        }
        .sl-next {
          right: 0;
        }
      }

js:

$(function() {
            var PicTurn = function(){
                return new PicTurn.prototype.init();
            }

            PicTurn.prototype = {
                init: function(){
                    var self = this;
                    self.$parent = $('.slider-main');
                    self.$btnWrap = $('.sl-nav');
                    self.imgs = self.$parent.find('.sl-panel');
                    self.num = self.imgs.length;
                    self.index = 0;
                    self.timer = setInterval(function(){
                        self.runNext();
                    }, 4000);

                },

                picChange: function(index) {
                    var self = this,
                        i = 0;
                    //self.imgs[index].style.cssText= "display:block;z-index:1;opacity:1;";
                    $(self.imgs[index]).fadeIn(400);
                    self.imgs[index].style.display="block";
                    self.imgs[index].style.zIndex = 1;
                    for(i=0;i<self.num; i++) {
                        if(i !== index) {
                            //self.imgs[i].style.cssText="display:none;z-index:0;opacity:0";
                            $(self.imgs[i]).fadeOut(400);
                            self.imgs[i].style.zIndex = 0;

                        }
                    }
                    //$(self.imgs[index]).fadeIn(400);
                    self.$btnWrap.find('li').eq(index).addClass('sl-item-selected')
                        .siblings().removeClass('sl-item-selected');
                },
                runNext: function() {
                    var self = this;
                    if(self.index >= self.num-1){
                        self.index=0;
                    }else{
                        self.index += 1;
                    }
                    self.picChange(self.index);
                },
                runPre: function() {
                    var self = this;
                    if(self.index == 0) {
                        self.index = self.num-1;
                    }else{
                        self.index -= 1;
                    }
                    self.picChange(self.index);
                }
            }
            PicTurn.prototype.init.prototype = PicTurn.prototype;
            var picTurn = new PicTurn();
            $('.slider-main').on('mouseover', function() {
                    clearInterval(picTurn.timer);
                })
                .on('mouseout', function() {
                    picTurn.timer = setInterval(function(){
                        picTurn.runNext();
                    },4000);
                })
                .on('click','.sl-prev', function() {
                    if(picTurn.timer !== null) {
                        clearInterval(picTurn.timer);
                        picTurn.timer = null;
                    }
                    picTurn.runPre();
                })
                .on('click','.sl-next', function() {
                    if(picTurn.timer !== null) {
                        clearInterval(picTurn.timer);
                        picTurn.timer = null;
                    }
                    picTurn.runNext();
                });
            $('.sl-nav').on('hover', '.sl-item', function() {
                var index = $(this).index();
                picTurn.picChange(index);

            })
})	


相關推薦

改變opacity實現圖片

這裡實現原理我就不詳細述說了,主要是通過改變圖片的opacity,利用fadeIn和fadeOut來實現過渡效果,使切換不會顯得很突兀。 但是我在這裡遇到了一個問題,讓我糾結了一段時間。問題是,我發現頁面初始化的時候首屏切換並沒有過渡效果,僅僅是直接切換了。我想了很久,以為

iOS開發項目實戰——Swift實現圖片與瀏覽

0.10 上網 timer類 開發項目 cas hub string obj tle 近期開始開發一個新的iOS應用,自己決定使用Swift。進行了幾天之後,發現了一個非常嚴峻的問題。那就是無論是書籍,還是網絡資源,關於Swift的實在是太少了,隨便一

CSS/HTML/JS實現圖片

class fff 瀏覽器 tro back 全局 實現圖 func 原理 實現原理 將點擊的a標簽的href屬性值賦給img標簽的src屬性,這樣有個好處,就是如果瀏覽器不支持js的話,點擊a標簽也可跳轉到圖片地址看到圖片,不會影響內容的呈現 註:需要導入jquery

使用JQuery實現圖片效果

left 簡述 flow href 集合 jpg -i round 輪播 【效果如圖】 【原理簡述】 這裏大概說一下整個流程: 1,將除了第一張以外的圖片全部隱藏, 2,獲取第一張圖片的alt信息顯示在信息欄,並添加點擊事件 3,為4個按鈕添加點擊偵聽,點擊相應的按鈕,用

原生JS實現圖片

讓其 gin 偏移量 adding char 效率 lin doc 動畫效果 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8">

Flexslider插件實現圖片、文字圖片相結合滑動切換效果

remove 12px body 類型 ons art cal 選項 csharp 插件下載:   點擊下載 密碼: fbeg Flexslider具有以下特性: 支持滑動和淡入淡出效果。 支持水平、垂直方向滑動。 支持鍵盤方向鍵控制。 支持觸控滑動。 支

使用Ajax+jQuery來實現前端收到的數據在console上顯示+簡單的主頁設計與bootstrap插件實現圖片

value size 靠譜 實現圖 active length oot function 想要 1.實現前端輸入的數據在console上顯示 上一篇是解決了在前端的輸入信息在cygwin上顯示,這次要給前臺們能看見的數據,因為數據庫裏插入的數據少,所以寫的語句翻來覆去就那幾

C# winform窗體實現圖片

1、定義一個方法設定控制元件 和執行緒時間 /// <summary> /// 改變圖片 /// </summary> /// <param name="img">圖片</param>

微信小程式實現圖片

wxml頁面程式碼: <!--圖片輪播 --> <view class='swipercontainer'> <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" inte

[程式碼] 使用css3實現圖片

使用css3實現圖片輪播 前言:實現圖片輪播的方式有很多種 ,例如js ,css 等等。 本文主要講述使用純css3實現輪播圖 工具介紹: 使用的編輯器: Hbuilder 進入正題 htm

html中使用JS實現圖片效果

HTML 部分 <div id="bannner" class="main_center_bannar">

html+css+js簡單實現圖片效果

<script>  index=0;function show_img(){             imgs=document.getElementById("shidian_img").children; //獲取所以圖片 並且儲存到陣列imgs數組裡             for(i =0

純css3實現圖片

用css3的動畫可以實現圖片輪播 無非就是兩種型別:  左右滾動型別, 漸變型別 1 左右滾動 定義一個大盒子 在一個小盒子裡面 裝3張圖片(這裡用3張圖片為例子) 三張圖片可以向左浮動,大盒子 overflow :hidden 小盒子增加css3

jquery實現圖片圖效果

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> *{ padding:0; margin:0; list-style:n

用原生JS實現 圖片切換 功能

效果如圖:程式碼如下:<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title

viewPager+photoView實現圖片和手勢縮放功能 支援手勢縮放的imageView 如何實現相簿左右滑動和手勢縮放 如何讓圖片自適應控制元件大小 photoView如何使用(上)

import uk.co.senab.photoview.IPhotoView; import uk.co.senab.photoview.PhotoViewAttacher; import uk.co.senab.photoview.PhotoViewAttacher.OnMatrixChangedList

JavaScript實現圖片和滑鼠懸停顯示

例: 提前放好了四張圖片,並編號。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www

JS原生程式碼實現圖片無縫切換的一種思路

JS實現圖片輪播是個老生常談的問題,也是新手的必由之路,在這裡提供一種思路,供大家參考: 1.生成DIV做外框,並設定overflow:hidden;  // 每個方法都必須有的 2.建立一個數組arr,放置圖片地址 3.生成兩個並排的圖片img1,img2,初始化圖片地址

+【CSS3】使用純css程式碼實現圖片效果

 使用純CSS3程式碼實現簡單的圖片輪播。 基本思路: 以5張圖片為例: 1.基本佈局: 將5張圖片左浮動橫向並排放入一個div容器(#photos)內,圖片設定統一尺寸,div寬度設定5個圖片的總尺寸,然後放入相框容器div(#frame),相框設定1個圖片

vue.js中使用swiper外掛實現圖片

第一步:安裝swiper:npm install [email protected] --save-dev 完成之後,你會在專案的node_modules資料夾中多一個swiper資料夾。 第二步:引用元件 import Swiper from 'swiper