引言 在这篇文章, 我们会创建一个 slider 滑块来对比两张图片。 老样子,话不多说,先看效果。 CSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 .container { position: relative; } .resizer { b
引言在这篇文章, 我们会创建一个 slider 滑块来对比两张图片。 老样子,话不多说,先看效果。 CSS
JavaScript
通过上面的示例可以看到,拖动中间的 slider 滑块,可以很清楚的看到图片的对比效果。 下面我们就来看看是如何实现的。 定义 HTML 结构
修改后的图放在底部,滑块在中间,原图在最上层。 定义 CSS 样式
修改后的元素初始默认占据 50% 的宽度。 我们不使用 img 元素来显示修改后的图片,而是使用背景图方式显示,因为图片可以进行缩放。
因为使用背景图,所以修改后的图片元素需要设置更多样式,以达到最佳的显示效果。
为了达到对比的效果,我们还要给修改后的图片添加一层滤镜效果。
接下来设置 .resizer 元素的样式,相对而言要简单很多,只需要将它设置到中心位置即可。
使用 position 属性将它定为到中间,注意将鼠标的展现形式更换为 cursor: ew-resize。 HTML 结构和 CSS 样式就差不多了,接下来处理 JavaScript 事件相关内容。 当我们移动 .resizer 元素时,需要事实计算鼠标移动了多远的距离。然后根据当前鼠标的位置,修改 .resizer 元素的位置,以及修改后图片的大小。 如何拖动一个元素其实很简单,还不是很清楚的同学可以去看看我之前的文章 《如何实现一个自定义的 range slider?元素拖动其实很简单》。 接下来来看看 实际代码
代码有点长,需要你花点时间仔细看看才能理解。 最后还有一个需要注意的点,我们要保证鼠标滑块不会滑出可视范围,所以需要限制其最大值和最小值。 因为修改后的图片元素的宽度值时百分比类型,所以最小值为 0,最大值为 100。
|
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30