← jQuery height()方法:获取和设置元素高度 jQuery innerHeight()方法:包含内边距的高度计算 →

jQuery innerWidth()方法:包含内边距的宽度计算

原创 2026-04-30 jQuery 已有人查阅

前面两篇讲了 width() 和 height(),它们只处理内容区域的尺寸。但在页面布局中,元素往往带有 padding,这时候内容宽度加上内边距才是我们真正关心的“可视区域”宽度。jQuery 的 innerWidth() 方法就是专门干这个的。

innerWidth() 的计算范围是:内容宽度 + 左右 padding。它不包含 border,也不包含 margin。这个定位很清晰——它比 width() 多算了 padding,又比 outerWidth() 少算了 border。对于需要精确掌握元素内部可用空间的需求,这个方法刚好合适。

为什么要有这么细的区分?因为不同场景关心的尺寸边界不一样。比如你要在一个容器里放一张图片,需要知道去掉内边距后还剩多少空间来给图片设置尺寸,这时候 innerWidth() 就比 width() 更实用——它直接告诉你容器内部实际可用的宽度。反过来如果你只需要内容本身的宽度,就用 width(),多加一层 padding 算出来的值反而不对。

语法形式

$(selector).innerWidth()

注意 innerWidth() 只能获取宽度,不能设置。这个跟 width() 不一样,width(value) 可以赋值,但 innerWidth() 没有设置功能。毕竟 innerWidth 是内容加 padding 的推导值,要改变它只能通过调整 width 或 padding 来实现。

基础示例:获取 innerWidth

下面这个例子用按钮触发,弹出一个 div 的 innerWidth 值。div 的 CSS 设置了 width:500px 和 padding:10px,所以 innerWidth 应该是 500 + 10×2 = 520。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>innerWidth 基础示例</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
    <div style="height:100px;width:500px;padding:10px;margin:3px;border:1px solid #2471a3;background-color:#d4e6f1;">
        学习 jQuery innerWidth 方法
    </div>
    <br>
    <button id="getInnerWidthBtn">获取 innerWidth</button>

    <script>
        $(document).ready(function(){
            $("#getInnerWidthBtn").click(function(){
                alert("div 的 innerWidth 为:" + $("div").innerWidth() + "px");
            });
        });
    </script>
</body>
</html>

弹出的结果是 520,验证了 innerWidth = 内容宽度 + 左右 padding。border 的那 1px 没有被算进去,margin 也没有。

进阶示例:不同内边距下的对比

下面这个例子放了四个宽度相同但 padding 递增的方块,点击任意一个就能看到它的 innerWidth 值。通过对比可以直观感受到 padding 如何影响 innerWidth。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>innerWidth 对比示例</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <style>
        .box {
            margin: 10px;
            border: 2px solid #555;
            width: 60px;
            height: 30px;
            cursor: pointer;
        }
        #box1 { padding: 10px; background-color: #e67e22; }
        #box2 { padding: 20px; background-color: #2ecc71; }
        #box3 { padding: 30px; background-color: #8e44ad; color: #fff; }
        #box4 { padding: 40px; background-color: #c0392b; color: #fff; }
        #info {
            margin-top: 15px;
            font-size: 16px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <p>点击任意方块查看其 innerWidth:</p>
    <div id="box1" class="box">padding:10</div>
    <div id="box2" class="box">padding:20</div>
    <div id="box3" class="box">padding:30</div>
    <div id="box4" class="box">padding:40</div>
    <div id="info"></div>

    <script>
        $(document).ready(function(){
            $("div.box").click(function(){
                var bgColor = $(this).css("background-color");
                var iw = $(this).innerWidth();
                $("#info").html("当前方块的 innerWidth 是 <span style='color:" + bgColor + ";'>" + iw + "px</span>。");
            });
        });
    </script>
</body>
</html>

四个方块的 CSS 宽度都是 60px,但 padding 从 10px 递增到 40px,innerWidth 依次为 80、100、120、140。这里有个细节值得注意:border 都设了 2px,但 innerWidth 没有被 border 影响。如果需要把 border 也算进去,那就要用 outerWidth() 了。

什么时候用 innerWidth 而不是 width()

我的个人经验是,在做以下操作时优先用 innerWidth()

  • 计算输入框内部可用空间(input 的 padding 会影响文字显示区域)

  • 判断子元素是否能放入父容器(父容器有 padding 时,子元素的宽度限制应该是父容器的 innerWidth)

  • 做自定义滚动条或进度条时,需要知道轨道内部的真实长度

反过来,如果只是读取或设置元素本身的内容宽度,不关心 padding,直接用 width() 更直接。两者选错的时候,往往表现为“数值对不上但差得不多”,这种情况排查起来会很耗时间,所以一开始就把概念分清很重要。

本节课程知识要点

  • innerWidth() 的计算公式是 内容宽度 + 左右 padding,不包含 border 和 margin。

  • innerWidth() 只能获取值,不能设置。要改变 innerWidth,需通过修改 width 或 padding 来实现。

  • 与 width() 的区别:width() 只看内容区,innerWidth() 多算了 padding。与 outerWidth() 的区别:outerWidth() 还包含 border。

  • 如果元素没有设置 padding,innerWidth() 和 width() 的返回值是一样的,这时候用哪个差别不大。

  • 获取值返回的是纯数字,不带单位,方便做算术运算和条件判断。

jQuery 的尺寸方法体系里,innerWidth() 处于内容宽度和完整盒模型宽度之间的一个中间层次。它比 width() 更贴近肉眼看到的区域,又比 outerWidth() 少了边框的干扰。在需要计算元素内部可用空间的场景下,这个方法是比较精准的选择。配合 width() 和 outerWidth() 一起理解,jQuery 这套尺寸相关的方法就能形成一个完整清晰的知识结构。

← jQuery height()方法:获取和设置元素高度 jQuery innerHeight()方法:包含内边距的高度计算 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号