gpt4 book ai didi

jquery - 如何使用 jQuery 获取实际的 CSS 值?

转载 作者:行者123 更新时间:2023-11-28 08:38:24 25 4
gpt4 key购买 nike

我正在使用 contenteditable = true 调整几个 DIV 的高度,以修复在 IE Quirks 模式下的盒模型问题。

DIV 的样式是:

height: 14px;
padding: 6px;
border: 1px solid black;
overflow: hidden;

到目前为止,我一直在使用 $("selector").css("height") 获取 CSS 高度值,并将该值用于进一步计算,但最近更新了我的 jQuery 库以最新版本,此方法现已失效。

详细说明;在 jQuery 1.4.2 中,.css("height") 将返回“14px”,而 jQuery 1.6.2 返回“0px”,如果元素及其所有祖先可见,否则返回“14px”。

我猜前者是使用 IE Quirksmode 框模型计算的(14px 高度 - 2x 6px 填充 - 2x 1px 边框 = 0px),后者是直接从样式表中获取的。无论可见性如何,我都想获得前者 - 是否有任何“漂亮”的方式来获取实际的 CSS 值(“漂亮”意味着不在 document.styleSheets 数组中查找它)?

编辑:

首先,我忘记了 DIV 上的一个重要样式属性:overflow: hidden(现已更正)。

此外,我认为值得强调的是,此问题仅在 Internet Explorer 处于 Quirks 模式时出现。据我所知,这在任何其他(当前)浏览器/模式中都不是问题(我没有测试所有,所以不是 100% 确定)。

为了进一步详细说明这个问题(并回答一些关于可能解决方案的建议),我对 jQuery 中不同函数返回的字段和值进行了一些测试:

jQuery 1.4.2:

Element visible: true
.css('height'): 14px
.height(): 0
.outerHeight(): 14

Element visible: false
.css('height'): 14px
.height(): 0
.outerHeight(): 0

jQuery 1.6.2:

Element visible: true
.css('height'): 0
.height(): 0
.outerHeight(): 14

Element visible: false
.css('height'): 14px
.height(): 14
.outerHeight(): 28

.outerHeight(true) 对我没用,因为无论盒模型如何,边距都没有效果。使用 $("selector").is(":visible") 测试元素可见性。

对了,那么如何使用这些数字呢?要固定盒子模型的高度,我必须进行以下计算:

newHeight = oldHeight + borderWidth (top & bottom) + padding (top & bottom)

换句话说,我需要 14px 值。有人可能会争辩说,该问题的解决方案是在元素可见时获取 .outerHeight() 的值,同时获取 .css('height') 的值当它不是时(这是我目前计划做的),但实际上并没有回答原来的问题;我如何获得实际的 CSS 值?

为了完整起见,这里有一个 HTML/脚本示例,它将从测试中复制我的数字(我没有对此进行实际测试,但最终结果是相同的 - 还记得将 IE 设置为 Quirksmode测试前):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://code.jquery.com/jquery-1.6.2.js" type="text/javascript"></script>
<style>
.input {
height: 14px;
padding: 6px 8px;
border: 1px solid black;
overflow: hidden;
}
.hidden { display: none; }
</style>
</head>
<body>
<div><div class="input" contenteditable="true">test</div></div>
<div class="hidden"><div class="input" contenteditable="true">test</div></div>
<script type="text/javascript">
$(document).ready(function(){
var t = "";
$(".input").each(function(){
t+= "visible: " + $(this).is(":visible") +"\n" +
".css('height'): " + $(this).css("height")+ "\n" +
".height(): " + $(this).height()+ "\n" +
".outerHeight(): " + $(this).outerHeight()+ "\n\n";

});
alert(t);
});
</script>
</body>
</html>

最佳答案

是否:

$("selector").height();

$("selector").outerHeight();

解决你的问题?

关于jquery - 如何使用 jQuery 获取实际的 CSS 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com