【问题标题】:@property not accept length in em unit@property 不接受 em 单位的长度
【发布时间】:2021-08-25 12:36:26
【问题描述】:

注意:由于poor support table,MRE 可能无法在某些浏览器中运行。

@property --width1 {
  syntax: '<length>';
  inherits: false;
  initial-value: 20em;
}

@property --width2 {
  syntax: '<length>';
  inherits: false;
  initial-value: 200px;
}

div {
  margin: 30px;
  height: 30px;
  background: black;
  color: white;
  text-align: center;
}

#div1 { width: var(--width1); }
#div2 { width: 20em;          }
#div3 { width: var(--width2); }
#div4 { width: 200px;         }
<div id="div1">var(--width1) = 20em</div>
<div id="div2">20em</div>
<div id="div3">var(--width2) = 200px</div>
<div id="div4">200px</div>

px 中,div3 的宽度与预期的div4 相同。

em 中,div2 的宽度符合预期。但是在div1 中,几乎就像var(--width1) 被忽略,宽度设置为autovar(--width1) 有什么方法可以按预期工作吗?

【问题讨论】:

  • 正如您在帖子中所说的那样 - 它是实验性功能,所以不要指望它能够正常工作
  • @Justinas 意味着我需要坚持使用旧的手动更改宽度的形式:( 没有与此主题相关的文章吗?
  • 你不能在那里使用相对单位(你也可以尝试使用百分比,它不起作用)。不幸的是,规格页面现在已关闭,无法为您提供答案:drafts.css-houdini.org/css-properties-values-api-1/…
  • @TemaniAfif 你可以使用百分比。如果您将数据类型更改为 length-percentage 或只是 percentage 。不知道为什么em 不起作用,因为您可以在这里看到developer.mozilla.org/en-US/docs/Web/CSS/length#units emlength 数据类型接受的单位之一。
  • @MihaiT 这是一个长度,但它是一个相对。我总是在初始值内遇到问题。您可以尝试使用vwch 等。有时行为有点随机

标签: html css css-variables css-houdini


【解决方案1】:

来自the specification

initial-value 必须计算独立

如果属性值可以仅使用元素上的属性值和 CSS 无法更改的“全局”信息转换为计算值,则该属性值在计算上是独立的。

在您的情况下,em 取决于 font-size 值,因此它不是计算独立

【讨论】:

猜你喜欢
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多