如何实现左右滑动滑块切换展示两张重叠照片的对比效果?
检索关键词
- 中文检索:图片对比滑块、前后图滑动对比效果
- 英文检索:
Before After Image Slider、Image Comparison Slider
基础实现逻辑
- 布局:将两张待对比的图片放在同一个父容器内重叠摆放,底层放置默认展示的右侧图片,上层放置左侧展示的图片,上层图片容器设置
overflow: hidden属性,仅展示指定宽度范围内的内容 - 交互控件:在父容器内加入滑块元素,层级高于两张图片,支持鼠标/触摸拖动
- 逻辑同步:监听滑块的拖动事件,将滑块距离父容器左侧的偏移值,同步设置为上层图片容器的宽度,即可实现滑块左侧显示上层图、右侧显示底层图的对比效果
入门学习路径(优先文字教程)
建议先从无框架的原生HTML/CSS/JS版本入手,核心逻辑最容易理解:
- 搭建基础HTML结构:1个外层父容器,内部包含2个img元素(分别对应两张对比图)、1个滑块元素
- 编写CSS样式:父容器设置为相对定位,两张图片均设置为绝对定位且宽高和父容器匹配,上层图片容器设置
overflow: hidden,滑块设置为绝对定位、层级最高,可自定义拖拽手柄样式 - 实现JS交互:给滑块绑定按下事件(
mousedown/touchstart),触发后全局监听移动事件(mousemove/touchmove),实时计算当前触点距离父容器左侧的偏移值,同步赋值给上层图片的宽度和滑块的left属性;绑定松开事件(mouseup/touchend),解绑移动监听避免误触发 - 优化细节:增加边界判断,限制偏移值不能小于0也不能大于父容器总宽度,避免出现显示异常
如果需要视频教程,在YouTube搜索上述英文关键词加tutorial后缀即可找到对应内容。
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

