运动-手风琴

一、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{
            width: 500px;
            height: 250px;
            margin: 100px auto;
            position: relative;
            overflow: hidden;
        }

        #box ul li{
            width: 500px;
            height: 250px;
            position: absolute;
            top:0;
        }

        #box ul li img{
            width: 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{
            width: 500px;
            height: 250px;
            margin: 100px auto;
            position: relative;
            overflow: hidden;
        }

        #box ul li{
            width: 500px;
            height: 250px;
            position: absolute;
            top:0;
        }

        #box ul li img{
            width: 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" ></li>
            <li><img src="../img/qin/2.jpg" ></li>
            <li><img src="../img/qin/3.jpg" ></li>
            <li><img src="../img/qin/4.jpg" ></li>
            <li><img src="../img/qin/5.jpg" ></li>
        </ul>
    </div>
</body>
</html>;
时间: 2024-10-07 17:41:45

运动-手风琴的相关文章

javascript效果:手风琴、轮播图、图片滑动

最近都没有更,就来几个效果充实一下. 都没有进行美化这步. 手风琴: 纯css: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>手风琴css</title> <style> .showBox{ width: 660px; overflow: hidden; } ul{ list-style:

js手风琴图片切换实现原理及函数分析

实现原理解读 使用两层for循环实现, 第一层有三个功能,分别给第个li: 添加索引 预设位置 添加事件 第二层有两个功能,整理图片位置: 鼠标的li,以及前面那些li的位置 鼠标后面那些li的位置 HTML/CSS 解读:略 HTML/CSS代码: <!-- Author: XiaoWen Create a file: 2016-12-14 09:41:11 Last modified: 2016-12-15 12:56:23 Start to work: Finish the work: O

纯js和纯css+html制作的手风琴的效果

一:纯css+html的手风琴效果 这种用css写的手风琴比较简单,主要是应用到css中的,transition属性. 代码如下: <!DOCTYPE HTML> <html> <head> <style> body{background: url('bg.gif') repeat;} ul,li,p{margin: 0px;padding: 0px;list-style: none;} #div{width: 1180px;height: 405px;bo

JS运动---运动基础(缓冲运动)

(1)手风琴效果 分析: (2)基础缓冲运动 接下来取整 原因: px为计算机识别的最小单位,1px无法再往下拆分.所以css如果取值200.5px,解析时计算机会自动将其改为200px注意:这里的数值并没有四舍五入计算,200.9px最后依然是200px 速度不能是小数,需要取整,所以接下来进行取整 因为从左到右运动和从右到左运动不一样,所以需要判断 (3)右侧悬浮框缓冲运动 <!DOCTYPE HTML> <html> <head> <meta charset

小米手环 / 运动手环 记步功能原理

很多朋友是第一次接触像小米手环这类运动计步产品,对于那么轻盈小巧的手环能够精准计步,甚至能详细完整的记录睡眠时间觉得非常神奇,本文就和大家详细说说在看不见的小米手环背板下,它是怎么工作的. 1. 手机上的运动步数是怎么来的? A:简单来说:小米手环能够精准计步由硬件和软件算法两方面组成,缺一不可. 硬件 是指小米手环里内置的那枚强悍的三轴加速度传感器ADXL362 (注1),军用级,大家知道想要达到军用级,这得有多苛刻.其实三轴加速度传感器不神秘,在大多数中高档手机里都有配备加速度传感器,只是在

线扫相机项目中定量判断机构运动是否匀速的方法

线扫相机的原理:线扫相机一般一次只拍摄一条线(线宽通常是1个像素),在机构运动的过程中,线扫相机不断地拍摄线,于是“聚线成面”,这就是线扫相机成像的原理. 线扫相机的原理决定了,它所拍摄的物体必须要运动.机构运动的话,就存在机构的速度是否和线扫相机采集的速度匹配的问题. 将对机构运动速度的要求进行拆分的话,其实就是如下两点: ① 运动速度必须与线扫相机的工作行频(即采集速度)相匹配. ② 机构的运动速度最好是匀速,或者十分接近匀速. 如果机构速度过快,最后的图像在运动方向上被压缩:如果机构速度过

微信运动记步原理,及刷步数方法大揭密

随着"微信运动"功能的开启,朋友圈里燃起了每天刷步的热情,每天为了争夺运动封面第一名,不惜下班还在楼下多绕一圈儿再回家.那么你们都知道微信运动是如何记录我们每日行程步数的吗?这个数据到底准不准确呢?今天小编就为大家来一个大揭密. 原理: 手机内置了振动传感器或协助处理器,根据这些设备的震动频率来储存数据.简单地说,就是人在步行时重心都有一点上下移动,传感器和协作器感应到这种重心移动并进行记数. 设备: iPhone 5S/6/6 Plus三款苹果手机因为自带M7/M8协处理器,无需任何

驯鹿拉圣诞老人动画效果图如下(四周运动)

html如下: <div style="width:400px;height:300px;background:url(yuandan.jpg) no-repeatcenter;background-size:300px 200px;"> <canvas id="canvas" style="border:1px solid #000;display:block;margin:40px auto 0"></canva

JS完美运动框架

/*---------------------------------------------------------------------------- 功能: 获取某个节点下的所有ClassName为'sClass'的元素输入: oParent:要获取的class元素的父级节点 sClass:要获取的元素的class名称输出: 获取到的节点数组 --------------------------------------------------------*/ function getEl