#html #css #pseudo-element
#HTML #css #псевдоэлемент
Вопрос:
У меня есть диапазон типов ввода внутри div, и я использую псевдоэлемент ‘before’ в виде круга. Мое намерение состоит в том, чтобы он был похож на большой палец в начальной позиции: у меня есть следующий html:
<div class="range">
<input type="range" name="" class="progress" value="0" max="100" min="0"/>
</div>
с помощью следующего css:
.range::before{
content: '';
display: inline-block;
width: 15px;
height: 15px;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
background-color: #69b6d5;
}
Вот действующая скрипка
Мое намерение состоит в том, чтобы поместить элемент before в ту же позицию, что и начало диапазона.
Комментарии:
1. Вы пытаетесь сделать так, чтобы красный круг и желтый находились в одном и том же положении?
2. В том же исходном положении, да
3. @Aschab это то, что вы ищете, помещая их рядом? jsfiddle.net/c9zn3609 Скорректирована ширина
input
используемогоcalc
и созданногоinput
иthe
перед` встроенным блоком
Ответ №1:
-
Добавил
inline-block
в.range::before
иinput
и выровнял их по вертикали с помощьюvertical-align: middle
. -
Установите ширину
input
наwidth: calc(100% - 15px)
. Эти 15 пикселей равны ширине.range::before
элемента. -
Подведите
.range::before
к желтой точке, используяtransform: translate(100%, 0)
Смотрите демонстрацию ниже:
/* RANGE */
input[type=range] {
-webkit-appearance: none;
margin: 10px 0;
width: calc(100% - 15px);
display: inline-block;
vertical-align: middle;
padding: 0;
border: none;
}
input[type=range]:focus {
outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 3px;
cursor: pointer;
animate: 0.2s;
box-shadow: 0px 0px 0px #000000;
background: #FFE000;
border-radius: 7px;
border: 0px solid #FFE000;
}
input[type=range]::-webkit-slider-thumb {
box-shadow: 0px 0px 0px #FFE000;
border: 2px solid #FFE000;
height: 15px;
width: 15px;
border-radius: 15px;
background: #FFE000;
cursor: pointer;
-webkit-appearance: none;
margin-top: -7px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: #FFE000;
}
input[type=range]::-moz-range-track {
width: 100%;
height: 3px;
cursor: pointer;
animate: 0.2s;
box-shadow: 0px 0px 0px #000000;
background: #FFE000;
border-radius: 7px;
border: 0px solid #FFE000;
}
input[type=range]::-moz-range-thumb {
box-shadow: 0px 0px 0px #FFE000;
border: 2px solid #FFE000;
height: 15px;
width: 15px;
border-radius: 15px;
background: #FFE000;
cursor: pointer;
}
input[type=range]::-ms-track {
width: 100%;
height: 3px;
cursor: pointer;
animate: 0.2s;
background: transparent;
border-color: transparent;
color: transparent;
}
input[type=range]::-ms-fill-lower {
background: #FFE000;
border: 0px solid #FFE000;
border-radius: 14px;
box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-fill-upper {
background: #FFE000;
border: 0px solid #FFE000;
border-radius: 14px;
box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-thumb {
box-shadow: 0px 0px 0px #FFE000;
border: 2px solid #FFE000;
height: 15px;
width: 15px;
border-radius: 15px;
background: #FFE000;
cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
background: #FFE000;
}
input[type=range]:focus::-ms-fill-upper {
background: #FFE000;
}
.range {
position: relative;
display: table;
margin: 0 auto;
width: 50vw;
}
.range::before {
content: '';
display: inline-block;
vertical-align: middle;
transform: translate(100%, 0);
width: 15px;
height: 15px;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
background-color: #69b6d5;
}
<div class="range">
<input type="range" name="" class="progress" value="0" max="100" min="0" />
</div>
Дайте мне знать ваши отзывы по этому поводу. Спасибо!
Ответ №2:
Это немного халтурно, но как насчет добавления этого в .range::before
:
.range::before {
/* ... other css */
position: absolute;
margin-top: 11px;
}
Комментарии:
1. не работает с моей стороны, поэтому он не совместим с кроссбраузерными или что-то в этом роде
2. Хм. Каким браузером вы пользуетесь @Aschab
3. chrome, я просто смотрю на окружность перед a примерно на 3 пикселя ниже