对 jquery.carousel.js 进行修改

  • 在已有的插件 jquery.carousel.js 根据自己的需求进行的修改。

  • 在使用已有的jquery.carousel.js过程中,出现了一些问题,自己进行小小小的修改

如图样式:不自动轮播,当前页面显示蒙版遮罩,文字。

对 jquery.carousel.js 进行修改_第1张图片

html

    <div class="food-carousel">
            <div class = "carourselThree poster-main" data-setting = '{
                "width":1180,
                "height":430,
                "posterWidth":700,
                "posterHeight":430,
                "scale":0.8,
                "isAutoplay":"false", 
                "dealy":"100",
                "algin":"middle"
            }'>
                <ul class = "poster-list">
                    <li class = "poster-item"><img src="img/temp/index_16.jpg" width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食1h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg" width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食2h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg" width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食3h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg" width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食4h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg" width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食5h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg"  width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食6h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg"  width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食7h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg"  width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食8h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                    <li class = "poster-item"><img src="img/temp/index_16.jpg"  width = "100%" height="100%">
                        <div class="div-text">
                            <h3>营养膳食9h3>
                            <p>Nutritional Dietp>
                        div>
                    li>
                ul>
                <div class = "poster-btn poster-prev-btn">
                    <i class="icon-arrow-left">i>
                div>
                <div class = "poster-btn poster-next-btn">
                    <i class="icon-arrow-right">i>
                div>
            div>
        div>

css

    /*部分样式*/
    /*转转木马 插件样式*/
    .poster-main{
      position: relative;
      width: 900px;
      height: 430px;
    }
    .poster-main a,.poster-main img{
      display:block;
    }
    .poster-main .poster-list{
      width: 900px;
      height: 270px;
    }
    .poster-main .poster-list .poster-item{
      position: absolute;
      left: 0px;
      top: 0px;
    }
    .poster-main .poster-btn{
      position: absolute;
      height: 100%;
      width:100px;
      top: 0px;
      z-index: 10;
      // opacity: 0.3;
    }
    .poster-main .poster-prev-btn{
      left: 60px;
      margin-left: 270px;
    }
    .poster-main .poster-next-btn{
      right: 60px;

    }
    .poster-main{
      .poster-next-btn,.poster-prev-btn{
        font-size: 36px;
        color: @white;
        margin-top: 180px;
      }
    }

