jQuery недооценивает ширину и высоту некоторых элементов на странице

0

Я пытаюсь обратить внимание на некоторые элементы страницы во время учебного курса пользовательского интерфейса (см. Эффект прожектора CSS3 с использованием закругленного прямоугольника с градиентами).

Например, здесь navbar:

Изображение 174551

и подсветка (остальная часть страницы затемняется):

Изображение 174551

Однако один из элементов моей страницы вызывает у меня проблемы. Здесь он позиционируется в Chrome:

Изображение 174551

Однако jQuery считает, что он равен 330 пикселей на 60 пикселей:

> var blah = $('.user-list')
[
<div class=​"well well-skinny user-list">​…​</div>​
]
> blah.height()
60
> blah.width()
330

Это приводит к тому, что в центре внимания он слишком мал:

Изображение 174551

Странно, на странице есть много других элементов (например, navbar), размеры которых рассчитаны правильно, а прожектор показывает их правильно.

Что происходит с этим элементом, который заставляет jQuery показывать неправильную высоту и ширину? Дополнительная информация:

  • Вся страница находится на border-box за исключением input элементов, которые плохо воспроизводятся при загрузке.
  • На всех сторонах имеется 9px-накладка с 1px-границей, что компенсирует несоответствие размера, однако есть много других элементов с границей/дополнением, где вычисление размера работает правильно, и это единственный элемент, который является странным. Например, загрузочный навигатор, показанный выше, имеет 20px отступов с левой и правой сторон, но ширина вычисляется правильно.
  • 2
    Как насчет outerHeight() и outerWidth() ?
  • 0
    @ f00bar Возможно ли, что height() на самом деле вычисляет innerHeight() для этого элемента и outerHeight() для других элементов? Это было бы интересно ...
Показать ещё 1 комментарий

2 ответа

0

Ширина плохо объясняется во многих местах, однако она более точно определяется как ширина "контекстного окна". Больше информации здесь.

0

Ширина элемента css (в соответствии с размером поля css)

если (это рамка)

 css width = element content width + padding + border

если (это отступы)

css width = element content width + padding

Если (это контент-бокс, который по умолчанию)

css width = element content width

и так для высоты


jQuery.width() всегда дает ширину содержимого элемента.

Если вы хотите .innerWidth() ширину и высоту элементов с помощью прокладки, вы можете использовать .innerWidth() и innerHeight().

Если вы хотите включить размер границы, чем использовать .outerWidth() и .outerHeight()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню