Javscript30 - css변수 변경

고미·2024년 1월 12일

Javascript30

목록 보기
3/4
post-thumbnail

Javascript로 시계 만들기

Vanilla Javascript를 이용하여 CSS의 root변수에 접근하여 값을 변경해 보았습니다.

 

HTML, CSS

<h2>Update CSS Variables with <span class='hl'>JS</span></h2>

  <div class="controls">
    <label for="spacing">Spacing:</label>
    <input id="spacing" type="range" name="spacing" min="10" max="200" value="10" data-sizing="px">

    <label for="blur">Blur:</label>
    <input id="blur" type="range" name="blur" min="0" max="25" value="10" data-sizing="px">

    <label for="base">Base Color</label>
    <input id="base" type="color" name="base" value="#ffc600">
  </div>

  <img src="https://source.unsplash.com/7bwQXzbF6KE/800x500">

  <style>
    :root {
      --base: #ffc600;
      --spacing: 10px;
      --blur: 10px;
    }

    img {
      filter: blur(var(--blur));
      padding: var(--spacing);
      background: var(--base);
    }

    .hl { color: var(--base); }


    body {
      text-align: center;
      background: #193549;
      color: white;
      font-family: 'helvetica neue', sans-serif;
      font-weight: 100;
      font-size: 50px;
    }

    .controls {
      margin-bottom: 50px;
    }

    input {
      width: 100px;
    }
  </style>

 

Javascript

<script>
    const inputs = document.querySelectorAll('.controls input');
    
    function handleUpdate() {
      // input에 data-sizing의 값 가져오기 px 또는 공백(컬러에는 px이 없기 떄문에)
      const suffix = this.dataset.sizing || '';
      // css root 변수에 접근하여 변경
      document.documentElement.style.setProperty(`--${this.name}`, this.value + suffix);
    }

    inputs.forEach(input => {
      input.addEventListener('change', handleUpdate);
      input.addEventListener('mousemove', handleUpdate);
    })
  </script>

 

결과

profile
개발자를 꿈 꾸는 퍼블리셔

0개의 댓글