是否可以在 CSS 的 scale() 内部使用 clamp()?
Is it possible to use clamp() inside of scale() in CSS?
很简单的问题。只需要知道是否可以在 scale() 内部使用 clamp()?像这样:
.element {
scale(clamp(100px, 10%, 300px));
}
这不起作用。我该怎么做?
这个
.element {
scale(clamp(100px, 10%, 300px));
}
有两种方式无效。首先没有scale()
你的意思是transform: scale()
。第二:scale()
仅适用于 number/float(例如 0.5、1、2)。所以不,clamp()
是不可能的。
编辑:
你可以做的是使用 css 变量和媒体查询:
#box {
--scale: 3;
width: 64px;
height: 64px;
background-color: #aaa;
transform: scale(var(--scale));
}
@media (max-width: 768px) {
#box {
--scale: 2;
}
}
@media (max-width: 512px) {
#box {
--scale: 1;
}
}
<div id="box"></div>
编辑:
好吧,您实际上可以通过操纵 css 变量使 scale()
响应,例如--scale
通过 js 并使用为 clamp()
.
计算的 font-size
window.addEventListener('resize', function(event) {
scaleBox();
}, true);
window.addEventListener('load', function(event) {
scaleBox();
}, true);
function scaleBox() {
const box = document.querySelector('#box');
// Box font size in px.
const boxFontSize = parseFloat(getComputedStyle(box).fontSize);
// Document font size in px.
const documentFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
// Calculated scale factor.
const scaleFactor = boxFontSize / documentFontSize;
// Update the scale factor variable.
box.style.setProperty('--scale', scaleFactor);
console.log(`font-size: ${boxFontSize}px;`, `--scale: ${scaleFactor};`);
}
#box {
--scale: 1;
width: 64px;
height: 64px;
background-color: #aaa;
font-size: clamp(.5rem, 10vmax, 300px);
transform: scale(var(--scale));
}
<div id="box"></div>
很简单的问题。只需要知道是否可以在 scale() 内部使用 clamp()?像这样:
.element {
scale(clamp(100px, 10%, 300px));
}
这不起作用。我该怎么做?
这个
.element {
scale(clamp(100px, 10%, 300px));
}
有两种方式无效。首先没有scale()
你的意思是transform: scale()
。第二:scale()
仅适用于 number/float(例如 0.5、1、2)。所以不,clamp()
是不可能的。
编辑:
你可以做的是使用 css 变量和媒体查询:
#box {
--scale: 3;
width: 64px;
height: 64px;
background-color: #aaa;
transform: scale(var(--scale));
}
@media (max-width: 768px) {
#box {
--scale: 2;
}
}
@media (max-width: 512px) {
#box {
--scale: 1;
}
}
<div id="box"></div>
编辑:
好吧,您实际上可以通过操纵 css 变量使 scale()
响应,例如--scale
通过 js 并使用为 clamp()
.
window.addEventListener('resize', function(event) {
scaleBox();
}, true);
window.addEventListener('load', function(event) {
scaleBox();
}, true);
function scaleBox() {
const box = document.querySelector('#box');
// Box font size in px.
const boxFontSize = parseFloat(getComputedStyle(box).fontSize);
// Document font size in px.
const documentFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
// Calculated scale factor.
const scaleFactor = boxFontSize / documentFontSize;
// Update the scale factor variable.
box.style.setProperty('--scale', scaleFactor);
console.log(`font-size: ${boxFontSize}px;`, `--scale: ${scaleFactor};`);
}
#box {
--scale: 1;
width: 64px;
height: 64px;
background-color: #aaa;
font-size: clamp(.5rem, 10vmax, 300px);
transform: scale(var(--scale));
}
<div id="box"></div>