type="range"
<input> element as "slider".
๐ฐ HTML โฉ Elements โฉ <input> โฉ
input vs. change event
oninput is similar to the onchange event. The difference is that the oninput event occurs immediately after the value of an element has changed, while onchange occurs when the element loses focus, after the content has been changed.
็ฐกๅฎ่ชช๏ผ็ถๆๅๆๆณๆปๆกฟ็ๆๅ๏ผ้จๆ้ฝๆ่งธ็ผ oninput ไบไปถ๏ผไฝ onchange ไบไปถๆฏๆๆณๅฎๆพ้ๆป้ผ ๅพๆๆ่งธ็ผไธๆฌกใ
const {log} = console;
const control = $('#control');
const div3 = $('#div3');
const label = $('#label');
const calc = $('#calc');
// marginControl.oninput
control.addEventListener('input', (e) => {
let x = e.target.value;
let percent = x + '%';
label.textContent = 'marginTop: ' + percent;
calc.textContent = `${percent} x 200px = ${2*x}px`
div3.style.marginTop = percent;
});
// โญ๏ธ ่ชๅ่ทไธๆฌก 'oninput' event
control.dispatchEvent(new Event('input'));
// $ โญ๏ธ selector
function $(selector, parent = document){
return parent.querySelector(selector);
}
#div1 {
width: 200px;
border: 1px solid black;
}
#div2, #div3 {
height: 100px;
}
#div2 {
/* โญ๏ธ vertical & horizontal align */
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(255, 0, 0, 0.3);
font-weight: bold;
}
#div3 {
margin-block-start: 10%;
background-color: rgba(0, 255, 21, 0.3);
}
<input type="range" id="control" min="-100" max="100" value="0">
<label for="marginControl" id="label"></label>
<p>
margin ่ฅ่จญๅฎ %๏ผๅไปฅใ็ถๅ
็ด ๅฏฌๅบฆใ็บๆบใ<br />
<span id="calc"></span>
</p>
<div id="div1">
<div id="div2">
<p>200 x 100</p>
</div>
<div id="div3"></div>
</div>
Last updated
Was this helpful?