Jquery width не работает

jQuery width (); не работает правильно

Я думаю, что схожу с ума :).

В моем js файле у меня есть:

Это предупредит «867» . Что не так.

В консоли Chrome или Firefox я набираю:

Он отвечает 567. Что правильно.

Я что-то здесь упускаю? Должен ли я делать это по-другому. Потому что код в файле JS все время портится.

Кстати, элемент имеет ширину и значение с плавающей точкой, заданные с помощью CSS — ширина: 80% и float: left. Но консоли браузера все еще дают мне правильную ширину.

4 ответа

Иногда вам приходится работать со свойствами, думая о заполнении и добавлении дополнительных размеров. Такие команды, как innerWidth , заботятся о заполнении элемента, но outerWidth соответствуют размеру, считающему его границу (и, если получают true, то и их поля тоже).

Причина

Метод .width () подчиняется браузеру перекрасить и перекрасить. Браузер перекомпоновывает и перерисовывает объекты DOM во время выполнения. Визуальные изменения в документе HTML также вызывают перекомпоновку и перерисовку.

По этим причинам метод .width() будет возвращать нулевое ( 0 ) значение в тех состояниях браузера, где еще предстоит выполнить reflow-and-repaint.

Решение

Всегда вызывайте метод .width() после перекомпоновки и перекраски.

Общие случаи

Случай 1. Документ готов VS Окно загрузки

Во время $(document).ready объекты DOM готовы к работе. Тем не менее, браузер все еще делает перекомпоновку и перерисовку. Таким образом, есть большой шанс, что вы получите .width() = 0

В $(window).load объекты DOM готовы к работе, и браузер завершил перекомпоновку и перекрасил все в документе.

Дело № 2. Скрытый VS Показанный

HTML

jQuery

Опять же, чтобы исправить проблему нулевой ширины, всегда вызывайте метод .width() после reflow-and-repaint.

Источник

Работа с шириной элемента

Материал из JQuery

все три функции возвращают ширину первого из выбранных элементов страницы. Отличия у функций следующие:

width() — ширина элемента без учета отступов и толщины рамки.
innerWidth() — ширина элемента с учетом размера внутренних отступов (padding).
outerWidth(includeMargin) — ширина элемента с учетом внутренних отступов, рамки (border-width) и при необходимости внешних отступов (margin).

$(«div.content»).width() возвратит ширину первого div-элемента с классом content.
$(document).width() возвратит ширину всей страницы
$(«.content»).width(30) устанавливает значение ширины в 30 пикселей всем элементам с классом content.
$(«div.content»).outerWidth() возвратит ширину первого div-элемента с классом content. В значение высоты будут включены внутренние отступы и толщина рамок
$(«div.content»).outerWidth(true) аналогично предыдущему примеру, но в значение ширины будут так же включены внешние отступы.

Замечание 1: использование функции .width() обычно удобнее, чем .css("width"), поскольку возвращаемое ей значение не содержит окончания «px». То есть в первом случае, вы получите 30, а во втором «30px».

Читайте также:  Возвышенный настрой оратора 5

Замечание 2: важно отметить, что используя метод .width(name) вы получите значения атрибута только первого элемента из всех выбранных. Если вам нужны значения всех элементов, то следует использовать конструкции типа .map() или .each().

В действии

Увеличим ширину всех элементов во второй строке на 10 пикселей.

Результат:

Источник

jQuery метод .width()

Определение и применение

jQuery метод .width() получает текущее вычисленное значение ширины для первого элемента в наборе совпавших элементов, или устанавливает ширину каждого соответствующего элемента.

Наглядное отображение использования jQuery метода .width().

Обращаю Ваше внимание, что разница между методами .css( » width» ) и .width() заключается в том, что последний возвращает значение без указания единиц измерения, тогда как первый возвращает значение в пикселях (пример приведен ниже).

jQuery метод .width() рекомендуется использовать, когда необходимо использовать ширину элемента в математическом расчете. Для вычисления высоты элемента используется метод .height().

