jQuery 尺寸

测量和设置元素尺寸是布局与动画的常客。jQuery 提供四组尺寸方法,它们对应 CSS 盒模型的不同范围:内容区、含内边距、含边框、含外边距。

先定义一个带多层"盒子"样式的元素:

<style>
    #demo {
        width: 200px;
        height: 100px;
        padding: 20px;
        border: 5px solid #000;
        margin: 10px;
    }
</style>
<div id="demo">尺寸示例</div>
<button id="btn">看尺寸</button>

width() 与 height():内容区尺寸

width()/height() 返回内容区(不含 padding、border、margin)的宽高,无单位数字:

console.log($("#demo").width());  // 输出:200
console.log($("#demo").height()); // 输出:100

效果:得到的是纯数字,可直接参与计算,如判断是否超出容器。

innerWidth() 与 innerHeight():含内边距

inner 系列 = 内容区 + padding(不含 border 和 margin):

console.log($("#demo").innerWidth());  // 输出:240(200 + 左右各 20)
console.log($("#demo").innerHeight()); // 输出:140(100 + 上下各 20)

outerWidth() 与 outerHeight():含边框

outer 系列 = 内容区 + padding + border(不含 margin):

console.log($("#demo").outerWidth());  // 输出:250(240 + 左右边框各 5)
console.log($("#demo").outerHeight()); // 输出:150(140 + 上下边框各 5)

四层尺寸的关系

方法范围本例结果
width() / height()内容区200 / 100
innerWidth() / innerHeight()内容 + padding240 / 140
outerWidth() / outerHeight()内容 + padding + border250 / 150
outerWidth(true) / outerHeight(true)再加上 margin270 / 170

数值关系:200 → 240 → 250 → 270,一层层加上去,很好记忆。

outerWidth(true):把外边距也算上

传 true 后连 margin 一起统计,得到元素真正"占位"的大小:

$("#btn").click(function () {
    console.log($("#demo").outerWidth(true));  // 输出:270
    console.log($("#demo").outerHeight(true)); // 输出:170
});
// 效果:点击按钮后控制台打印含 margin 的完整占地尺寸

设置尺寸

这些方法传入参数即可设置对应范围的尺寸,自动补上 px:

$("#demo").width(300).height(150);
// 效果:内容区变成 300 × 150,padding、border、margin 保持不变

小结

尺寸四件套对应盒模型的层层范围:width/height 只管内容,inner 加上 padding,outer 再加 border,outer(true) 连 margin 也统计。布局测量首选 outerWidth(true),改动内容区则用 width()/height()。

笔记加载中…