【问题标题】:computing $(this).css(”width”) _correctly_ in Safari在 Safari 中正确地计算 $(this).css("width")
【发布时间】:2010-11-25 12:11:02
【问题描述】:

今天早些时候问了this 问题,但我认为我过早地给出了正确答案。我试图弄清楚如何在 Safari 中使用 jquery 获取锚元素的 css 长度和宽度。但是我一直返回“0”,并且有人告诉我这是因为在呈现 css 之前触发了 javascript - Webkit 浏览器的一个怪癖。

这里是原始页面:http://f1shw1ck.com/jquery_sandbox/csspops-orig.html

但是,我写了一个小测试,告诉 jquery 等到所有内容都完全呈现后再抓取 css。 http://f1shw1ck.com/jquery_sandbox/csspops.html

对于选择器

a.popup {
                width: 800px;
                height: 560px;
            }

和html

<a href="http://www.metmuseum.org/toah/hd/apol/hd_apol.htm" class="popup">African Rock Art: Apollo 11 Cave Stone (c. 25,500 - 23,500 BCE); Wonderwerk Cave Stones (c. 8000 BCE)</a>

等到页面完全完成,然后获取这些尺寸:

$(document).ready(function () {
                if (jQuery.browser.safari && document.readyState != "complete"){
                    //console.info('ready...');
                    setTimeout( arguments.callee, 5000 );
                    return;
                  }
          alert($("a.popup").css("width"));
        });

在 Safari 中仍会返回“0”除外。我是不是走错了路,还是有其他原因?

谢谢!

【问题讨论】:

  • 这仍然让我发疯 - 我唯一能想到的就是以某种方式遍历每个元素并使用 ('selector').css('width', 800) 或你手动设置属性...但这将是一个可怕的,可怕的,不好的黑客攻击。
  • 我为此失眠了...甚至不确定我是否想以这种方式定义弹出窗口,但我很想找到一种方法让用户在 CSS 中设置弹出元数据...

标签: jquery css safari cross-browser width


【解决方案1】:

尝试将display: block 添加到 a.popup?

这将强制链接为 800px 宽,如果您想获得其自动宽度,请尝试

alert($("a.popup").width());

【讨论】:

  • 我想你误会了...... css 选择器实际上不会用于显示,而是用于定义弹出窗口的高度和宽度。问题是,我怎样才能让 Safari 和 jquery 返回我的锚的宽度和高度的 css 定义值?其他浏览器工作正常。
  • 或许display: inline-block会更好;因为它允许定义width,但保留inline 显示类型。 (尽管它在 IE6 中运行不可靠,但通常在正常内联元素上没问题。)
【解决方案2】:

科林是正确的。它返回 0 的原因是因为根据 Safari,锚点没有有效的 CSS 宽度,因为它们是内联元素。这可能是 jQuery for Safari 中的一个错误。

与错误无关,设置锚点的宽度来定义它触发的弹出窗口的宽度对我来说似乎不是一个好习惯。你为什么要这样做?设置与锚点的呈现无关的锚点的 CSS 似乎有点倒退,只需在 javascript 中设置它以查找 a.popup.large 并为弹出窗口设置一定的宽度/高度。否则,查找 a.popup 并设置不同的高度和宽度。

【讨论】:

  • 嗯,这不是我的想法,但在这个项目中,有些人使用这个模板来构建网站,他们不懂javascript,只是基本的css。我们目前使用样式名称指定浏览器元素,例如 console 和 show-nav:
猜你喜欢
  • 2010-11-25
  • 2012-10-25
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2010-10-29
  • 2011-10-28
  • 1970-01-01
  • 2017-07-02
相关资源
最近更新 更多