jQuery метод .width() также сможете найти ширину окна, или документа:

jQuery метод .width() не гарантирует точность в том случае, когда элемент, или его родитель скрыт. Чтобы получить точное значение, убедитесь, что элемент является видимым перед использованием метода. jQuery будет пытаться временно показать, а затем снова скрыть элемент для того, чтобы измерить его размеры, но в этом случае метод не является надежным, это может влиять на производительность страницы. Подобная функция измерения может быть удалена в следующей версии библиотеки jQuery.

Метод с версии jQuery 1.8 вычисляет и возвращает ширину элемента независимо от того какая модель вычисления ширины и высоты используется ( content-box , или border-box свойства box-sizing). То есть метод будет вычитать границы и внутренние отступы. Если Вас это не устраивает, то используйте метод .css( » width» ). Пример сравнения двух моделей и этих методов представлен ниже.

jQuery синтаксис:

Добавлен в версии jQuery

Значения параметров

Параметр Описание
value Параметр определяет значение ширины, которое будет установлено. Допускается указывать любые единицы измерения CSS, либо указывать только числовое значение без единиц измерения, в этом случае значение будет установлено в пикселях.
function (index, currentValue) Определяет функцию, которая возвращает новое значение ширины, которое будет установлено выбранным элементам. Внутри функции this ссылается на текущий элемент в наборе.
index — возвращает индекс элемента в наборе.
currentValue — текущее значение ширины элемента.

Пример использования

В этом примере мы при нажатии на кнопку:

    с использованием jQuery метода .css() возвращаем и выводим в консоль браузера значение ширины первого элемента

, ширину HTML документа и значение ширины области просмотра браузера.

Результат нашего примера:

Пример использования jQuery метода .width() (возвращение значения)

Рассмотрим следующий пример в котором мы рассмотрим отличие метода .width() от метода .css() при использовании моделей вычисления ширины и высоты элементов content-box и border-box :

В этом примере мы при нажатии на кнопку:

    с использованием jQuery метода .css() возвращаем и выводим в консоль браузера значение ширины элемента

использует модель border-box , значение вывода не включает в себя как границы элемента, так и внутренние отступы. В этом заключается отличие этого метода от метода .css() при использовании метода border-box .

Читайте также:  Где можно отремонтировать надувную лодку

Результат нашего примера:

Пример использования jQuery метода .width() (модели content-box и border-box)

Рассмотрим следующий пример в котором с помощью метода .width() мы будем устанавливать значения ширины, а не возвращать.

В этом примере мы при нажатии на кнопку с использованием jQuery метода .width() устанавливаем значение ширины элементам

с классом test1 равную 150 пикселей, а элементам с классом test2 значение ширины равную 35% от родительского элемента.

Обратите внимание на то, что если вы задаете значение не в пикселях (без указания единиц измерения), то значение необходимо передавать в виде строки.

Результат нашего примера:

Пример использования jQuery метода .width() (установка значений)

Рассмотрим следующий пример в котором в качестве параметра метода .width() мы передадим функцию.

В этом примере мы в качестве параметра метода .width() передаем функцию, которая возвращает и устанавливает новое значение ширины элемента

Результат нашего примера:

Пример использования jQuery метода .width() (функция в качестве параметра)

Рассмотрим следующий пример в котором с помощью метода .resize() и метода .width() будем отслеживать ширину области просмотра браузера и при её изменении устанавливать определённый цвет заднего фона.

В этом примере с помощью метода .resize() и метода .width() мы отслеживаем ширину области просмотра браузера и при её изменении устанавливаем определённый цвет заднего фона элементу . Если ширина области просмотра меньше 1000 пикселей и больше 800 пикселей, то цвет заднего фона будет установлен желтый. Если ширина области просмотра меньше 800 пикселей и больше 600 пикселей, то цвет заднего фона будет установлен зеленый, в других случаях цвет заднего фона будет установлен как синий.

Обратите внимание, что при загрузке страницы цвет будет белый, так как функция запуститься только при изменении размеров окна (jQuery метод .resize()).

Результат нашего примера:

Пример использования jQuery метода .width() при изменении ширины окна jQuery DOM методы

Источник

.width()

Contents:

.width() Returns: Number

Description: Get the current computed width for the first element in the set of matched elements.

version added: 1.0 .width()

The difference between .css( «width» ) and .width() is that the latter returns a unit-less pixel value (for example, 400 ) while the former returns a value with units intact (for example, 400px ). The .width() method is recommended when an element’s width needs to be used in a mathematical calculation.

Figure 1 — Illustration of the measured width

This method is also able to find the width of the window and document.

Note that .width() will always return the content width, regardless of the value of the CSS box-sizing property. As of jQuery 1.8, this may require retrieving the CSS width plus box-sizing property and then subtracting any potential border and padding on each element when the element has box-sizing: border-box . To avoid this penalty, use .css( «width» ) rather than .width() .

Note: Although style and script tags will report a value for .width() or height() when absolutely positioned and given display:block , it is strongly discouraged to call those methods on these tags. In addition to being a bad practice, the results may also prove unreliable.

Читайте также:  У самсунга сломался экран

Additional Notes:

  • The number returned by dimensions-related APIs, including .width() , may be fractional in some cases. Code should not assume it is an integer. Also, dimensions may be incorrect when the page is zoomed by the user; browsers do not expose an API to detect this condition.
  • The value reported by .width() is not guaranteed to be accurate when the element or its parent is hidden. To get an accurate value, ensure the element is visible before using .width() . jQuery will attempt to temporarily show and then re-hide an element in order to measure its dimensions, but this is unreliable and (even when accurate) can significantly impact page performance. This show-and-rehide measurement feature may be removed in a future version of jQuery.

Example:

Show various widths. Note the values are from the iframe so might be smaller than you expected. The yellow highlight shows the iframe body.

Источник

Параметр jQuery DataTables column.width не работает должным образом

  1. согласно документации, он говорит, чтобы использовать columns.width возможность контролировать ширину столбца
  2. когда я использую columns.width и визуализировать таблицу, он игнорирует эту ширину и использует свою собственную ширину
  1. Я использую 2 столбца с длинными строками, чтобы проверить, если я применить ширину к нему
  2. имя столбца имеет длинную строку без пробелов
  3. описание столбца имеет длинную строку с пробелами
  4. Я пытаюсь применить ширину 200px к имени столбца

Вопрос:

Какой в ​​этом смысл columns.width если таблица будет по-прежнему обеспечивать свою собственную ширину

Как я могу применить ширину 200 пикселей к имени столбца и увидеть его в действии?

JS:

2 ответа

Свойство width просто полезно для общей относительной ширины. В вашем случае у вас также есть word-wrap вопрос. Определите класс CSS и примените его к столбцу:

Поскольку вы оборачиваете содержимое в Вы можете рассмотреть возможность добавления класса к этому вместо

а также что className делает.

Если вы хотите полностью контролировать ширину, посмотрите этот ответ -> jQuery DataTables фиксированный размер для ОДНОГО столбца?

Основано на ответе @davidkonrad. Здесь альтернативный подход.

ОБНОВЛЕНИЕ: я создал плагин, который применяет определенные CSS в столбцах dataTables.colStyle.js

использование:

Плюсы:

  1. Оно использует column.width вариант и применяется css вместо classes
  2. Нет необходимости определять «`классы
  3. использования createdRow обратный вызов, чтобы сделать автоматизацию
  4. Заголовки столбцов всегда в одну строку, то есть они не будут растягиваться по высоте, если ширина таблицы слишком мала
  5. Минимальная ширина столбца — это всегда то, что требуется для сохранения заголовков столбцов в одну строку. Если вы предоставите ширину 50px до столбца, он все равно будет растягиваться, так что заголовок будет в одну строку, даже если он должен превышать заданную ширину 50px

Требуется больше предложений, чтобы сделать его более элегантным

Источник

Оцените статью