Я создал специальный слайдер анимации тома, но он не работает должным образом. У меня действительно возникают проблемы с выяснением того, что происходит - громкость и слайдер меняются, но не так, как ожидалось. Вот код:Почему этот пользовательский слайдер анимации тома не работает должным образом?
$(function() {
var $volumeBar = $('#Volume-Bar');
var $volumeContainer = $('#Volume-Container');
var $value = $('.value');
$volumeContainer.on('mousedown', function(event) {
var height = $volumeContainer.height();
var startingCoord = event.offsetY;
var currentCoord;
var percent;
var difference;
seekingVol = true;
$volumeContainer.on('mouseup mouseleave', function() {
if (seekingVol) {
seekingVol = false;
}
});
$volumeContainer.on('mousemove', function(event) {
if (seekingVol) {
currentCoord = event.offsetY;
percent = (currentCoord/height) * 100;
$value.html(percent + '%');
$volumeBar.css({
'height': percent + '%'
});
}
});
});
});
@import url(https://fonts.googleapis.com/css?family=Bitter:700);
.value {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
position:absolute;
color:white;
width:100%;
text-align:center;
font-family:Bitter;
font-size:20px;
pointer-events:none;
}
#Volume-Container {
position:relative;
width:75px;
height:150px;
background-color:#0e2030;
display: -webkit-box;
\t display: -webkit-flex;
\t display: -ms-flexbox;
\t display: flex;
\t -webkit-box-orient:vertical;
\t -webkit-box-direction:normal;
\t -webkit-flex-direction:column;
\t -ms-flex-direction:column;
\t flex-direction:column;
\t -webkit-box-align: center;
\t -webkit-align-items: center;
\t -ms-flex-align: center;
\t align-items: center;
\t -webkit-box-pack: center;
\t -webkit-justify-content: center;
\t -ms-flex-pack: center;
\t justify-content: center;
}
#Volume-Bar {
position:absolute;
bottom:0px;
height:30%;
width:100%;
background-color:#6ab2f2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Volume-Container">
<div class="value">0%</div>
<div id="Volume-Bar"></div>
</div>
Что случилось с этим?
Из ваших первых пуль, хотя и действителен, я бы указал, что # 1, 4 и 6 не кажутся уместными для странной производительности (это были случайные ошибки из-за создания простого простого примера, демонстрирующего реальную проблему - JS). –
@Viziionary Вы просто сказали: «Но он работает неправильно» и «Что случилось с этим?». Вы не спрашивали о странной производительности (дрифтинг вызван укладкой анимации). В этом не было ошибок, и я согласен с исчерпывающим ответом. Не принимайте это лично; мы только развиваемся как кодеры, признавая, что иногда мы делаем ошибки :-) - будут лучшие способы, чем решения, которые я представляю, я уверен, но это итеративная вещь, и в итоге вы достигаете точки «достаточно хорошо». –
Также ваш последний абзац, я полагаю, был написан без понимания моих окончательных изменений на вопрос - я добавил правила CSS, чтобы избежать выбора текста. Опять же, просто случайный аспект моего примера. –