首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML5前后比较滑块

HTML5前后比较滑块
EN

Stack Overflow用户
提问于 2018-06-24 01:50:42
回答 1查看 1.2K关注 0票数 0

有很多“前后比较滑块”。我对改进它很感兴趣。

有没有可能在不点击的情况下滑动图片?我的意思是,除数(拖拽)将链接到鼠标。当用户只需鼠标悬停时(不像现在那样点击和拖动),幻灯片就会改变。

以下是参考资料:

https://codepen.io/dudleystorey/pen/HkwBo

https://codyhouse.co/gem/css-jquery-image-comparison-slider (单击演示)

代码语言:javascript
复制
<div id="comparison">
  <figure>
    <div id="divisor"></div>
  </figure>
  <input type="range" min="0" max="100" value="50" id="slider" oninput="moveDivisor()">
</div>


/**CSS**/
div#comparison { 
  width: 60vw;
  height: 60vw;
  max-width: 600px;
  max-height: 600px;
  overflow: hidden; 
}
div#comparison figure { 
  background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-before.jpg); 
  background-size: cover;
  position: relative;
  font-size: 0;
  width: 100%; 
  height: 100%;
  margin: 0; 
}
div#comparison figure > img { 
  position: relative;
  width: 100%;
}
div#comparison figure div { 
  background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-after.jpg);
  background-size: cover;
  position: absolute;
  width: 50%; 
  box-shadow: 0 5px 10px -2px rgba(0,0,0,0.3);
  overflow: hidden;
  bottom: 0;
  height: 100%;
}

input[type=range]{
  -webkit-appearance:none;
  -moz-appearance:none;
  position: relative;
  top: -2rem; left: -2%;
  background-color: rgba(255,255,255,0.1);
  width: 102%; 
}
input[type=range]:focus { 
  outline: none; 
}
input[type=range]:active { 
  outline: none;  
}

input[type=range]::-moz-range-track { 
  -moz-appearance:none;
    height:15px;
    width: 98%;
    background-color: rgba(255,255,255,0.1); 
    position: relative;
    outline: none;    
 }
input[type=range]::active { 
  border: none; 
  outline: none;
}
input[type=range]::-webkit-slider-thumb {
    -webkit-appearance:none;
    width: 20px; height: 15px;   
    background: #fff;
    border-radius: 0;
}
input[type=range]::-moz-range-thumb {
  -moz-appearance: none;
  width: 20px;
  height: 15px;
  background: #fff;
  border-radius: 0;
}   
input[type=range]:focus::-webkit-slider-thumb {
    background: rgba(255,255,255,0.5);
}
input[type=range]:focus::-moz-range-thumb {
    background: rgba(255,255,255,0.5);
}


/**JS**/
var divisor = document.getElementById("divisor"),
slider = document.getElementById("slider");
function moveDivisor() { 
    divisor.style.width = slider.value+"%";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-24 02:00:42

是的,这在图片比较网站和像Buzzfeed/ClickHole这样的地方已经很常见了。

我已经修改了您的CodePen演示以使用mousemove事件,因此不需要单击/拖动:

代码语言:javascript
复制
var divisor = document.getElementById("divisor");
var comparisonWidth = document.getElementById("comparison").clientWidth;

function moveDivisor(e) {
  divisor.style.width = (e.offsetX * 100 / comparisonWidth) + "%";
}
代码语言:javascript
复制
div#comparison {
  width: 60vw;
  height: 60vw;
  max-width: 600px;
  max-height: 600px;
  overflow: hidden;
}

div#comparison figure {
  background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-before.jpg);
  background-size: cover;
  position: relative;
  font-size: 0;
  width: 100%;
  height: 100%;
  margin: 0;
}

div#comparison figure>img {
  position: relative;
  width: 100%;
}

div#comparison figure div {
  background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-after.jpg);
  background-size: cover;
  position: absolute;
  width: 50%;
  box-shadow: 0 5px 10px -2px rgba(0, 0, 0, 0.3);
  overflow: hidden;
  bottom: 0;
  height: 100%;
}
代码语言:javascript
复制
<div id="comparison" onmousemove="moveDivisor(event)">
  <figure>
    <div id="divisor"></div>
  </figure>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51003696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档