代码之家  ›  专栏  ›  技术社区  ›  speendo

javascript/jquery:.css像素值

  •  4
  • speendo  · 技术社区  · 15 年前

    我刚刚意识到

    <foo>.css('marginTop')
    

    (我认为这是标准的jquery符号)和

    <foo>.css('margin-top')
    

    (我认为这是不标准的)。

    如果有上边距:3em;(例如,第一个表示法给我3em,第二个表示法给我48px(像素为3em)。 我喜欢这种行为,但在API中找不到任何关于它的信息(或者我是盲人?)

    为什么会出现这种情况,我在哪里可以找到有关它的信息?

    P.S.:准确地说:当然还有其他属性,但利润率也很高…

    谢谢您!

    2 回复  |  直到 15 年前
        1
  •  6
  •   bobince    15 年前

    该文件说,jquery可以同样地解释多个单词属性的css和dom格式,但实际上,它是通过粗制滥造的黑客行为来实现的,这些黑客行为并不总是可以预测的。

    尤其是,如果您提供一个dom样式 camelCaseName ,它将首先尝试访问内联样式声明 style.camelCaseName . 然后,如果失败(通常是因为样式没有设置为内联),则返回到尝试。 getComputedStyle 骆驼姓 转换为 hyphen-separated-name (*)。计算样式与声明的样式不同:浏览器可以解析计算样式中的各种相对声明,例如将长度转换为像素单位。

    但是,倒车挡不住!如果提供CSS样式 连字符分隔名称 ,它直接跳到计算样式(*)代码,而不尝试转换为 骆驼姓 看看内联样式。

    我不想依赖这种行为…我觉得有点难闻。如果可以使内联样式声明远离要度量的元素,则应该能够确保始终返回计算样式,而不管使用的是哪种名称类型。但同样,jquery并没有将其作为一个文档化的承诺提供给您。这就是试图将一个复杂模型隐藏在一个看似简单的_做我所说的_接口之后的本质。

    (*):除非在IE中没有 getComputedStyle(getComputedStyle) 功能,所以它回到了一个奇怪和脆弱的混合 currentStyle ,请 runtimeStyle 和文档修改,以尝试获得计算样式。

        2
  •  1
  •   Todd Moses    15 年前

    区别与CSS和JavaScript符号相同。它不在jquery api中,而是在css引用中。

    CSS使用页边顶部,而javascript使用页边顶部进行相同的操作。CSS(上边距)中的默认值为0px。因此你得到的是48px而不是3em。

    http://www.w3schools.com/css/css_reference.asp 更多信息。