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

$('label').css('width')在Chrome中返回错误的值

  •  0
  • Scaramouche  · 技术社区  · 6 年前

    在页面上加载引导程序的 navbar 填充标签直到不再适合它为止。我用他们的 width $('label').css('width') 它在FF中运行良好,但当我在Chrome中测试时,标签会溢出 导航栏 和viewport。

    调试代码时注意到 $('label').css('width') 计算的

    CHROME

    console.log(parseFloat($('label').css('width'))) 产出:64.725

    另一方面,在FF中:

    FIREFOX

    输出:82.4,提示正确。

    HTML格式

    <label class="btn btn-light" data-original-title="" title="">
        <a class="btn" href="http://localhost">
            <img src="images/amazon.png">&nbsp;TEXT
        </a>
    </label>
    

    塔克斯

    更新

    都试过了

    $('label')[0].clientWidth; //63
    $('label').get(0).offsetWidth; //65
    document.defaultView.getComputedStyle($('label')[0])['width']; //64.725px
    $('label').css('width'); //64.725px
    

    临时(希望)解决方案:

    这是特别奇怪,很难找到,因为,记住,它在浏览器中工作,而不是在另一个。

    碰巧,在图像加载到标签中之前,我正在查询标签的宽度,导致它产生一个误导性的结果。

    我在用 $(window).ready() ,罪名成立,但 $(window).on("load", () => {}) 也不是 window.onload = () => {} window.addEventListener('load', () => {}) 成功了,尽管第一个和其他的关键区别之一是 执行 只要DOM是可操作的

    猜猜是谁解决了这个问题: this post .

    setTimeout(() => {}, 0) 这一次是英雄,是的,但是超时为0。现在代码实际上是在等待图像加载。

    注意:我确实切换到了 window.onload=()=>{}

    我希望这能节省别人的时间。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Yang Daniel    6 年前

    尝试使用getComputedStyle,但它只是只读的,无法为DOM设置值

    document.defaultView.getComputedStyle(DOM)['width'];