【问题标题】:setting element width without "px" [duplicate]设置没有“px”的元素宽度[重复]
【发布时间】:2015-09-22 07:52:15
【问题描述】:

我之前编写如下代码没有问题:

d3element.style("width", width)

然而,几分钟前,即使我没有在 Chrome 和 Firefox 中更改任何 JavaScript,它也突然停止工作。我必须手动添加"px" 才能让它工作:

d3element.style("width", width + "px")

这可能是什么原因?是浏览器更新吗?

Here 是 JSFiddle。

【问题讨论】:

  • 添加% 代替px
  • @Amitsingh 我知道px% 之间的区别。 px 是绝对单位,% 是百分比单位。
  • @Amit singh 你疯了吗?那是完全不同的东西!
  • @paradite 你确定width 的值没有改变吗?
  • @LGSon 该问题的答案并没有解决我的问题。但评论之一。事实证明,我添加了<!DOCTYPE html> 导致第一行不起作用。

标签: javascript css d3.js


【解决方案1】:

原来是因为在我的 HTML 文件中添加了<!DOCTYPE html>。我不知道它会导致如此巨大的差异。

答案在这个问题的评论中: Fallback for CSS attributes without unit

【讨论】:

    【解决方案2】:

    这是预期的行为,您必须包含单位,否则它将无法始终如一地工作。

    来自 selection.style 的官方 d3 API 文档:

    请注意,CSS 样式通常具有关联的单位。例如,“3px”是一个有效的 stroke-width 属性值,而 3 不是。虽然有些浏览器隐含地将“px”(像素)单位分配给数值,但并非所有浏览器都这样做:例如,IE 会抛出“invalid arguments”错误并停止执行!

    https://github.com/mbostock/d3/wiki/Selections#style

    请注意,这主要与 CSS 规则而不是 d3 特性有关。

    【讨论】:

      【解决方案3】:

      你必须在你的号码后面加上一个单位

      Value Error : width only 0 can be a length. You must put a unit after your number : 50

      查看https://jigsaw.w3.org/css-validator/#validate_by_input并输入

      .width {
          width: 50;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-06-08
        • 2016-08-26
        • 1970-01-01
        • 2012-09-25
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        相关资源
        最近更新 更多