使用Javascript + Input type=range滚动Div
Scroll a Div using Javascript + Input type=range
我目前正在研究一个项目,我必须根据输入类型=范围的移动滚动某个部分。这是代码-
$('input[type=range]').val('0');
$('input[type=range]').on('change input', function() {
var max = 60;
var value = $(this).val();
var percent = value / max;
var height = $('.tooltip').height();
console.log("v",value);
var top = value + "%";
console.log("t",top);
$('.tooltip').css('top', top);
})
.tooltip {
position: absolute;
left: 0;
background: silver;
border-left: dotted 2px orange;
padding: 2px;
max-width: 200px;
text-align: center;
}
input[type=range] {
margin-top: 50px;
width: 100%;
}
input[type=range]::-webkit-slider-thumb:after {
content: '';
width: 100px;
background: transparent;
color: #000;
border-left: dotted 2px orange;
pointer-events: none;
padding: 50px;
position: relative;
top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="height:250px;position:relative;border:2px solid;width:200px;overflow:hidden;">
<div class="tooltip">
<p>How can I get this border to <em>consistently</em> align with the one on the thumb?</p>
</div>
</div>
<input type="range" min="0" max="100"/>
-这是工作。但问题是,一旦我滚动到100%,滚动div超出了外部div。我希望滚动div在外部div结束时停止,即使范围是在100%(滚动div不应该越过外部div)。
- 将javascript部分的max def更改为100,因为输入已经定义了max="100"。
- 使用高差代替高度
$('input[type=range]').val('0');
$('input[type=range]').on('change input', function() {
var max = 100;
var value = $(this).val();
var percent = value / max;
var parent_height = $('.tooltip').parent().height();
var height = $('.tooltip').height();
//console.log("p:" + parent_height + " s:" + height + " %:" + percent);
var top = (parent_height - height) * percent;
//console.log("t", top, "h", parent_height - height);
if(percent <= 1)
$('.tooltip').css('top', top + "px");
})
.tooltip {
position: absolute;
left: 0;
background: silver;
border-left: dotted 2px orange;
padding: 2px;
max-width: 200px;
text-align: center;
}
input[type=range] {
margin-top: 50px;
width: 100%;
}
input[type=range]::-webkit-slider-thumb:after {
content: '';
width: 100px;
background: transparent;
color: #000;
border-left: dotted 2px orange;
pointer-events: none;
padding: 50px;
position: relative;
top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="height:250px;position:relative;border:2px solid;width:200px;overflow:hidden;">
<div class="tooltip">
<p>How can I get this border to <em>consistently</em> align with the one on the thumb?</p>
</div>
</div>
<input type="range" min="0" max="100" />
div
左侧设置前需要添加条件
var tooltipWidth = $('.tooltip').width();
if(left + tooltipWidth > width){
left = width - tooltipWidth;
}
相关文章:
- 幻灯片滚动javascript不起作用
- 将视口底部滚动到元素底部
- jQuery Lazy加载动画滚动
- 设置滑块分区上的滚动
- 结合jQuery和jetpack无限滚动
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 滚动到容器中的下一个元素-几乎到了
- 只覆盖箭头键滚动事件
- Javascript如何找到滚动事件的来源
- Image赢得't隐藏在滚动jQuery上
- Safari(Mac OS)上的jQuery平滑滚动问题
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 禁用(而不是隐藏)浏览器滚动条
- JavaScript上下滚动不可预测
- 滚动和表格
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 我希望只有在我滚动页面后才能显示我的返回页首图标
- 循环滚动数组
- 滚动以修复向上滚动的问题
- 使用Javascript + Input type=range滚动Div