- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,与下面的示例进行交互。
该组件的工作方式必须与输入类型范围完全相同。我遇到的问题是计算步长值,并根据当前步长和最大值的比例将拇指插入轨迹(再次,就像范围输入)。
欢迎任何使用 native 范围输入来控制此行为的响应。我没有使用它只是因为卡扣不顺畅。
const thumb = document.querySelector(".stepper__step");
const trail = document.querySelector(".stepper__trail");
// Variables that controls the range snap and values
var minVal = 0;
var maxVal = 20;
var step = 2;
thumb.ondragstart = function() {
return false;
};
thumb.addEventListener("mousedown", function(event) {
event.preventDefault();
addGrabbingClassFromThumb();
let shiftX = event.clientX - thumb.getBoundingClientRect().left;
// shiftY not needed, the thumb moves only horizontally
document.addEventListener("mousemove", onMouseMove);
document.addEventListener("mouseup", onMouseUp);
function onMouseMove(event) {
let newLeft = event.clientX - shiftX - trail.getBoundingClientRect().left;
// the pointer is out of trail => lock the thumb within the bounaries
if (newLeft < 0) {
newLeft = 0;
}
let rightEdge = trail.offsetWidth - thumb.offsetWidth;
if (newLeft > rightEdge) {
newLeft = rightEdge;
}
thumb.style.left = newLeft + "px";
}
function onMouseUp() {
document.removeEventListener("mouseup", onMouseUp);
document.removeEventListener("mousemove", onMouseMove);
}
});
thumb.addEventListener("mouseup", function() {
removeGrabbingClassFromThumb();
});
function addGrabbingClassFromThumb() {
thumb.className += " stepper__step--grabbing";
}
function removeGrabbingClassFromThumb() {
thumb.className = thumb.className.replace(/stepper__step--grabbing/g, "");
}
body {
background-color: #333333;
}
.stepper-wrapper {
width: 350px;
margin: 80px auto;
position: relative;
}
.stepper__trail {
height: 2px;
background-color: rgba(255, 255, 255, 0.25);
}
.stepper__step {
height: 20px;
position: absolute;
left: 0;
width: 50px;
bottom: 0;
transition: left 0.25s ease-in-out;
cursor: -webkit-grab;
cursor: grab;
}
.stepper__step:after {
content: "";
display: block;
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 100%;
background-color: #fff;
}
.stepper__step--grabbing {
cursor: -webkit-grabbing;
cursor: grabbing;
transition: unset;
}
<div class="stepper-wrapper">
<div class="stepper__step"></div>
<div class="stepper__trail"></div>
</div>
最佳答案
我认为您只是缺少一些计算和辅助函数来确定如何捕捉。
首先,我们需要包装器:
const wrapper = document.querySelector('.stepper-wrapper');
接下来,我们需要计算一些值来生成我们的范围点:
const containerWidth = wrapper.offsetWidth
const pixelsPerStep = Math.round(containerWidth / maxVal)
const totalSteps = Math.round(pixelsPerStep / step);
几个快速的辅助函数可以生成我们的范围并找到我们最近的可能点来捕捉:
const range = (start, stop, step = 1) =>
Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step)
const closest = (range, goal) => {
return range.reduce((prev, curr) => {
return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev)
})
}
在我们的 mousedown
事件监听器中,我们可以生成可以捕捉的点:
const snapTo = closest(rangePoints, newLeft);
这可以用作 thumb
元素的 .left
属性。
jsFiddle用于说明。
关于javascript - 通过捕捉移动拇指穿过轨迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133545/
我在 UITextField 上遇到了这个奇怪的错误,有时有一条线(实际上更多的是透明条)穿过它。有谁知道怎么去掉吗? 这是图片 xib 文件的链接:http://db.tt/7l2Bq42 代码链接
这个问题在这里已经有了答案: ggplot2 and a Stacked Bar Chart with Negative Values (1 个回答) 7年前关闭。 friend 们, 如何在 x 轴
首先我是初学者,我想在向下滚动页面并穿过某个 div 时显示一个菜单栏(当我页面顶部的实际菜单栏不再可见时)这个网站有一个完美的例子来解决我的问题:http://lenssenmannenmode.n
我怎样才能阻止这种情况发生? 这是我联系我们表单的代码。我正在使用 Bootstrap 。当我展开文本区域时,它会穿过分区。我可以通过添加内联 CSS 在文本区域内尝试任何替代方法吗?
如何用matplotlib绘制这样的图? 最佳答案 检查 this example来自 this group 例如: from matplotlib import pyplot as plt impo
所以我一直在研究一款游戏,到目前为止最大的问题是我们无法让玩家与场上的任何物体发生碰撞。相反,他们直接穿过树。谁能告诉我为什么?这是我尝试用于碰撞检测的代码: for tree in treelist
我有这个代码: my link 1 my link 2 my link 3 当我对 应用填充时像这样: ul { list-style: none; margin: 3
我对 pinescript 很新,我被困在这一点上......我只想在 10 EMA 穿过 21 EMA 而 21 高于 50 EMA 和 50 EMA 高于 200 EMA 时绘制交叉。这是指示多头
我是一名优秀的程序员,十分优秀!