Javascript
Javascript30 - Playing WITH CSS VARIABLES AND JS
big whale
2021. 6. 18. 21:34
Playing WITH CSS VARIABLES AND JS
요구사항
1. 사진의 경계, 블러, 경계의 색을 조절할 수 있어야 한다.
2. 경계,블러는 마우스 클릭후 이동하는 중에도 변해야 한다.
1. HTML 구성
- 컨트롤 박스 안에 패딩,블러,색상 조절하는 부분이 있다.
- 가로 정렬을 위해 span태그 사용
<h1>Update CSS Variables with <span class="JS">JS</span></h1>
<div class="control-box">
<span class="spacing">
Spacing:
<input type="range" value="20" min="0" max="100">
</span>
<span class="blur">
Blur:
<input type="range" value="0" min="0" max="20">
</span>
<span class="base-color">
Base color
<input type="color" value="#018DED">
</span>
</div>
<img src="https://source.unsplash.com/7bwQXzbF6KE/800x500">
2. Javascript 구성
- 이벤트리스너로 mousemove,click 이벤트 감지해서 setSpacing 호출, 클릭후 움직이면 변하는 인풋값을 mousemove가 감지한다.
- setSpacing 함수는 슬라이드바 클릭으로 변한 인풋값을 불러와서 경계의 색과 크기, 블러, JS의 색을 변경한다.
<script>
const inputs = document.querySelectorAll('.control-box input');
const controlBox = document.querySelector('.control-box');
const spacing = document.querySelector('.spacing');
const spacingInput = spacing.querySelector('input');
const baseColor = document.querySelector('.base-color');
const basecolorInput = baseColor.querySelector('input');
const blur = document.querySelector('.blur');
const blurInput = blur.querySelector('input');
const img = document.querySelector('img');
const JS = document.querySelector('.JS');
function setSpacing() {
img.style.border=`${spacingInput.value}px solid ${basecolorInput.value}`;
img.style.filter = `blur(${blurInput.value}px)`;
JS.style.color = `${basecolorInput.value}`;
}
controlBox.addEventListener('click',setSpacing);
inputs.forEach(input => input.addEventListener('mousemove', setSpacing));
</script>