你不能用预编译的 LESS 做你想做的事
LESS 是一个 CSS预处理器。这意味着它会在浏览器看到之前处理代码以将其形成 CSS ;就LESS而言,浏览器不存在。这意味着,LESS完全不知道40%
浏览器窗口的高度。它所知道的只是,不知道稍后将实际转换为像素的什么。40%
您要么坚持使用 javascript,要么使用额外的 html 标记来获得平方效果。
客户端编译(不推荐用于生产)
我需要强调一个事实,即客户端编译只推荐用于开发。如果有人关闭了 javascript,那么他们将不会获得任何样式。那些打开它的人将体验到页面加载速度减慢。
现在,您收到无效类型错误的原因是因为返回的值需要变成 LESS 可以理解的数字(我认为它将返回值视为字符串)。这可以像这样轻松完成(请参阅对@base
作业的更改):
@base: (0.4 * unit(`window.innerHeight`, px));
#mytransform {
background-color:#ccc;
height:@base;
width:@base;
position:absolute;
top:50%;
left:50%;
margin-top:-(@base/2);
margin-left:-(@base/2);
}
我在 less2css.org 上一次运行的 CSS 输出
#mytransform {
background-color: #ccc;
height: 243.60000000000002px;
width: 243.60000000000002px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -121.80000000000001px;
margin-left: -121.80000000000001px;
}