<div class="avatar">
<img src="https://assets.codepen.io/1061/internal/avatars/users/default.png?fit=crop&format=auto&height=80&version=1&width=80" />
</div>
<form>
<div class="controle">
<label for="size">--size:</label>
<input type="range" min="1" max="5" step="1" value="1" name="size" id="size" />
<output id="output--size">1</output>
</div>
</form>
@import url("https://fonts.googleapis.com/css2?family=Exo:wght@600&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
margin: 0px;
padding: 10px;
width: 100vw;
min-height: 100vh;
font-family: "Exo", Arial, sans-serif;
background-color: #112211;
display: flex;
justify-content: center;
align-items: center;
}
.avatar {
display: inline-flex;
justify-content: center;
align-items: center;
background-color: #ff5722;
padding: 3px;
border-radius: 50%;
position: relative;
transition: all 0.28s ease;
--size: 1;
width: calc(var(--size) * 60px);
height: calc(var(--size) * 60px); /* 或aspect-ratio: 1/1 */
}
.avatar img {
display: block;
border-radius: 50%;
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
form {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.65);
font-size: 1.2rem;
display: flex;
justify-content: center;
align-items: center;
padding: 5vh;
gap: 10px;
color: #fff;
}
.controle {
display: inline-flex;
align-items: center;
gap: 5px;
}
const rangeEle = document.getElementById("size");
const outputEle = document.getElementById("output--size");
const avatar = document.querySelector(".avatar");
rangeEle.addEventListener("input", (evt) => {
avatar.style.setProperty("--size", evt.target.value);
outputEle.innerText = evt.target.value;
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.