Як видалити стиль висоти з DIV за допомогою jQuery?


85

За замовчуванням висота DIV визначається його вмістом.

Але я перевизначаю це і явно встановлюю висоту за допомогою jQuery:

$('div#someDiv').height(someNumberOfPixels);

Як я можу це змінити? Я хочу видалити стиль висоти і повернути його до автоматичної / природної висоти?


1
Я теж не можу змусити це працювати. Здається, що після того, як ви встановите висоту div для чогось конкретного (наприклад, 300 пікселів або що завгодно), ви не зможете встановити висоту назад до автоматичного. Може бути помилкою jQuery.
Брендон Монтгомері

Відповіді:


102

щоб зняти висоту:

$('div#someDiv').css('height', '');
$('div#someDiv').css('height', null);

як зазначив Джон, встановіть висоту auto:

$('div#someDiv').css('height', 'auto');

(перевірено за допомогою jQuery 1.4)


6
Ви дали три рішення, я можу підтвердити встановлення висоти для "" роботи, не знаю про інші.
Даніель Бердслі

1
У jQuery 1.9 використання '', але використання nullні.
Стів Таубер

1
Є тонкі відмінності: 1 + 2 дозволяє переробляти таблицю (якщо там щось визначено), 3 перевизначає її (оскільки атрибут, встановлений на auto, має вищий пріоритет)
Френк Ноке,

23
$('div#someDiv').height('auto');

Мені подобається використовувати це, оскільки воно симетрично з тим, як ви явно використовували .height (val), щоб встановити його в першу чергу, і працює в усіх браузерах.


2
Це примушує висоту до автоматичної висоти, замінюючи будь-які існуючі правила CSS. Це може бути нормально у деяких конкретних випадках, але загалом це може спричинити проблеми.
Bennett McElwee

@BennettMcElwee Я насправді борюся з проблемою, яку ви описали зараз. Тож +1 за це.
Native Coder

20

Ви можете спробувати це:

$('div#someDiv').height('');

4
це має бути правильним anwser, оскільки цей видаляє значення стилю css (), корисно змінювати розмір за допомогою js :) Вітаємо, спасибі
Шимон

19

можливо щось на зразок

$('div#someDiv').css("height", "auto");

2
Це замінить будь-які існуючі правила CSS, які повинні застосовуватися, що може бути проблемою.
Bennett McElwee

14

Щоб скинути висоту div, просто спробуйте

$("#someDiv").height('auto');


Це копія відповіді @ nonrectangular, яка передує цій редакції.
Bennett McElwee


0

просто щоб додати до відповідей тут, я використовував висоту як функцію з двома параметрами, або вкажіть висоту, якщо вона менша за висоту вікна, або встановіть її назад на авто

var windowHeight = $(window).height();
$('div#someDiv').height(function(){
    if ($(this).height() < windowHeight)
        return windowHeight;
    return 'auto';
});

Мені потрібно було відцентрувати вміст вертикально, якщо він був меншим за висоту вікна, або ж дозволити йому прокручуватись природним чином, ось що я придумав


0

Дякую хлопцям, що показали всі ці приклади. Я все ще мав проблеми зі своєю сторінкою контактів на малих екранах мультимедіа, наприклад, нижче 480 пікс. Бутстрап продовжував вставляти height: auto.

Інспектор елементів / Devtools покаже висоту в:

element.style {

}

У моєму випадку я бачив: section#contact.contact-container | 303 x 743у вікні браузера.

Отже, наступні повнометражні роботи з усунення проблеми:

$('section#contact.contact-container').height('');


-6
$('div#someDiv').removeAttr("height");

я не думаю, що це буде працювати для стилю css висоти, який вбудований в атрибут aa style ...
topwik

Якщо що, ви хочете видалити Atr ("стиль")
jigglyT101

Це працює, і це найкращий варіант, однак, якщо (на відміну від запитання тут) ви намагаєтеся видалити height="XX"атрибут HTML
user56reinstatemonica8
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.