如何同时使用Math.max()和Math.min()来绑定滚动块?
How Do I Use Both Math.max() and Math.min() to bound my dragger
我正在构建一个水平拖动页面布局。有3列,有两个拖动对象。除了设置拖动的最大/最小值外,一切都很好。
布局看起来像这样,两个拖拽条在colB的两侧。
---------------------------
colA | colB | colC
| |
| |
| |
| |
| |
| |
| |
| |
我需要设置它,使colA的滚动块的最大宽度(即它的左值)等于colC的滚动块。同样,ColC的最小值需要是colA的draggers的左值。
函数是这样的:
function doDragA(e) {
dragA.style.left = (e.clientX) + 'px';
}
function doDragC(e) {
dragC.style.left = (e.clientX) + 'px';
}
,我试着这样做:
function doDragA(e) {
var posC = parseInt(document.defaultView.getComputedStyle(dragC).left, 10);
dragA.style.left = (math.max(posC), math.min(0)) e.clientX + 'px';
}
function doDragC(e) {
var posA = parseInt(document.defaultView.getComputedStyle(dragA).left, 10);
dragC.style.left = (math.max(0), math.min(posA)) e.clientX + 'px';
}
但是我得到语法错误。我已经控制台记录的值,他们通过,这只是数学最大/分钟语法我错了。
首先,javascript是区分大小写的,并且数学对象是Math
,而不是math
。
其次,min
和max
的用法是提供一个参数列表,而不仅仅是一个-它返回'这些参数中最高/最低的值是多少'的答案。
假设你想让e.clientX
的值被valueMax
和valueMin
的值所包围:
var valueUpToMax = Math.min(valueMax, e.clientX);
var valueAtLeastMin = Math.max(valueMin, e.clientX);
// so we can combine those to bound on both sides:
var boundedValue = Math.max(valueMin, Math.min(valueMax, e.clientX));
看起来它们应该是相反的;我们通过使用Math.min
来限制一个最大值,但这是因为我们限制了一个最大值,而不是试图得到一个最大的数值。
一般原则是像在数学中那样使用函数:
c = f(a, b);
e = g(c, d);
-> e = g( f(a, b), d);
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 对API数据使用声明性绑定
- 如何销毁/删除/取消绑定SnapSVG.js
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 数据绑定:'系统Char'不包含名为'xxxxx'
- react组件中的绑定方法
- 如何将ngrepeat下的ngmodel绑定到$scope
- WinJS内联绑定语法
- ng绑定和ng href问题.ng href未从控制器加载数据
- 如何同时使用Math.max()和Math.min()来绑定滚动块?