Тег progress HTML
progress (w3.org) показывает процент завершения работ. Например, степень заполнения формы или загрузки страницы.<progress value="30" max="100">
30%</progress>
Как изменить его стиль CSS, например, для резиновой вёрстки:
<style> progress { /* контейнер */ -webkit-appearance: none; /* убрать вид, который задан браузером по умолчанию */ appearance: none; border: none; /* убрать рамку в Firefox */ width: 100%; height: 20px; border-radius: 3px; color: #4d7198; /* цветная линия-индикатор в IE */ background: #eee; background-image: linear-gradient(to right, #e4e4e4 1px, transparent 1px), linear-gradient(rgba(0, 0, 0, .2) 1px, rgba(255, 255, 255, .4) 1px, rgba(0, 0, 0, .2)); background-size: 10% 100%, 100% 100%; } .progress::-webkit-progress-bar { /* контейнер в Webkit */ border-radius: 3px; background: #eee; background-image: linear-gradient(to right, #e4e4e4 1px, transparent 1px), linear-gradient(rgba(0, 0, 0, .2) 1px, rgba(255, 255, 255, .4) 1px, rgba(0, 0, 0, .2)); background-size: 10% 100%, 100% 100%; } .progress::-moz-progress-bar { /* разноцветная линия-индикатор в Firefox */ border-radius: 3px 5px 5px 3px; background: #4d7198; background-image: linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, .1) 33%, rgba(0, 0, 0, .1) 66%, transparent 66%), linear-gradient(rgba(0, 0, 0, .2) 1px, rgba(255, 255, 255, .4) 1px, rgba(0, 0, 0, .2)), linear-gradient(to left, #00baff, #4d7198); background-size: 35px 20px, 100% 100%, 100% 100%; } .progress::-webkit-progress-value { /* разноцветная линия-индикатор в Webkit */ border-radius: 3px 5px 5px 3px; background: #4d7198; background-image: linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, .1) 33%, rgba(0, 0, 0, .1) 66%, transparent 66%), linear-gradient(rgba(0, 0, 0, .2) 1px, rgba(255, 255, 255, .4) 1px, rgba(0, 0, 0, .2)), linear-gradient(to left, #00baff, #4d7198); background-size: 35px 20px, 100% 100%, 100% 100%; -webkit-animation: animate-stripes 4s linear infinite; } @-webkit-keyframes animate-stripes { 0% { background-position: 0 0, 0 0, 0 0; } 100% { background-position: -105px 0, 0 0, 0 0; } } </style> <progress value="30" max="100">30%</progress>
Статья в тему: «Индикатор прокрутки страницы с плавающей шапкой»
Тег meter HTML
meter (w3.org) определяет цифровое значение в неком диапазоне. В зависимости от положения на шкале линия будет принимать разный цвет.<meter min="-200" low="0" high="100" max="150" optimum="120" value="110">
110</meter>
<meter min="-200" low="0" high="100" max="150" optimum="120" value="50">
50</meter>
<meter min="-200" low="0" high="100" max="150" optimum="120" value="-100">
-100</meter>
<meter min="-200" low="0" high="100" max="150" optimum="120" value="-200">
-200</meter>
атрибут | описание | по умолчанию |
---|---|---|
min | самое низкое значение | 0 |
low | с min до low - диапазон низких значений; с low до high - диапазон средних значений | min |
high | с low до high - диапазон средних значений; с high до max - диапазон высоких значений | max |
max | самое высокое значение | 1.0 |
optimum | определяет предпочтительную окраску диапазонов. Для того, чтобы понять о чём речь, поменяем его значение | (max+min)/2 |
value | текущее значение | 0 |
Стилизацию можно посмотреть у css-tricks.com.
Ползунок HTML
<input type="range"/> (w3.org) в отличии от предыдущих двух элементов может изменяться самим пользователем благодаря перетаскиванию ползунка курсором мышки.<input type="range" min="10" max="120" step="5" value="30"/>
атрибут | описание | по умолчанию |
---|---|---|
value | текущее значение | (max+min)/2 |
min | самое низкое значение | 0 |
max | самое высокое значение | 100 |
step | шаг изменения значения | 1 |
list | нет поддержки браузерами | - |
Его можно стилизовать благодаря псевдоэлементам CSS и сделать интерактивные динамические штучки на сайте благодаря JavaScript. Например, здесь получилось наглядно и просто продемонстрировать действие свойства border-image-slice.
<style> /* линия-индикатор */ #rangeP { /* контейнер */ -webkit-appearance: none; appearance: none; padding: 0; border: 10px solid #ccc; border-radius: 5px; box-shadow: inset 0 1px #ccc, inset 0 1px 1px #575555, inset 0 -2px #ccc; background: #fff linear-gradient(#BCBCBC, #fff0f5); overflow: hidden; } #rangeP::-moz-range-thumb { /* ползунок в Firefox */ border-radius: 2px; box-shadow: -13px 0 #40310a, -26px 0 #40310a, -39px 0 #40310a, -52px 0 #40310a, -65px 0 #40310a, -78px 0 #40310a, -91px 0 #40310a, -104px 0 #40310a, -117px 0 #40310a, -130px 0 #40310a, -143px 0 #40310a, -156px 0 #40310a; } #rangeP::-moz-range-track { /* линия, по которой он ездит в Firefox */ background: none; border: none; } #rangeP::-webkit-slider-thumb { /* ползунок в Хроме */ -webkit-appearance: none; width:15px; height:15px; border: 1px solid #818181; border-radius: 2px; background-image: linear-gradient(#dedede, #f2f2f2); box-shadow: -13px 0 #40310a, -26px 0 #40310a, -39px 0 #40310a, -52px 0 #40310a, -65px 0 #40310a, -78px 0 #40310a, -91px 0 #40310a, -104px 0 #40310a, -117px 0 #40310a, -130px 0 #40310a, -143px 0 #40310a, -156px 0 #40310a; } /* банка 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% 0; } #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> <input type="range" oninput="onchangeWidth()" id="rangeP" value="0" max="90"/> <div id="banka"></div> <script> function onchangeWidth() { document.getElementById('banka').style.backgroundSize = 'auto, 100% ' + document.getElementById('rangeP').value + '%'; } </script>
10 комментариев:
Офигенно)