Safari中的jQuery.height()错误
jQuery .height() wrong in Safari
我在Safari中用jQuery读取DIV
的正确高度时遇到问题。我正在使用jQuery("#x").height()
来读取元素的高度。在实际情况下,我稍后会在页面中使用结果。它在Chrome、Firefox和IE中运行良好,但在Safari中则不然。
以下是我从页面中提取的一些代码,这些代码演示了这个问题:
CSS:
#x {
position: absolute;
top: 0px;
margin-top: 80px;
right: 54%;
width: 40vw;
height: auto;
max-width: 330px;
padding: 10px 3.1vw 16px;
background: #ddd;
}
.y {
position: relative;
width: 100%;
max-width: 330px;
height: auto;
max-height: 330px;
}
.y img {
width: 100%;
height: auto;
}
(有些参数看起来多余或奇怪,但我需要在我的上下文中使用它们,如果我忽略它们,也不会改变问题)
HTML:
<div id="x">
<h2>Header</h2>
<div class="y">
<img src="https://placehold.it/330" alt="my image">
</div>
<p class="z"><span>Some text</span><br>Some more text...</p>
</div>
现在,有了这个jQuery代码,我会根据浏览器得到不同的结果:
console.log(jQuery("#x").height());
我把这一切都写进了一个代码笔:http://codepen.io/anon/pen/MyELJV?editors=1111
如果您在Firefox中加载它,控制台输出为469。如果你在Safari中加载,它是154。(此外:在Chrome/MacOS和IE11/Win7中,该值均为466)。差异的一小部分是由于默认样式不同,但主要问题是Safari在获取高度时没有考虑图像。
如果尝试了不同的方法(没有解决问题):
- 我尝试了
innerHeight()
、outerHeight()
和outerHeight(true)
而不是height()
——没有基本区别(值略有不同,但Safari中仍然存在问题) - 我将
width=330 heigth=330
作为属性添加到img
标记中,它在代码笔中有效,但在我的真实情况下(使用另一个图像)无效。除此之外,整个过程都是响应性的,所以无论如何我都想省略这些属性
顺便说一句:原始图像都是330x330px(即所有图像的纵横比都是1:1),但它们在较小的屏幕上被缩小了。
如果能给我一个解决方案,我将不胜感激。。。
我更改了你的css,这样safari就不会改变图像的高度。
#x {
position: absolute;
top: 0px;
margin-top: 80px;
right: 54%;
width: auto;
height: auto;
/* max-width: 330px; */
padding: 10px 43px 16px;
background: #ddd;
}
.y {
position: relative;
width: 100%;
max-width: 330px;
height: auto;
max-height: 330px;
}
.y img {
width: auto;
height: auto;
}
还可以使用load
函数来获取#x
的精确高度。
$(window).load(function(){
console.log($("#x").height());
});
您可以在此处引用更改后的代码。
我为这个问题争论了很多。Safari在获取元素高度时遇到了很多问题,但我找到了一个返回特定元素正确高度的javascript方法。
在这里,我给你链接和支持确认。事实上,我在一个项目中使用了它,我需要根据元素高度来控制动画。
我希望它能帮助到和我处境相同的人。
https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
使用getBoundingClientRect并访问高度属性,如下所示:
element.getBoundingClientRect().height
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 分析高度属性时出现意外值{{specs.height}}.index.html
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 相位器状态未捕获参考错误
- Safari中的jQuery.height()错误
- Safari提供了错误的height()属性
- 你必须设置一个height或maxheight;FixedDataTable组件错误
- $(window).height()的值和元素宽度在加载和文档就绪时都是错误的
- .height()函数在设置为auto时显示错误的值