Display none important: javascript — Автоматическое добавление стилей display:none!important

javascript — !important и display:none и .height() странность

спросил

Изменено 8 лет, 8 месяцев назад

Просмотрено 2к раз

Вчера я обнаружил кое-что странное при работе с фрагментом кода JS. У меня был div , который был скрыт ( display:none ), и я использовал его высоту в некоторых вычислениях в JS. Все это работало нормально, пока я не добавил свой «скрытый» класс (который имеет display:none !important ).

Внезапно высота всегда была 0 . Других изменений, кроме !важно на дисплее не было.

Немного покопавшись, я сузил проблему до чего-то довольно странного:

 #b { display:none; } /* указанная высота равна 36 */
#c { display:none !важно; } /* сообщаемая высота равна 0 */
 

Я создал очень простую JSFiddle, чтобы изолировать это. Он также использует vanilla JS для получения высоты, которая, похоже, работает нормально / как и ожидалось.

Кажется, что jQuery неправильно сообщает высоту невидимых DIV, и что !important ведет себя правильно.

Это ошибка в jQuery?

  • javascript
  • jquery
  • css

6

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

Я думаю, нам нужно больше пояснений

В принципе нет способа получить высоту элемента из DOM, если он не имеет никакой высоты. Таким образом, когда отображает нет , высота не существует или

ноль .

В jQuery, если отображать равно none , мы можем просто установить display на block на долю секунды, чтобы получить height , во время этого встроенный стиль изменяется, как обычно делается jQuery.

 <дел>/дел>
 

Затем берется высота , но в это время, если вы установили display:none!important в css, этот встроенный стиль не будет работать, и вычисленная высота становится нулевой .

По моему личному мнению, всегда лучше не использовать !important, так как это затрудняет чтение вашего кода/презентации. Css обычно имеет множество способов переопределить стили.

Если вы все еще хотите продолжить, встроенный !important может переопределить ваш стиль и вычислить высоту самостоятельно, используя jQuery show для второго метода, или просто переопределить функцию jQuery для вычисления высоты 🙂

4

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

jQuery CSS — Удалить Добавить показать нет

Нет ответа на этот вопрос.

Будьте первыми, кто откликнется.

Ваш ответ

Связанные вопросы в веб-разработке

У меня есть div с этим классом… ПОДРОБНЕЕ

21 июля в веб-разработке по гаурав • 21 740 баллов • 170 просмотров

  • jquery
  • CSS

document.getElementById(«elementId»).style.display=»нет» используется в JavaScript, чтобы скрыть … ПОДРОБНЕЕ

29 июня в веб-разработке по гаурав • 21 740 баллов • 876 просмотров

  • JavaScript
  • jquery
  • CSS
  • производительность

У меня есть элемент, который должен иметь … ПОДРОБНЕЕ

19 августа в веб-разработке по гаурав • 21 740 баллов • 47 просмотров

  • jquery
  • CSS

display:none означает, что рассматриваемый тег будет …

ПОДРОБНЕЕ

ответил 14 декабря 2020 г. в веб-разработке по Гитика • 65 890 баллов • 98 723 просмотра

  • HTML
  • CSS
  • JavaScript
  • узлы
  • угловой

<голова> <скрипт> $(документ). готов(функция(){ $(«кнопка»). нажмите (функция () { $(«р»). text(«Добро пожаловать в … ПОДРОБНЕЕ

ответил 27 июня в веб-разработке по раджата • 7 480 баллов • 149Просмотры

  • jquery
  • HTML
  • CSS

Когда вы не уверены, как ваш элемент … ПОДРОБНЕЕ

ответил 27 июня в веб-разработке по раджата • 7 480 баллов • 213 просмотров

  • jquery
  • твиттер-бутстрап

Привет, jQuery — это быстрый и лаконичный JavaScript … ПОДРОБНЕЕ

ответил 14 февраля 2020 г. в JQuery по картик • 37 510 баллов • 388 просмотров

  • HTML
  • CSS
  • JavaScript
  • jquery
  • угловой

Привет Картик, Переменная, объявленная вне функции, имеет .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *