zoukankan      html  css  js  c++  java
  • 橱窗特效

    html结构
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>橱窗</title>
        <style>
            *{
                padding0;
                margin0;
                list-stylenone;
                bordernone;
            }
            img{
                vertical-aligntop;
            }
            .box{
                width900px;
                height300px;
                margin40px auto;
                border1px solid #ccc;
                positionrelative;
                overflowhidden;
            }
            #box-top ul{
                width2100px;
                positionabsolute;
                left0;
                top:40px
            }
            #box-top li{
                floatleft;
                margin-right5px;
            }
            #box-bot{
                width100%;
                height25px;
                background#727272;
                positionabsolute;
                left0;
                bottom0;
            }
            #mask{
                width0;
                height100%;
                backgroundorange;
                positionabsolute;
                left0;
                top:0;
                border-radius12px;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <div id="box-top">
            <ul>
                <li><img src="images/1.jpg" alt=""></li>
                <li><img src="images/2.jpg" alt=""></li>
                <li><img src="images/3.jpg" alt=""></li>
                <li><img src="images/4.jpg" alt=""></li>
                <li><img src="images/5.jpg" alt=""></li>
                <li><img src="images/6.jpg" alt=""></li>
                <li><img src="images/7.jpg" alt=""></li>
                <li><img src="images/8.jpg" alt=""></li>
            </ul>
        </div>
        <div id="box-bot">
            <span id="mask"></span>
        </div>
    </div>
    <script src="index.js"></script>
    </body>
    </html>
     
    js部分
    window.addEventListener('load',function () {

        let box=document.getElementsByClassName("box")[0]
        let boxtop=document.getElementById("box-top")
        let oul=boxtop.getElementsByTagName("ul")[0]
        let mask=document.getElementById("mask")

        //求出mask的宽度
        //滚动条长度=(盒子宽度/内容宽度)* 盒子宽度
        let mask_len=(box.offsetWidth/oul.offsetWidth)*box.offsetWidth
         mask.style.width=mask_len+"px"
        //鼠标操作
        mask.onmousedown=function () {
            let e=window.event || arguments[0]
            //求出鼠标初始位置
            let beginX=e.clientX-mask.offsetLeft

            //求mask移动距离
            document.onmousemove=function () {
                let e=window.event || arguments[0]
                let endX=e.clientX-beginX

                if(endX<0){
                    endX=0
                }else if(endX>=box.offsetWidth-mask.offsetWidth){
                    endX=box.offsetWidth-mask.offsetWidth
                }
                mask.style.left=endX+"px"

                // 内容走的长度=(内容长度-盒子长度)/(盒子长度-滚动条长度)*滚动条走的距离

                let contentW=(oul.offsetWidth-box.offsetWidth)/(box.offsetWidth-mask.offsetWidth)*endX
               oul.style.left=-contentW+"px"
                return false
            }
            document.onmouseup=function () {
                document.onmousemove=null
            }

        }

    })
    橱窗特效换算公式

    1.获取滚动条长度
      滚动条长度/盒子长度=盒子长度/内容长度
      滚动条长度=(盒子宽度/内容宽度)* 盒子宽度

    2.拖动滚动条,求内容走的长度
      内容走的距离/滚动条走的距离=(内容长度-盒子长度)/(盒子长度-滚动条长度)
      内容走的长度=(内容长度-盒子长度)/(盒子长度-滚动条长度)*滚动条走的距离
  • 相关阅读:
    (转)tomcat与地址栏图标之研究(多浏览器)
    (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解
    (转) Tomcat部署Web应用方法总结
    (转)mysql账号权限密码设置方法
    (转) mysql的连接,创建账号,修改密码
    (转)mysql各个主要版本之间的差异
    (转)浅析Mysql的my.ini文件
    (转)如何在Windows上安装多个MySQL
    [笔记]线段树学习笔记
    [教程]对拍程序(linux)+ 考试(做题)生成数据 + 提交注意事项
  • 原文地址:https://www.cnblogs.com/wywd/p/13149573.html
Copyright © 2011-2022 走看看