cari

Rumah  >  Soal Jawab  >  teks badan

Tajuk Dibayangkan Semula: Cara Memohon Kesan Limpahan Hanya pada Box Shadow

<p>Saya cuba membina bar peluncur julat input, tetapi saya menghadapi masalah. </p> <p> <pre class="brush:css;toolbar:false;">body { justify-content: pusat; align-item: tengah; ketinggian min: 100vj; latar belakang: #151515; } #rangeValue { kedudukan: relatif; paparan: blok; saiz fon: 6em; warna: #999; berat fon: 400; } .julat { latar belakang: kecerunan linear(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab) !penting; lebar: 400px; ketinggian: 5px; -webkit-penampilan: tiada; latar belakang: #111; garis besar: tiada; jejari sempadan: 15px; box-shadow: inset 0 0 5px rgba(0, 0, 0, 1); } .range::-webkit-slider-thumb { -webkit-penampilan: tiada; lebar: 15px; ketinggian: 15px; jejari sempadan: 50%; latar belakang: biru; kursor: penunjuk; bayang kotak: -507px 0 0 500px merah; }</pre> <pre class="brush:html;toolbar:false;"><div> <span id="rangeValue">0</span> <Input class="julat" type="julat" nama "" value="0" min="0" max="1000"></Input> </div></pre> </p> <p>Masalahnya ialah: Saya mahu kawasan merah besar ini kekal dalam peluncur input apabila dilukis. Satu-satunya penyelesaian ialah menggunakan <code>overflow: hidden</code> untuk <code>.range</code> Adakah terdapat cara untuk hanya menggunakan <code>overflow: hidden</code> untuk <code>box-shadow</code>? Atau sebarang petunjuk tentang cara lain untuk menjadikannya berfungsi? </p> <p>Hasil akhir sepatutnya seperti ini =></p> <p><img src="/uploads/20230822/169264211664e3ab441b49a.png" alt=" keputusan akhir " /></p> <p>Terima kasih. </p>
P粉391677921P粉391677921538 hari yang lalu643

membalas semua(1)saya akan balas

  • P粉387108772

    P粉3871087722023-09-04 12:20:01

    Saya tidak pasti sama ada ini membantu, tetapi inilah pemfaktoran semula yang saya lakukan. Mungkin anda boleh membuat beberapa pengubahsuaian untuk disesuaikan dengan tugas anda.

    HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="style.css">
      <title>Slider</title>
    </head>
    <body>
        <div>
        <span id="rangeValue">0</span>
        <Input type="range" name="" id="range" value="0" min="0" max="100"></Input>
    </div>
    </body>
      
      <script src=""></script>
    </html>

    CSS

    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;
    }
    
    /* Input Thumb */
    input[type="range"]::-webkit-slider-thumb {
      -webkit-appearance: none;
      height: 20px;
      width: 20px;
      border-radius: 50%;
      background: #ff4500;
      cursor: ew-resize;
      box-shadow: 0 0 2px 0 #555;
      transition: background .3s ease-in-out;
    }
    
    input[type="range"]::-moz-range-thumb {
      -webkit-appearance: none;
      height: 20px;
      width: 20px;
      border-radius: 50%;
      background: #ff4500;
      cursor: ew-resize;
      box-shadow: 0 0 2px 0 #555;
      transition: background .3s ease-in-out;
    }
    
    input[type="range"]::-ms-thumb {
      -webkit-appearance: none;
      height: 20px;
      width: 20px;
      border-radius: 50%;
      background: #ff4500;
      cursor: ew-resize;
      box-shadow: 0 0 2px 0 #555;
      transition: background .3s ease-in-out;
    }
    
    
    /* Input Track */
    input[type=range]::-webkit-slider-runnable-track  {
      -webkit-appearance: none;
      box-shadow: none;
      border: none;
      background: transparent;
    }
    
    input[type=range]::-moz-range-track {
      -webkit-appearance: none;
      box-shadow: none;
      border: none;
      background: transparent;
    }

    JS

    const rangeInputs = document.querySelectorAll('input[type="range"]')
    
    function handleInputChange(e) {
      let target = e.target
      if (e.target.type !== 'range') {
        target = document.getElementById('range')
      }
      
      const min = target.min
      const max = target.max
      const val = target.value
      
      target.style.backgroundSize = (val - min) * 100 / (max - min) + '% 100%'
    }
    
    rangeInputs.forEach(input => {
      input.addEventListener('input', handleInputChange)
    })

    Anda boleh melaraskannya mengikut pilihan anda. Harap ini membantu.

    balas
    0
  • Batalbalas