JS + CSS 图片切换效果

<div id="xxx">
     <script>
     var box =new PPTBox();
     box.width = 998; //宽度
     box.height = 323;//高度
     box.autoplayer = 3;//自动播放间隔时间

     //box.add({"url":"图片地址","title":"悬浮标题","href":"链接地址"})
     box.add({"url":"images/home_27.jpg","href":"#","title":"悬浮提示标题1"})
     box.add({"url":"images/home_27.jpg","href":"#","title":"悬浮提示标题2"})
     box.add({"url":"images/home_27.jpg","href":"#","title":"悬浮提示标题3"})
     box.add({"url":"images/home_27.jpg","href":"#","title":"悬浮提示标题4"})
     box.show();
    </script>
</div>


 

<script type="text/javascript" src="js/pptBox.js"></script>
<style>
/* 焦点图 */
.mainbox{
    overflow:hidden;
    position:relative;
}
.flashbox{
   overflow:hidden;
    position:relative;
}
.imagebox{
    text-align:center;position:relative;z-index:999;
}

.bitdiv{display:inline-block;width:18px;height:18px;margin:0 10px 10px 0px;cursor:pointer;}
.defimg{background-image:url(images/02.png)}
.curimg{background-image:url(images/01.png)}
</style>


js/pptBox.jsjs/pptBox.js 文件

   /**
    * 网络剑客 2012-10-27
    */
    function PPTBox()
    {
        this.uid = PPTBoxHelper.getId();
        PPTBoxHelper.instance[this.uid] = this;
        this._$ = function(id){return document.getElementById(id);};
        this.width = 988;//宽度
        this.height = 323;//高度
        this.picWidth = 15;//小图宽度
        this.picHeight = 12;//小图高度
        this.autoplayer = 4;//自动播放间隔(秒)
        this.target = "_blank";
        this._box = [];
        this._curIndex = 0;
    }
    PPTBox.prototype =
    {
        _createMainBox : function (){
            var flashBoxWidth = this.width * this._box.length + 5;
            var html="<div id='"+this.uid+"_mainbox' class='mainbox'  style='width:"+(this.width)+"px;height:"+(this.height+2)+"px;'>";
            html += "<div id='"+this.uid+"_flashbox' class='flashbox' style='width:"+flashBoxWidth+"px;height:"+(this.height+2)+"px;'></div>";
            html += "<div id='"+this.uid+"_imagebox' class='imagebox' style='width:"+this.width+"px;height:"+(this.picHeight+2)+"px;top:-"+(this.picHeight+20)+"px;'></div>";
            html += "</div>";
            document.write(html);
        },
        _init : function (){
            var picstyle= "";
            var eventstr = "PPTBoxHelper.instance['"+this.uid+"']";
            var imageHTML="";
            var flashbox = "";
            for(var i=0;i<this._box.length;i++){
                var parame = this._box[i];
                flashbox += this.flashHTML(parame.url,this.width,this.height,i);
                imageHTML ="<div class='bitdiv "+((i==0)?"curimg":"defimg")+"' title ="+parame.title+" src='bit01.gif' "+picstyle+" onclick = \""+eventstr+".clickPic("+i+")\"  οnmοuseοver=\""+eventstr+".mouseoverPic("+i+")\"></div>" + imageHTML;
            }
            this._$(this.uid+"_flashbox").innerHTML = flashbox;
            this._$(this.uid+"_imagebox").innerHTML = imageHTML;

        },
        _play : function(){
            clearInterval(this._autoplay);
            var idx = this._curIndex+1;
            if(idx>=this._box.length){idx=0;}
            this.changeIndex(idx);
            var eventstr = "PPTBoxHelper.instance['"+this.uid+"']._play()";
            this._autoplay = setInterval(eventstr,this.autoplayer*1000);

        },
        flashHTML : function(url,width,height,idx) {
            var isFlash = url.substring(url.lastIndexOf('.')+1).toLowerCase()=="swf";
            var html = "";
            if(isFlash){
                html = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' "
                + "codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' width='"+width+"' height='"+height+"'>"
                + "<param name=\"movie\" value=\""+url+"\" />"
                + "<param name='quality' value='high' />"
                + "<param name='wmode' value='transparent'>"
                + "<embed src='"+url+"' quality='high' wmode='opaque' pluginspage='http://www.macromedia.com/go/getflashplayer'"
                +"  type='application/x-shockwave-flash' width="+width+" height='"+height+"'></embed>"
                +"  </object>";
            } else {
                var eventstr = "PPTBoxHelper.instance['"+this.uid+"']";
                var style = "";
                if(this._box[idx].href){
                    style = "cursor:pointer"
                }
                html="<img src='"+url+"' style='width:"+width+"px;height:"+height+"px;"+style+"' onclick = \""+eventstr+".clickPic("+idx+")\"/>";
            }
            return html;
        },
        changeIndex : function(idx){
            var parame = this._box[idx];
            moveElement(this.uid+"_flashbox",-(idx*this.width),1);
            var imgs = this._$(this.uid+"_imagebox").getElementsByTagName("div");
            imgs[this._box.length-1-this._curIndex].className = "bitdiv defimg";
            imgs[this._box.length-1-idx].className = "bitdiv curimg";
            this._curIndex = idx;
        },
        mouseoverPic:function(idx){
            this.changeIndex(idx);
            if(this.autoplayer>0){
               clearInterval(this._autoplay);
               var eventstr = "PPTBoxHelper.instance['"+this.uid+"']._play()";
               this._autoplay = setInterval(eventstr,this.autoplayer*1000);
            }
        },
        clickPic:function(idx){
            var parame = this._box[idx];
            if(parame.href&¶me.href!=""){
                window.open(parame.href,this.target);
            }
        },
        add:function (imgParam){
            this._box[this._box.length] = imgParam;
        },
        show : function () {
           this._createMainBox();
           this._init();
           if(this.autoplayer>0){
               var eventstr = "PPTBoxHelper.instance['"+this.uid+"']._play()";
               this._autoplay = setInterval(eventstr,this.autoplayer*1000);
           }
        }
    }
    var PPTBoxHelper =
    {
        count: 0,
        instance: {},
        getId: function() { return '_ppt_box-' + (this.count++); }
    };

    function moveElement(elementID,final_x,interval) {
      if (!document.getElementById) return false;
      if (!document.getElementById(elementID)) return false;
      var elem = document.getElementById(elementID);
      if (elem.movement) {
        clearTimeout(elem.movement);
      }
      if (!elem.style.left) {
        elem.style.left = "0px";
      }
      var xpos = parseInt(elem.style.left);
      if (xpos == final_x ) {
            return true;
      }
      if (xpos < final_x) {
        var dist = Math.ceil((final_x - xpos)/5);
        xpos = xpos + dist;
      }
      if (xpos > final_x) {
        var dist = Math.ceil((xpos - final_x)/5);
        xpos = xpos - dist;
      }
      elem.style.left = xpos + "px";
      var repeat = "moveElement('"+elementID+"',"+final_x+","+interval+")";
      elem.movement = setTimeout(repeat,interval);
    }


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 CSS 3D transform 实现一个左右切换立体式图片效果。以下是一个简单的示例代码: HTML: ```html <div class="container"> <div class="image-wrapper"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> </div> </div> ``` CSS: ```css .container { width: 500px; height: 300px; perspective: 1000px; /* 透视距离 */ } .image-wrapper { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; /* 保持子元素的 3D 变换 */ transition: transform 0.5s; /* 动画过渡效果 */ } .image-wrapper img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; backface-visibility: hidden; /* 隐藏背面 */ } .image-wrapper img:last-child { transform: rotateY(180deg); /* 第二张图片旋转 180 度 */ } .container:hover .image-wrapper { transform: rotateY(-180deg); /* 鼠标悬停时旋转 180 度 */ } ``` 解释说明: - 父元素 `.container` 设置 `perspective` 属性,用于设置透视距离,产生 3D 效果。 - 图片容器 `.image-wrapper` 设置 `transform-style` 属性,用于保持子元素的 3D 变换。同时设置 `transition` 属性,用于指定动画过渡效果。 - 图片容器中每张图片设置 `backface-visibility` 属性,用于隐藏背面。 - 第二张图片使用 `transform: rotateY(180deg)` 旋转 180 度,使其呈现背面。 - 当鼠标悬停在容器上时,通过改变 `.image-wrapper` 的 `transform` 属性值,实现图片的旋转效果。 可以通过修改 `.container` 的宽高、图片数量和 `backface-visibility` 属性等进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值