<div class="box"></div>
<div class="form">
<div class="control">
<label for="border">border-width:</label>
<input type="range" min="0" max="50" step="2" value="10" id="border" name="border" />
<output id="output-border">10px</output>
</div>
<div class="control">
<label for="opacity">border-opacity:</label>
<input type="range" min="0" max="1" step=".1" value=".5" id="opacity" name="opacity" />
<output id="output-opacity">0.5</output>
</div>
<div class="control">
<label for="padding">padding:</label>
<input type="range" min="0" max="50" step="5" value="10" id="padding" name="padding" />
<output id="output-padding">10px</output>
</div>
</div>
@import url("https://fonts.googleapis.com/css2?family=Exo:wght@600&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
width: 100vw;
min-height: 100vh;
font-family: "Exo", Arial, sans-serif;
background-color: #557;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 1rem;
gap: 1rem;
}
.box {
--border: 10px;
--opacity: 0.5;
--padding: 10px;
width: min(100%, 600px);
background-color: #fff;
aspect-ratio: 16 / 9;
box-shadow: 0 0 10px 1px rgb(0 0 0 / 25%);
border: var(--border) solid rgb(220 20 20 / var(--opacity));
padding: var(--padding);
}
:root {
--position: 0 0;
}
.box {
background: #fff
url("//www.w3cplus.com/sites/default/files/blogs/2022/2207/avatar.svg") left
top / 100px 100px repeat;
overflow: hidden;
resize: both;
}
.form {
padding: 1rem;
background-color: rgb(0 0 0 / 0.6);
backdrop-filter: blur(20px);
position: fixed;
top: 0;
left: 0;
right: 0;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 10px;
}
.control {
display: flex;
align-items: center;
justify-content: center;
}
input[type="range"] {
width: min(100%, 80px);
}
label {
white-space: nowrap;
}
const element = document.querySelector(".box");
const border = document.getElementById("border");
const padding = document.getElementById("padding");
const opacity = document.getElementById("opacity");
[border, padding].forEach((input) => {
input.addEventListener("change", (etv) => {
element.style.setProperty(`--${etv.target.id}`, `${etv.target.value}px`);
document.getElementById(
`output-${etv.target.id}`
).textContent = `${etv.target.value}px`;
});
});
opacity.addEventListener("change", (etv) => {
element.style.setProperty(`--${etv.target.id}`, `${etv.target.value}`);
document.getElementById(
`output-${etv.target.id}`
).textContent = `${etv.target.value}`;
});
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.