Reimagined Title: How to Apply Overflow Effect Only to Box Shadow
P粉391677921
2023-09-03 17:14:49
<p>I'm trying to build an input range slider bar, but I'm running into a problem. </p>
<p>
<pre class="brush:css;toolbar:false;">body {
justify-content: center;
align-items: center;
min-height: 100vh;
background: #151515;
}
#rangeValue {
position: relative;
display: block;
font-size: 6em;
color: #999;
font-weight: 400;
}
.range {
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab) !important;
width: 400px;
height: 5px;
-webkit-appearance: none;
background: #111;
outline: none;
border-radius: 15px;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 1);
}
.range::-webkit-slider-thumb {
-webkit-appearance: none;
width: 15px;
height: 15px;
border-radius: 50%;
background: blue;
cursor: pointer;
box-shadow: -507px 0 0 500px red;
}</pre>
<pre class="brush:html;toolbar:false;"><div>
<span id="rangeValue">0</span>
<Input class="range" type="range" name "" value="0" min="0" max="1000"></Input>
</div></pre>
</p>
<p>The problem is: I want this big red area to remain within the input slider when drawn. The only solution is to apply <code>overflow: hidden</code> to <code>.range</code> but I will lose the blue dot button.
Is there a way to just apply <code>overflow: hidden</code> to <code>box-shadow</code>? Or any clues on other ways to make it work? </p>
<p>The final result should be like this =></p>
<p><img src="/uploads/20230822/169264211664e3ab441b49a.png" alt=" final result " /></p>
<p>Thank you. </p>
I'm not sure if this helps, but here's the refactoring I did. Maybe you can make some modifications to suit your task.
HTML
CSS
JS
You can adjust it to your liking. Hope this helps.