js


    //自定义部分代码

    var len = $('.food-carousel .poster-item').length-1;
    $('.poster-prev-btn i').click(function(){
        $('.food-carousel .poster-item').each(function(index){
            var _left = $(this).css('left');
            var _leftNumber = _left.substr(0,3);
            if(_leftNumber == 240){
               $('.food-carousel .poster-item').children('.div-text').hide();
                if($(this).index() == 0){
                    $('.food-carousel .poster-item:eq('+ len +')').children('.div-text').show();
                }else{
                    $(this).prev().children('.div-text').show();
                }
            }else{
                $(this).prev().children('.div-text').hide();
            }
        });
    });
    $('.poster-next-btn i').click(function(){
        $('.food-carousel .poster-item').each(function(){
            var _left = $(this).css('left');
            var _leftNumber = _left.substr(0,3);
            if(_leftNumber == 240){
                $('.food-carousel .poster-item').children('.div-text').hide();
                if($(this).index() == len){
                    $('.food-carousel .poster-item:eq(0)').children('.div-text').show();
                }else{
                    $(this).next().children('.div-text').show();
                }
            }else{
                $(this).next().children('.div-text').hide();
            }
        });
    });

    //初始化
    Caroursel.init($('.carourselThree'));

    //修改过的已有代码
    /**
     *Created by Zhangyx on 2015/10/15.
     * Modified by pxt  on 2016/06/29.
     */
    ;(function($){
        var Caroursel = function (caroursel){
            var self = this;
            this.caroursel = caroursel;
            this.posterList = caroursel.find(".poster-list");
            this.posterItems = caroursel.find(".poster-item");
            this.firstPosterItem = this.posterItems.first();
            this.lastPosterItem = this.posterItems.last();
            this.prevBtn = this.caroursel.find(".poster-prev-btn");
            this.nextBtn = this.caroursel.find(".poster-next-btn");
            //默认参数
            this.setting = {
                "width":"1000",
                "height":"270",
                "posterWidth":"640",
                "posterHeight":"270",
                "scale":"0.8",
                "speed":"1000",
                "isAutoplay":"true",
                "dealy":"1000"
            }
            //自定义参数与默认参数合并
            $.extend(this.setting,this.getSetting())
            //设置第一帧位置
            this.setFirstPosition();
            //设置剩余帧的位置
            this.setSlicePosition();
            //旋转
            this.rotateFlag = true;
            this.prevBtn.bind("click",function(){
                if(self.rotateFlag){
                    self.rotateFlag = false;
                    self.rotateAnimate("left")
                }
            });
            this.nextBtn.bind("click",function(){
                if(self.rotateFlag){
                    self.rotateFlag = false;
                    self.rotateAnimate("right")
                }
            });
            if(this.setting.isAutoplay){
                // this.autoPlay();
                // this.caroursel.hover(function(){clearInterval(self.timer)},function(){self.autoPlay()})
            }
        };
        Caroursel.prototype = {
            // autoPlay:function(){
            //   var that = this;
            //   this.timer =  window.setInterval(function(){
            //       that.prevBtn.click();
            //   },that.setting.dealy)
            // },
            rotateAnimate:function(type){
                var that = this;
                var zIndexArr = [];
                if(type == "left"){//向左移动
                    this.posterItems.each(function(){
                       var self = $(this),
                        prev = $(this).next().get(0)?$(this).next():that.firstPosterItem,
                        width = prev.css("width"),
                        height = prev.css("height"),
                        zIndex = prev.css("zIndex"),
                        opacity = prev.css("opacity"),
                        left = prev.css("left"),
                        top = prev.css("top");
                        zIndexArr.push(zIndex);
                        self.animate({
                            "width":width,
                            "height":height,
                            "left":left,
                            "opacity":opacity,
                            "top":top,
                        },that.setting.speed,function(){
                            that.rotateFlag = true;
                        });
                    });
                    this.posterItems.each(function(i){
                        $(this).css("zIndex",zIndexArr[i]);
                    });
                }
                if(type == "right"){//向右移动
                    this.posterItems.each(function(){
                        var self = $(this),
                        next = $(this).prev().get(0)?$(this).prev():that.lastPosterItem,
                            width = next.css("width"),
                            height = next.css("height"),
                            zIndex = next.css("zIndex"),
                            opacity = next.css("opacity"),
                            left = next.css("left"),
                            top = next.css("top");
                            zIndexArr.push(zIndex);
                        self.animate({
                            "width":width,
                            "height":height,
                            "left":left,
                            "opacity":opacity,
                            "top":top,
                        },that.setting.speed,function(){
                            that.rotateFlag = true;
                        });
                    });
                    this.posterItems.each(function(i){
                        $(this).css("zIndex",zIndexArr[i]);
                    });
                }
            },
            setFirstPosition:function(){
                this.caroursel.css({"width":this.setting.width,"height":this.setting.height});
                this.posterList.css({"width":this.setting.width,"height":this.setting.height});
                var width = (this.setting.width - this.setting.posterWidth) / 2;
                //设置两个按钮的样式
                this.prevBtn.css({"width":width , "height":this.setting.height,"zIndex":Math.ceil(this.posterItems.size()/2)});
                this.nextBtn.css({"width":width , "height":this.setting.height,"zIndex":Math.ceil(this.posterItems.size()/2)});
                this.firstPosterItem.css({
                    "width":this.setting.posterWidth,
                    "height":this.setting.posterHeight,
                    "left":width,
                    "zIndex":Math.ceil(this.posterItems.size()/2),
                    "top":this.setVertialType(this.setting.posterHeight)
                });
            },
            setSlicePosition:function(){
                var _self = this;
                var sliceItems = this.posterItems.slice(1),
                    level = Math.floor(this.posterItems.length/2),
                    leftItems = sliceItems.slice(0,level),
                    rightItems = sliceItems.slice(level),
                    posterWidth = this.setting.posterWidth,
                    posterHeight = this.setting.posterHeight,
                    Btnwidth = (this.setting.width - this.setting.posterWidth) / 2,
                    gap = Btnwidth/level,
                    containerWidth = this.setting.width;
                //设置左边帧的位置
                // var i = 1;
                var i = level;
                var leftWidth = posterWidth;
                var leftHeight = posterHeight;
                var zLoop1 = level;
                leftItems.each(function(index,item){
                    leftWidth = posterWidth * _self.setting.scale;
                    leftHeight = posterHeight*_self.setting.scale;
                    $(this).css({
                        "width":leftWidth,
                        "height":leftHeight,
                        "left": Btnwidth - i*gap,
                        "zIndex":zLoop1--,
                        // "opacity":1/(i+1),
                        "opacity":1,
                        "top":_self.setVertialType(leftHeight)
                    });
                    // i++;
                });
                //设置右面帧的位置
                var j = level;
                var zLoop2 = 1;
                var rightWidth = posterWidth;
                var rightHeight = posterHeight;
                rightItems.each(function(index,item){
                    var rightWidth = posterWidth * _self.setting.scale;
                    var rightHeight = posterHeight*_self.setting.scale;
                    $(this).css({
                        "width":rightWidth,
                        "height":rightHeight,
                        "left": containerWidth -( Btnwidth - j*gap + rightWidth),
                        "zIndex":zLoop2++,
                        // "opacity":1/(j+1),
                        "opacity":1,
                        "top":_self.setVertialType(rightHeight)
                    });
                    // j--;
                });
            },
            getSetting:function(){
                var settting = this.caroursel.attr("data-setting");
                if(settting.length > 0){
                    return $.parseJSON(settting);
                }else{
                    return {};
                }
            },
            setVertialType:function(height){
                var algin = this.setting.algin;
                if(algin == "top") {
                    return 0
                }else if(algin == "middle"){
                    return (this.setting.posterHeight - height) / 2
                }else if(algin == "bottom"){
                    return this.setting.posterHeight - height
                }else {
                    return (this.setting.posterHeight - height) / 2
                }
            }
        }
        Caroursel.init = function (caroursels){
            caroursels.each(function(index,item){
                new Caroursel($(this));
            })  ;
        };
        window["Caroursel"] = Caroursel;
    })(jQuery)

你可能感兴趣的:(JavaScript,jQuery)