javascript - 點擊左右箭頭,圖片跟著移動,正中的圖片總是最大
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-19 10:29:25
0
5
637

想製作下圖的效果,目前6張圖,有兩個問題
1.移動到最左或最右後怎樣不間斷的從第一張或最後一張圖片開始
2 .正中的位置圖片最大的效果是怎麼製作的,
希望各位有經驗的同學可以提供思路

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(5)
给我你的怀抱

實例

習慣沉默

我的思路如上

<p class="view">
    <p class="container">
        <p class="item"></p>
        <p class="item"></p>
        <p class="item"></p>
        <p class="item"></p>
        <p class="item"></p>
    </p>
</p>

CSS重點在於 設定 .viewoverflow-xhidden

還有 .containerabsolute

這樣就可以把 .container left變化 轉換成 看起來就像滾動一樣

現在的問題就是讓中間那個變大一些

按套路來講,還需要寫 .iambig 作為變大後的樣式


一切準備工作做好後:

  1. 把問題轉換成數據問題

  2. 把資料渲染出來

// box.js 
var Box = (function(){
    var container = $('.container'); 
    var items = $('.item'); // 假设已经有一个已经变大了 
    var isBig = items.map(item => {
         return item.hasClass('iambig'); 
    }); 
    // 把item映射成isBig 
    // 比如第一个的item的类是 'item iambig' 
    // 那么 isBig 将会是 
    // [true, false, false, false, false]
    
    var next = function(){
        // 最后一个吐出来插到最前面
        var last = isBig.pop(); 
        isBig.unift(last); 
    }
    var pre = function(){
        // 最前面站出来插到最后面 
        var first = isBig.shift(); 
        isBig.push(last); 
    }
    
    var render = function(){
        items.removeClass('iambig'); // 大家都去掉 iambig 
        isBig.forEach((e, i)=>{
            if (e) {
                $(items[i]).addClass('iambig');
                container.css(left, i); // 这个让他滚动。。。 这个得看情况弄了 这个值可以是百分比也可以是px 。。。 看你具体需求了  
            }
        })
    }
    
    return {
        next: next, 
        pre: pre,
        render: render 
    }
})(); 

都準備好之後把暴露出來的 next pre render 綁定到對應的按鈕上

PS:pre, next 改了資料之後記得還要 render 渲染


需要的基礎知識

  1. CSS overflow, absolute width 等等基礎 CSS 姿勢

  2. Array.prototype.forEach、jQuery的常用方法等等

= = 。 。 。 。 希望能幫到你。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!