题引
资料:《css揭秘》
----- 图片对比滑动控件基本上可以理解为两层结构:下层是一张固定的图片;上层的图片则可以在水平方向上调整大小,从而或多或少地显露出下层图片。这正是 JavaScript 框架的价值所在:让上层图片的宽度可以由鼠标拖动调整。不过,要让某个元素的大小变得可调整,并不需要动用脚本。在 CSS 基本 UI 特性中,我们获得了一个为此而生的属性:低调的 resize !
简约版
先上html代码:
用一个 <//div> 作为它的容器,再对这个容器应用 resize属性
<div class="image-slider">
<div>
<img src="adamcatlace-before.jpg" alt="Before" />
</div>
<img src="adamcatlace-after.jpg" alt="After" />
</div>
css代码
.image-slider {
position: relative;
display: inline-block;
}
.image-slider>div {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 50%; /* 初始宽度 */
max-width: 100%;
overflow: hidden; /* 让它可以裁切图片 */
resize: horizontal;
}
.image-slider img {
display: block;
user-select: none; /* 即使用户在没有点中调节手柄的情况下拖动鼠标,也不会误选图片*/
}
.image-slider>div::before {
content: '';
position: absolute;
bottom: 0;
right: 0;
width: 12px;
height: 12px;
padding: 5px;
background: linear-gradient(-45deg, white 50%, transparent 0);
background-clip: content-box;
cursor: ew-resize; /* 提示用户这个区域可以像调节手柄那样拖动 */
}
效果
总结
有很多再加上js脚本控制的优化方案,使交互性更好:比如以将一个原生的滑块控件(HTML 范围输入控件)覆盖在图片上,用它来控制上层图片的伸缩