zoukankan      html  css  js  c++  java
  • 运动-手风琴

    一、html+css布局

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>手风琴</title>
        <script src='../../package/move.js'></script>
        <style>
            *{
                list-style: none;
                margin: 0;
                padding: 0;
            }
            #box{
                 500px;
                height: 250px;
                margin: 100px auto;
                position: relative;
                overflow: hidden;
            }
    
            #box ul li{
                 500px;
                height: 250px;
                position: absolute;
                top:0;
            }
    
            #box ul li img{
                 500px;
                height: 250px;
            }
    
    
        </style>
    </head>
    <body>
        <div id="box">
            <ul>
                <li><img src="../img/qin/1.jpg" alt=""></li>
                <li><img src="../img/qin/2.jpg" alt=""></li>
                <li><img src="../img/qin/3.jpg" alt=""></li>
                <li><img src="../img/qin/4.jpg" alt=""></li>
                <li><img src="../img/qin/5.jpg" alt=""></li>
            </ul>
        </div>
    </body>
    </html>;

    二、获取需要操作的元素

    var oBox=document.getElementById('box');
    var aLi=oBox.getElementsByTagName('li');

    三、布局

    分析布局可以知道,第一个li的left值为0,位置是不需要变化的

    我们假设右边每个竖条的宽度为30  var w=30;

    第二个li的left值为:oBox的盒模型的宽度减去4*w   -------->4===aLi.length-1;

    第三个li的left值为:oBox的盒模型的宽度减去3*w   -------->3===aLi.length-2;

    第三个li的left值为:oBox的盒模型的宽度减去2*w   -------->2===aLi.length-3;

    第三个li的left值为:oBox的盒模型的宽度减去1*w    -------->1===aLi.length-4;

            //布局
            var w=30;
            for(var i=1;i<aLi.length;i++){
                aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+'px';
            }

    四、for循环,给每个li添加一个鼠标移入事件

    假设移入之后的样式为上图所示,则分析布局:

    左边:

    第一个:left为w*0;

    第二个:left为w*1

    中间部分:left为w*2

    右边:

    第一个:left为oBox.offsetWidth-2*w+'px';-------->2===(aLi.length-3)*w+'px';

    第二个:left为oBox.offsetWidth-1*w+'px';-------->1===(aLi.length-4)*w+'px';

    所以我们需要循环判断li是在左边还是在右边,假设每个li上面都有一个索引值,从0开始,则第一个的索引值为0,第二个为1,第三个为2,依次类推,如果i的值是小于等于当前li的index的时候,则使li全部处于左边,否则处于右边,代码如下:

            for(var i=0;i<aLi.length;i++){
                aLi[i].index=i;
                aLi[i].onmouseover=function(){
                    for(var i=0;i<aLi.length;i++){
                        if(i<=this.index){
                            /*aLi[i].style.left=i*w+'px';*/
                            move(aLi[i],{left:i*w})
                        }else{
                            /*aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+'px';*/
                            move(aLi[i],{left:oBox.offsetWidth-(aLi.length-i)*w})
                        }
                    };
                };
    
            };

    完整代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>手风琴</title>
        <script src='../../package/move.js'></script>
        <style>
            *{
                list-style: none;
                margin: 0;
                padding: 0;
            }
            #box{
                 500px;
                height: 250px;
                margin: 100px auto;
                position: relative;
                overflow: hidden;
            }
    
            #box ul li{
                 500px;
                height: 250px;
                position: absolute;
                top:0;
            }
    
            #box ul li img{
                 500px;
                height: 250px;
            }
    
    
        </style>
        <script>
        window.onload=function(){
            var oBox=document.getElementById('box');
            var aLi=oBox.getElementsByTagName('li');
    
            //布局
            var w=30;
            for(var i=1;i<aLi.length;i++){
                aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+'px';
            }
    
            for(var i=0;i<aLi.length;i++){
                aLi[i].index=i;
                aLi[i].onmouseover=function(){
                    for(var i=0;i<aLi.length;i++){
                        if(i<=this.index){
                            /*aLi[i].style.left=i*w+'px';*/
                            move(aLi[i],{left:i*w})
                        }else{
                            /*aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+'px';*/
                            move(aLi[i],{left:oBox.offsetWidth-(aLi.length-i)*w})
                        };
                    };
                };
    
            };
    
        };
        </script>
    </head>
    <body>
        <div id="box">
            <ul>
                <li><img src="../img/qin/1.jpg" alt=""></li>
                <li><img src="../img/qin/2.jpg" alt=""></li>
                <li><img src="../img/qin/3.jpg" alt=""></li>
                <li><img src="../img/qin/4.jpg" alt=""></li>
                <li><img src="../img/qin/5.jpg" alt=""></li>
            </ul>
        </div>
    </body>
    </html>;

     

  • 相关阅读:
    超参数调优
    集成学习(一)
    L1范数与L2范数
    HMM与CRF
    主题模型LDA
    性能评估指标
    java-jdk8下载及安装
    pandas相关性分析
    pandas小技巧
    Window—mysql下载及安装
  • 原文地址:https://www.cnblogs.com/xuxiaozhi/p/10209069.html
Copyright © 2011-2022 走看看