Библиотека Cash — лёгкая и удобная альтернатива
jQuery, предоставляющая компактный API для работы с DOM. Одной из важных
возможностей является управление размерами элементов: получение текущих
размеров, их установка и корректное взаимодействие с CSS-свойствами,
такими как width, height,
innerWidth, innerHeight,
outerWidth и outerHeight.
Cash предоставляет методы для получения размеров элементов, которые учитывают различные аспекты модели коробки (box model).
Методы для работы с размерами:
.width() — возвращает
контентную ширину элемента без учёта паддингов, рамок и
скроллбаров.
const contentWidth = $('.box').width();.height() — аналогично, возвращает
контентную высоту.
const contentHeight = $('.box').height();.innerWidth() — возвращает ширину
элемента с учётом паддингов, но без границ (border) и внешних
отступов (margin).
const innerW = $('.box').innerWidth();.innerHeight() — возвращает высоту
с учётом паддингов.
const innerH = $('.box').innerHeight();.outerWidth([includeMargin]) —
возвращает полную ширину элемента, включая паддинги и границы.
Опциональный параметр includeMargin (булево значение)
позволяет добавить к расчёту внешние отступы.
const fullWidth = $('.box').outerWidth(); // без margin
const fullWidthWithMargin = $('.box').outerWidth(true); // с margin.outerHeight([includeMargin]) —
аналогично для высоты.
const fullHeight = $('.box').outerHeight();
const fullHeightWithMargin = $('.box').outerHeight(true);Важно: методы
.width()и.height()всегда возвращают число в пикселях без единиц. Методы.innerWidth(),.innerHeight(),.outerWidth(),.outerHeight()тоже возвращают числовые значения в пикселях.
Cash позволяет устанавливать размеры динамически с использованием чисел или строк с единицами измерения.
Установка ширины и высоты
$('.box').width(200); // 200px
$('.box').height('50%'); // 50% от родителяМетоды inner и outer для установки размеров Cash
не предоставляет прямых методов innerWidth(value) или
outerHeight(value) для установки размеров с учётом padding
и border. Для корректной установки внешних размеров нужно использовать
комбинацию CSS:
$('.box').css({
width: 'calc(100px - 20px)', // уменьшение на padding
height: '150px'
});При установке размеров через
width()илиheight()числовое значение интерпретируется как пиксели. Любые строковые значения передаются напрямую в CSS.
Методы получения размеров работают только с первым элементом в выборке, если она содержит несколько элементов:
const width = $('.box').width(); // вернёт ширину первого .box
Методы установки размеров применяются ко всем элементам выборки:
$('.box').width(300); // установит 300px всем элементам с классом .box
Блочные и строчные элементы
width() и height()
возвращают 0, если они не имеют явных размеров или не
преобразованы в inline-block.Позиционирование и скрытые элементы
display: none), методы
.width() и .height() вернут 0.
Для измерения скрытых элементов требуется временно сделать их видимыми
через CSS или использовать методы обхода DOM.Бордер-бокс и контент-бокс
box-sizing: border-box,
width() возвращает размер контента без границ, несмотря на
CSS-правила. Для точного контроля внешних размеров нужно использовать
outerWidth() или outerHeight().Динамическое выравнивание элементов:
const maxHeight = Math.max(...$('.card').map((el) => $(el).height()));
$('.card').height(maxHeight);Подгонка под родителя:
const parentWidth = $('.container').width();
$('.child').width(parentWidth * 0.8);Учёт внешних отступов при позиционировании:
const totalWidth = $('.box').outerWidth(true); // с marginСочетание с анимациями:
$('.box').animate({ width: 400, height: 200 }, 300);css()..outerWidth(true) и
.outerHeight(true) — надёжный способ учитывать все внешние
отступы.Размеры элементов — фундаментальный аспект динамической верстки и интерфейсных манипуляций. Cash обеспечивает компактный и понятный API, позволяющий легко получать, изменять и синхронизировать размеры DOM-элементов без избыточного кода.