jQuery метод .width()
Определение и применение
jQuery метод .width() получает текущее вычисленное значение ширины для первого элемента в наборе совпавших элементов, или устанавливает ширину каждого соответствующего элемента.
Наглядное отображение использования jQuery метода .width().
jQuery метод .width() также сможете найти ширину окна, или документа:
$( document ).width() // возвращает ширину HTML документа
$( window ).width() // возвращает ширину области просмотра браузера
jQuery метод .width() не гарантирует точность в том случае, когда элемент, или его родитель скрыт. Чтобы получить точное значение, убедитесь, что элемент является видимым перед использованием метода. jQuery будет пытаться временно показать, а затем снова скрыть элемент для того, чтобы измерить его размеры, но в этом случае метод не является надежным, это может влиять на производительность страницы. Подобная функция измерения может быть удалена в следующей версии библиотеки jQuery.
Метод с версии jQuery 1.8 вычисляет и возвращает ширину элемента независимо от того какая модель вычисления
ширины и высоты используется (content-box, или border-box свойства
box-sizing). То есть метод будет вычитать границы и внутренние отступы. Если Вас это не устраивает, то используйте метод
.css( "width" ). Пример сравнения двух моделей и этих методов представлен ниже.
jQuery синтаксис:
Возвращение значений:
Синтаксис 1.0:
$( selector ).width() // метод используется без параметровУстановка значений:
Синтаксис 1.0:
$( selector ).width( value )
value - String (значение в произвольных единицах измерения), или Integer (значение в пикселях)
Синтаксис 1.4.1:
$( selector ).width(function( index, currentValue ))index - Integer
currentValue - Integer.
Добавлен в версии jQuery
1.0 (синтаксис обновлен в 1.4.1)Значения параметров
| Параметр | Описание |
|---|---|
| value | Параметр определяет значение ширины, которое будет установлено. Допускается указывать любые единицы измерения CSS, либо указывать только числовое значение без единиц измерения, в этом случае значение будет установлено в пикселях. |
function(index, currentValue) |
Определяет функцию, которая возвращает новое значение ширины, которое будет установлено выбранным элементам.
Внутри функции this ссылается на текущий элемент в наборе.index - возвращает индекс элемента в наборе. currentValue - текущее значение ширины элемента. |
Пример использования
Метод .width() — пример 1
Нажмите . Используйте кнопки в результате и наблюдайте изменения. Измените JavaScript и запустите пример повторно. Используется jQuery 4.0.0.
index.html
<button>Клик</button>
<p style="width: 10em">Обычный абзац</p>
<p style="width: 10em">Второй обычный абзац</p>
main.js
$(document).ready(function () {
$('button').click(function () {
// задаем функцию при нажатиии на элемент <button>
console.log($('p').css('width')) // используя метод .css() возвращаем и выводим в консоль браузера значение ширины первого элемента <p>
console.log($('p').width()) // используя метод .width() возвращаем и выводим в консоль браузера значение ширины первого элемента <p>
console.log($(document).width()) // возвращает и выводит в консоль браузера ширину HTML документа
console.log($(window).width()) // возвращает и выводит в консоль браузера ширину области просмотра браузера
})
})
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
Нажмите , чтобы запустить пример.
В этом примере мы при нажатии на кнопку:
-
с использованием jQuery метода
.css()
возвращаем и выводим в консоль браузера значение ширины первого элемента
<p>. -
с использованием jQuery метода .width() возвращаем и выводим в консоль браузера значение ширины первого
элемента
<p>, ширину HTML документа и значение ширины области просмотра браузера.
Рассмотрим следующий пример в котором мы рассмотрим отличие метода .width() от метода
.css()
при использовании моделей вычисления ширины и высоты элементов content-box и border-box:
Метод .width() — пример 2
Нажмите . Используйте кнопки в результате и наблюдайте изменения. Измените JavaScript и запустите пример повторно. Используется jQuery 4.0.0.
index.html
<button>Клик</button>
<p class="test1">Обычный абзац</p>
<p class="test2">Обычный абзац</p>
main.js
$(document).ready(function () {
$('button').click(function () {
// задаем функцию при нажатиии на элемент <button>
console.log($('.test1').css('width')) // используя метод .css() возвращаем и выводим в консоль браузера значение ширины элемента с классом .test1
console.log($('.test1').width()) // используя метод .width() возвращаем и выводим в консоль браузера значение ширины элемента с классом .test1
console.log($('.test2').css('width')) // используя метод .css() возвращаем и выводим в консоль браузера значение ширины элемента с классом .test2
console.log($('.test2').width()) // возвращает и выводит в консоль браузера значение ширины элемента с классом .test2
})
})
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
.test1 {
box-sizing: content-box; /* модель по умолчанию (включает в себя только содержание элемента) */
width: 200px; /* ширина элемента */
padding: 10px; /* внешние отступы со всех сторон */
border: 10px solid green; /* сплошная граница зеленого цвета размером 10 пикселей */
}
.test2 {
box-sizing: border-box; /* модель border-box (включает в себя содержание элемента, границы и внутренние отступы) */
width: 200px; /* ширина элемента */
padding: 10px; /* внешние отступы со всех сторон */
border: 10px solid green; /* сплошная граница зеленого цвета размером 10 пикселей */
}
Нажмите , чтобы запустить пример.
В этом примере мы при нажатии на кнопку:
-
с использованием jQuery метода
.css()
возвращаем и выводим в консоль браузера значение ширины элемента
<p>с классом test1 и test2. Обратите внимание независимо от того какую модель используют элементы результат вывода будет один. -
с использованием jQuery метода .width() возвращаем и выводим в консоль браузера значение ширины элемента
<p>с классом test1 и test2. Обратите внимание, что во втором случае, где элемент<p>использует модельborder-box, значение вывода не включает в себя как границы элемента, так и внутренние отступы. В этом заключается отличие этого метода от метода .css() при использовании методаborder-box.
Рассмотрим следующий пример в котором с помощью метода .width() мы будем устанавливать значения ширины, а не возвращать.
Метод .width() — пример 3
Нажмите . Используйте кнопки в результате и наблюдайте изменения. Измените JavaScript и запустите пример повторно. Используется jQuery 4.0.0.
index.html
<button>Клик</button>
<p class="test1">Обычный абзац</p>
<p class="test1">Обычный абзац</p>
<p class="test2">Обычный абзац</p>
<p class="test2">Обычный абзац</p>
main.js
$(document).ready(function () {
$('button').click(function () {
// задаем функцию при нажатиии на элемент <button>
$('.test1').width(150) // устанавливаем ширину элементам с классом test1 в пикселях
$('.test2').width('35%') // устанавливаем ширину элементам с классом test2 в процентах
})
})
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
p {
background-color: orange; /* устанавливаем цвет заднего фона */
}
Нажмите , чтобы запустить пример.
В этом примере мы при нажатии на кнопку с использованием jQuery метода .width() устанавливаем значение ширины
элементам
<p>
с классом test1 равную 150 пикселей, а элементам с классом test2 значение ширины равную
35% от родительского элемента.
Рассмотрим следующий пример в котором в качестве параметра метода .width() мы передадим функцию.
Пример использования jQuery метода .width() (функция в качестве параметра)
Нажмите , затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 4.0.0.
index.html
<div class="test1"></div>
<div class="test2"></div>
main.js
$(document).ready(function () {
$('div').click(function () {
$(this).width(function (index, currentValue) {
return currentValue - 50
})
})
})
style.css
div {
background-color: yellow;
height: 50px;
margin-bottom: 20px;
}
Нажмите , чтобы запустить пример.
В этом примере мы в качестве параметра метода .width() передаем функцию, которая возвращает и устанавливает
новое значение ширины элемента
<div>
по которому произведен клик. В нашем случае новая ширина элемента высчитывается как текущая ширина элемента минус
50 пикселей.
Рассмотрим следующий пример в котором с помощью метода .resize() и метода .width() будем отслеживать ширину области просмотра браузера и при её изменении устанавливать определённый цвет заднего фона.
Метод .width() — пример 5
Нажмите . Измените JavaScript и запустите пример повторно. Используется jQuery 4.0.0.
index.html
<h1>Try to resize window</h1>
main.js
$(document).ready(function () {
$(window).resize(function () {
// привязываем обработчик событий (срабатывает при изменении размеров окна)
if ($(this).width() < 1000 && $(this).width() > 800) {
// Если ширина области просмотра меньше 1000 пикселей и больше 800 пикселей
$('body').css('background-color', 'yellow') // устанавливаем цвет заднего фона желтый
} else if ($(this).width() < 800 && $(this).width() > 600) {
// Если ширина области просмотра меньше 800 пикселей и больше 600 пикселей
$('body').css('background-color', 'green') // устанавливаем цвет заднего фона зеленый
} else {
// если не соответствует ни одному условию
$('body').css('background-color', 'blue') // устанавливаем цвет заднего фона синий
}
})
})
style.css
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
max-width: 100%;
}
Нажмите , чтобы запустить пример.
В этом примере с помощью метода .resize() и метода .width() мы отслеживаем ширину области просмотра
браузера и при её изменении устанавливаем определённый цвет заднего фона элементу
<body>. Если ширина области просмотра меньше 1000 пикселей и больше 800 пикселей, то цвет заднего фона будет
установлен желтый. Если ширина области просмотра меньше 800 пикселей и больше 600 пикселей, то
цвет заднего фона будет установлен зеленый, в других случаях цвет заднего фона будет установлен как
синий.
Обратите внимание, что при загрузке страницы цвет будет белый, так как функция запуститься только при изменении размеров окна (jQuery метод .resize()).