Какова разница между шириной, внутренней шириной и внешней шириной, высотой, внутренней высотой и внешней высотой в jQuery


Я написал несколько примеров, чтобы увидеть, в чем разница, но они показывают мне те же результаты для ширины и высоты.

<html>
    <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                var div = $('.test');
                var width = div.width(); // 200 px
                var innerWidth = div.innerWidth(); // 200px
                var outerWidth = div.outerWidth(); // 200px

                var height = div.height(); // 150 px
                var innerHeight = div.innerHeight(); // 150 px
                var outerHeight = div.outerHeight(); // 150 px
            });

        </script>
        <style type="text/css">
            .test
            {
                width: 200px;
                height: 150px;
                background: black;
            }
        </style>
    </head>
    <body>
        <div class="test"></div>
    </body>
</html>

в этом примере вы можете видеть, что они выводят одинаковые результаты. Если кто-нибудь знает в чем разница, пожалуйста, покажите мне соответствующий ответ.

спасибо.

4 98

4 ответа:

Как уже упоминалось в комментарии документация говорит вам точно, что различия есть. Но вкратце:

  • innerWidth / innerHeight-включает в себя заполнение, но не границы
  • outerWidth / outerHeight-включает в себя заполнение, границы и, возможно, поля
  • высота / ширина-высота элемента (без заполнения, без полей, без границ)
  • width = получить ширину,

  • innerWidth = получить ширину + обивка,

  • outerWidth = get width + padding + border и дополнительно margin

Если вы хотите испытать добавить некоторые отступы, поля, границы .проверьте классы и повторите попытку.

также читайте в jQuery docs... Все, что вам нужно, в значительной степени там

кажется необходимым рассказать о назначениях значений и сравнить о значении параметра "ширина" в jq : (предположим, что new_value определяется в единице px)

jqElement.css('width',new_value);
jqElement.css({'width: <new_value>;'});
getElementById('element').style.width= new_value;

три инструкции не дают тот же эффект: потому что первая инструкция jquery определяет innerwidth элемента, а не "ширина". Это сложно.

чтобы получить тот же эффект, вы должны рассчитать прокладки раньше (предположим, что VAR-это колодки), правильная инструкция для jquery, чтобы получить тот же результат, что и чистый js (или параметр css 'width'):

jqElement.css('width',new_value+pads);

мы также можем отметить, что :

var w1 = jqElement.css('width');
var w2 = jqelement.width();

w1-это внутренняя ширина, в то время как w2-это ширина (значение атрибута css) Разница, которая не задокументирована в документации JQ API.

С наилучшими пожеланиями

втройне


Примечание : На мой взгляд, это можно рассматривать как ошибку JQ 1.12.4 выход должен быть таким: введем окончательно список принятых параметров для .css ('parameter', value), потому что за "параметрами" принимаются различные значения, которые имеют интерес, но всегда должны быть ясными. В этом случае: 'innerwidth' не будет означать то же самое, что и 'width'. Мы можем найти след этой проблемы в документации .ширина (значение) с предложением : "обратите внимание, что в современных браузерах свойство CSS width не включает заполнение"