我正在尝试在enyo中编写垂直滑块(就像混音台上的控件一样)。我试图避免从头开始,所以我开始调整onyx.Slider类。我改变了从左到上的样式,从宽度到高度,以及一些其他调整,它的工作。我现在坚持让滑块从底部到顶部填充,因为它是垂直的,但它从上到下填充。提前感谢您的帮助。
以下是我所做的代码更改:
在ProgressBar.js中:
updateBarPosition: function(inPercent) {
this.$.bar.applyStyle("height", inPercent + "%");
},
Slider.js中的(除以64是暂时的黑客攻击):
valueChanged: function() {
this.value = this.clampValue(this.min, this.max, this.value);
var p = this.calcPercent(this.value);
this.updateKnobPosition(p/64);
if (this.lockBar) {
this.setProgress(this.value);
}
},
updateKnobPosition: function(inPercent) {
this.$.knob.applyStyle("top", inPercent + "%");
},
calcKnobPosition: function(inEvent) {
var y = inEvent.clientY - this.hasNode().getBoundingClientRect().top;
return (y / this.getBounds().height) * (this.max - this.min) + this.min;
},
CSS:
/* ProgressBar.css */
.onyx-progress-bar {
margin: 8px;
height: 400px;
width: 8px;
border: 1px solid rgba(15, 15, 15, 0.2);
border-radius: 3px;
background: #b8b8b8 url(./../images/gradient-invert.png) repeat-x;
background-size: auto 100%;
}
.onyx-progress-bar-bar {
height: 100%;
border-radius: 3px;
background: #58abef url(./../images/gradient.png) repeat-x;
background-size: auto 100%;
}
汤姆
答案 0 :(得分:1)
您可以采取几种方法。最明显的(除了事实上我没有首先发生)只是交换条形和条形条的背景/渐变。这将使您从底部看到填充物的外观。我会推荐这个。
另一种方法是我在这个jsFiddle中所做的:http://jsfiddle.net/RoySutton/b9PmA/(忽略doubled updateBarPosition函数)
我没有直接修改这些文件,而是从Slider派生并覆盖了相应的函数,并为垂直滑块添加了一个新类。
我将'fill'更改为绝对定位在滑块内。
现在,您的下一个问题是值'0'完全填满,'100'完全为空。我通过修改你的calcKnobPosition以从最大值调整并反转定位逻辑来处理这个问题,如下所示:http://jsfiddle.net/RoySutton/b9PmA/2/
return this.max - (y / this.getBounds().height) * (this.max - this.min);