JavaScript实现滑动门效果原理与代码解析

作者:青柠

时间:2026-10-22

浏览:139

本文详细解析了基于JavaScript实现的滑动门图片展示效果。通过计算图片宽度与露出宽度的差值,动态调整各层图片的left偏移量,实现点击切换时的平滑滑动动画。文章提供了完整的HTML结构、CSS样式及JS逻辑代码,适用于需要交互式图片展示的前端开发场景。

文章目录

JavaScript实现滑动门效果概述

本文分享了一个具体的滑动门特效实现案例,供读者参考学习。

滑动门效果展示:

JavaScript实现滑动门效果概述

滑动门效果实现原理

实现原理如下:

该效果包含四扇门,初始状态下第一扇门处于开启状态,其余三扇门关闭,如第一张示意图所示。假设图片宽度为120px,其他三扇门露出的宽度均为80px。在初始状态下,第二扇门距离左侧120px,第三扇门距离左侧200px,第四扇门距离左侧280px。当第二扇门被打开时,其距离左侧变为80px(即120px减去40px),而第三、四扇门的位置保持不变。当第三扇门被打开时,第二扇门距离左侧保持80px,第三扇门距离左侧变为160px(即200px减去40px),第四扇门位置不变。

JavaScript实现滑动门效果概述

由此可见,每扇门打开时,图片需要向左移动的距离等于图片宽度减去露出的宽度。以第三扇门打开为例,第二扇门需先向左移动,随后第三扇门再移动,且每扇门移动的距离均为图片宽度与露出宽度之差。

滑动门代码实现

具体实现程序如下:


<script type="text/javascript">
 window.onload = function() {
  var container = document.getElementById("container");
  var imgs = container.getElementsByTagName("img");//获取图像
  var imgWidth = imgs[0].offsetWidth;//图片的宽度
  var exposeWidth = 200;//露出的宽度
  var containerWidth = imgWidth + exposeWidth * (imgs.length - 1); //外部盒子的总宽度
  container.style.width = containerWidth + "px";

  function Initial() {
   for(var i = 1; i < imgs.length; i++) {
    imgs[i].style.left = imgWidth + exposeWidth * (i - 1) + "px";
   }
  }
  Initial();  
  var translateWidth = imgWidth - exposeWidth;//移动的距离
  for(var i = 0; i < imgs.length; i++) {
   (function(i) {
    imgs[i].onmouseover = function() {
     Initial(); //鼠标经过图片时,首先设置到初始状态
     for (var j=1;j<=i;j++) { //之前的图片都移动相同的距离
      imgs[j].style.left=parseInt(imgs[j].style.left)-translateWidth+"px";
     }
    }
   })(i);
  }

 }
</script>

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章