为什么 <td> 的大小在使用 box-sizing 属性 添加边框时发生变化?

Why is the size of the <td>s changing when border is added inside it using the box-sizing property?

我正在使用 .click JQuery 方法在单击时将 .clicked 添加到 <td>.clicked 包含边框并且 box-sizing 属性 设置为 border-box

当我水平或垂直单击两个连续的 <td> 时,它们的大小似乎发生了变化。为什么会这样?

这是我的代码:

<!-- page.html -->

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="stylesheet.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <table>
            <tr>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <td></td>
                <td></td>
            </tr>
        </table>
    </body>
</html>

/* stylesheet.css */

td {
    height: 100px;
    width: 100px;
    background-color: red;
}

.clicked {
    border: 5px solid green;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

// script.js

$(document).ready(function () {
    $("td").click( function() {
        $(this).addClass("clicked");
    });
});

不胜感激。

填充(不计入 box-sizing: border-box 会把事情搞砸。如果将此设置为 0,则 tdpadding1px然后奇怪的行为就消失了。

https://jsfiddle.net/x11us50v/