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

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

由此可见,每扇门打开时,图片需要向左移动的距离等于图片宽度减去露出的宽度。以第三扇门打开为例,第二扇门需先向左移动,随后第三扇门再移动,且每扇门移动的距离均为图片宽度与露出宽度之差。
滑动门代码实现
具体实现程序如下:
<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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
JavaScript新手常犯的编码错误与最佳实践指南
2026-11-04 22:12:38
为什么箭头函数不能直接用作JS立即执行函数
2026-11-04 21:07:26
