2016-06-09 2 views
1

Может кто-то пожалуйста объяснить, почему, когда HTML являетсяJQuery ширина() и outerWidth() производит странные результаты

<div class="div">This is a normal DIV</div> 

JQuery

$('.div').width("50%"); 

and 

$('.div').outerWidth("50%"); 

производят такие странные результаты? Я попытался это с нормально расположенными DIVs, абсолютно позиционируемых DIVs, и с и без CSS

box-sizing: border-box; 

Я получаю сплющенные DIVs (то есть. Минимальная ширина) с outerWidth («50%») когда граница ящика не установлен, и более широкие, чем ожидалось, DIV с шириной («50%») при установке рамки. (FWIW, положение:. Абсолют, кажется, не имеет никакого значения)

См https://jsfiddle.net/zk1gys7z/1/

+0

Вы должны, вероятно, прочитать о 'border-box' –

+0

Похоже, может быть ошибка в jQuery: https://github.com/jquery/jquery/issues/1712 – MSC

ответ

0

Я не могу объяснить, что происходит там с JS, это не всегда, как представляется, применение 50%, Я видел применяемые стили, которые составляли 8%, 92% и другие странные значения.

Я думаю, что вы получите результат, который вы ищете с:

$('.div').css("width", "50%"); 

С border box применяется потребуется заполнение во внимание, при этом, он будет размер только содержание, чтобы быть 50% (заполнение будет дополнительно)

+0

Спасибо @Darvanen. На данный момент я использую outerWidth() с рамкой, но это очень странное поведение, и я надеюсь, что кто-то еще может объяснить, почему это происходит. – MSC

Смежные вопросы