若要获得隐藏元素的宽度,可以通过jQuery的方法 outerWidth()
来获取元素的外部宽度(包括padding和border,不包括margin)。但是如果元素被隐藏了, outerWidth()
会返回0,这不会给我们带来任何帮助。在这种情况下,可以考虑使用一种叫做“离屏渲染”的技术,通过设置元素的位置来计算宽度。
以下是一些步骤来讲解如何在jQuery中获得隐藏元素的宽度:
步骤一:将元素放到屏幕外
首先,将元素移到屏幕左侧以外。使用以下CSS代码:
position: absolute;
left: -9999px;
此时元素仍然没被显示出来,但是它仍然存在,并且在文档中仍然有位置信息。
步骤二:获取元素的宽度
使用 jQuery 的 outerWidth()
方法获取宽度。因为元素不在文档流中,不会影响布局,所以获取的宽度仍然是正确的。
var width = $('#hidden-element').outerWidth();
此时变量 width
将会保存隐藏元素的宽度。
示例一:获取被隐藏的元素宽度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>获取被隐藏的元素宽度</title>
<style>
#hidden-element {
display: none;
}
#visible-element {
background-color: red;
width: 100px;
height: 100px;
}
</style>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
// 将hidden-element设置为left:-9999px
$('#hidden-element').css({
'position': 'absolute',
'left': '-9999px'
});
// 获取hidden-element的宽度
var width = $('#hidden-element').outerWidth();
// 显示hidden-element的宽度
$('#hidden-width').html(width);
});
</script>
</head>
<body>
<div id="hidden-element">隐藏的元素</div>
<div id="visible-element">可见元素</div>
<p>被隐藏的元素宽度:<span id="hidden-width"></span></p>
</body>
</html>
在上述示例中,一个具有 display: none;
样式的div元素被隐藏了,我们想要获取它的宽度。首先,我们将div元素的位置移到屏幕左侧以外。接下来我们使用 outerWidth()
方法获取它的宽度,最后将它显示在文档中对用户进行展示。
示例二:根据窗口大小更新被隐藏元素的宽度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>根据窗口大小更新被隐藏元素的宽度</title>
<style>
#hidden-element {
display: none;
}
</style>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
function updateWidth() {
// 将hidden-element设置为left:-9999px
$('#hidden-element').css({
'position': 'absolute',
'left': '-9999px'
});
// 获取hidden-element的宽度
var width = $('#hidden-element').outerWidth();
// 将hidden-element的宽度更新到文本框中
$('#hidden-width').val(width);
}
// 当窗口的大小改变时更新hidden-element的宽度
$(window).resize(updateWidth);
// 初始化hidden-element的宽度
updateWidth();
});
</script>
</head>
<body>
<div id="hidden-element">隐藏的元素</div>
<p>被隐藏的元素宽度:<input type="text" id="hidden-width"></p>
</body>
</html>
在示例中,我们想要根据窗口大小的变化来更新一个隐藏元素的宽度。首先,我们定义了一个 updateWidth()
函数来获取被隐藏元素的宽度,并将它的值更新到文本框中。接着我们将该函数绑定在窗口的 resize
事件上,并在初始化时调用该函数以确保它的值是正确的。