我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript实现橱窗展示效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript实现橱窗展示效果

本文实例为大家分享了JavaScript实现橱窗展示效果的具体代码,供大家参考,具体内容如下

1.先搭架子


* {
            margin: 0;
            padding: 0;
        }
        
        .box {
            width: 800px;
            height: 190px;
            border: 1px solid #000;
            margin: 100px auto;
        }
        
        ul {
            list-style: none;
            display: flex;
        }
        
        ul img {
            vertical-align: top;
        }
        
        .progress {
            width: 100%;
            height: 30px;
            background: #ccc;
        }
        
        .progress>.line {
            width: 100px;
            height: 100%;
            background: orange;
            border-radius: 15px;
 }

<div class="box">
        <ul>
            <li>
                <img class="lazy" data-src="images/img1.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img2.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img3.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img4.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img5.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img6.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img7.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img8.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img9.jpg" alt="">
            </li>
            <li>
                <img class="lazy" data-src="images/img10.jpg" alt="">
            </li>
        </ul>
        <div class="progress">
            <div class="line"></div>
        </div>
</div>

2.逻辑部分

拿到需要操作的元素

计算ul的宽度

设置ul的宽度

计算滚动条的宽度

设置滚动条的宽度

监听鼠标按下的事件

  • 拿到滚动条当前的位置
  • 拿到鼠标在滚动条中按下的位置

监听鼠标移动事件

  • 拿到鼠标在滚动条中移动之后的位置
  • 计算偏移位
  • 安全校验
  • 重新设置滚动条的位置
  • 计算图片的滚动距离
  • 重新设置图片的位置

 .box {
           overflow: hidden;
        }
        
        ul {
            position: relative;
        }
        
        .progress {
            position: relative;
        }
        
        .progress>.line {
            position: absolute;
            left: 0;
            top: 0;
  }

//1.拿到需要操作的元素
const oUl = document.querySelector("ul");
const oItems = oUl.querySelectorAll("li");
const oProgress = document.querySelector(".progress");
const oLine = document.querySelector(".line");
const oBox = document.querySelector(".box");
 
//2.计算ul的宽度
const ulWidth = oItems[0].offsetWidth * oItems.length;
 
//3.设置ul的宽度
oUl.style.width = ulWidth + 'px';
 
//4.计算滚动条的宽度
// 滚动条的宽度/滚动条滚动范围 = 容器的宽度/内容的范围
const progressWidth = oProgress.offsetWidth;
const boxWidth = oBox.offsetWidth;
const lineWidth = boxWidth / ulWidth * progressWidth;
 
//5.设置滚动条的宽度
oLine.style.width = lineWidth + 'px';
// 计算滚动条最大能够滚动的范围
const maxLineX = progressWidth - lineWidth;
// 计算图片最大能够滚动的范围
const maxImgX = boxWidth - ulWidth;
 
 //6.监听鼠标按下的事件
oLine.onmousedown = function(e) {

e = e || window.e;
//a.拿到滚动条当前的位置
let begin = parseFloat(oLine.style.left) || 0;
 
//b.拿到鼠标在滚动条中按下的位置
let mouseX = e.pageX - oBox.offsetLeft;
 
//7.监听鼠标移动事件
oLine.onmousemove = function(e) {
e = e || window.e;
//c.拿到鼠标在滚动条中移动之后的位置
let moveMouseX = e.pageX - oBox.offsetLeft;
 
//d.计算偏移位
let offsetX = moveMouseX - mouseX + begin;
 
//e.安全校验
offsetX = offsetX < 0 ? 0 : offsetX;
offsetX = offsetX > maxLineX ? maxLineX : offsetX;
 
 //f.重新设置滚动条的位置
oLine.style.left = offsetX + 'px';
 
//g.计算图片的滚动距离
// 滚动条滚动的距离 / 滚动条最大能够滚动的范围 = 图片滚动的距离 / 图片最大能够滚动的范围
// 滚动条滚动的距离 / 滚动条最大能够滚动的范围 * 图片最大能够滚动的范围 = 图片滚动的距离
const imgOffsetX = offsetX / maxLineX * maxImgX;
 
// h.重新设置图片的位置
      oUl.style.left = imgOffsetX + "px";
            };
        };
        document.onmouseup = function() {
            oLine.onmousemove = null;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript实现橱窗展示效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript如何实现橱窗展示效果

这篇文章将为大家详细讲解有关JavaScript如何实现橱窗展示效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.先搭架子* { margin: 0; pa
2023-06-25

纯CSS如何实现图片百叶窗展示效果

这篇文章主要为大家展示了纯CSS如何实现图片百叶窗展示效果,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“纯CSS如何实现图片百叶窗展示效果”这篇文章吧。首先给大家看一下完成效果主要思路:其实这个百
2023-06-08

javascript效果实现

随着互联网的不断发展和普及,网站越来越注重用户体验,其中JavaScript成为了网站开发中不可或缺的一部分。它能够为网站带来各种炫酷的效果和强大的交互功能,大大提升了网站的用户体验和互动性。下面我们就来探讨一些常见的JavaScript效果。一、轮播图效果轮播图是网站中非常常见的一种效果,它能够吸引用户的眼球,同时也能够为网站展示产品、资讯等内容。在JavaScript中通过
2023-05-17

Javascript如何实现点击提示效果

这篇文章主要介绍了Javascript如何实现点击提示效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Javascript如何实现点击提示效果文章都会有所收获,下面我们一起来看看吧。1、在电脑中新建一个HTM
2023-07-04

HTML表格标签与JavaScript交互:实现动态数据展示效果

HTML表格标签与JavaScript交互,是一种常用的动态数据展示方法。通过操作表格DOM结构,JavaScript可以轻松地实现数据表的增、删、改、查操作,以及表格样式的修改等,从而让表格变得更加灵活和美观。
HTML表格标签与JavaScript交互:实现动态数据展示效果
2024-02-11

Android实现底部弹窗效果

本文实例为大家分享了Android实现底部弹窗效果的具体代码,供大家参考,具体内容如下源代码地址:https://github.com/luoye123/Box东西很简单,我就直接亮代码了: 1、activity_main.xml
2023-05-31

编程热搜

目录