我在div中有一个输入类型范围,我在'之前'使用伪元素作为圆。我的目的是让它像起始位置的拇指一样:我有以下html:
gulp.task('default', function() {
return gulp.src(['src/**/*.js', '!src/**/3rd/*'])
.pipe(babel())
.pipe(gulp.dest('dist'));
});
使用以下css:
<div class="range">
<input type="range" name="" class="progress" value="0" max="100" min="0"/>
</div>
这是一个正常运作的fiddle
我的目的是将before元素放在与范围开头相同的位置。
答案 0 :(得分:1)
将inline-block
添加到.range::before
和input
,并使用vertical-align: middle
进行了对齐。
将input
的宽度设置为width: calc(100% - 15px)
。这个15px是.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;
}
&#13;
<div class="range">
<input type="range" name="" class="progress" value="0" max="100" min="0" />
</div>
&#13;
让我知道您对此的反馈。谢谢!
答案 1 :(得分:0)
有点hacky,但如何将其添加到.range::before
:
.range::before {
/* ... other css */
position: absolute;
margin-top: 11px;
}