Динамичное изменение значения индикатора путём перетаскивания заполненной части курсором
Мне нравится делать всякие интерактивные динамические штучки на сайте, где пользователи сами устанавливают настройки. Здесь нужно было изловчиться, чтобы как-то наглядно и просто продемонстрировать действие свойства border-image-slice.
- Значение из списка select в данном случае выбирать не удобно.
- Предоставить читателям возможность самим заполнять поле input тоже не вариант — велик шанс написать что-то не то.
- drag & drop JavaScript получился бы огромен, нужно было бы учесть, что перемещаться элемент должен только вертикально или только горизонтально.
- Цветную полоску у progress не понятно как расширять/сужать мышкой.
<style>
/* линия-индикатор */
#blok {
width: 100%;
padding: 1px;
border: 1.3em solid #eee;
border-radius: 5px;
-moz-box-sizing: border-box; box-sizing: border-box;
background: #eee linear-gradient(#BCBCBC, #fff0f5);
box-shadow: inset 0 1px 1px #575555, inset 0 -1px 1px #fff;
}
#blok div {
max-width: 100%;
width: 5%;
height: 1.2em;
resize: horizontal;
overflow: auto;
background: red linear-gradient(270deg, #ff0000 15px, #ffc0cb 30px);
}
/* банка CSS */
#banka {
position: relative;
width: 50%;
margin: 0 auto;
padding-top: 60%;
border: 5px solid rgba(221,221,221,.9);
border-radius: 40%/70%;
background: linear-gradient(to right, rgba(221,221,221,.5), rgba(150,150,150,.5)), linear-gradient(#ff0000, #ffff00);
background-repeat: no-repeat;
background-position: 50% 100%;
background-size: auto, 100% 5%;
}
#banka:after {
content: "";
position: absolute;
top: -3%;
left: 22%;
width: 55%;
padding-top: 10%;
border-radius: 60%;
background: rgba(238,238,238,.6);
box-shadow: 0 0 15px rgba(238,238,238,.9);
}
#banka:before {
content: "";
position: absolute;
top: -10%;
left: 15%;
width: 70%;
padding-top: 25%;
border-radius: 40%;
background: linear-gradient(rgba(150,150,150,.8), rgba(221,221,221,.3) 75%, rgba(221,221,221,.1) 75%);
}
</style>
<div id="blok"><div onMouseMove="onchangeWidth()"></div></div>
<div id="banka"></div>
<script>
function onchangeWidth() {
var blok = document.getElementById('blok');
var line = blok.getElementsByTagName('div')[0];
document.getElementById('banka').style.backgroundSize = 'auto, 100% ' + parseInt(line.offsetWidth / blok.offsetWidth * 100) + '%';
}
</script>
Отправить комментарий