Контейнер-рідина проти .контейнер


509

Щойно завантажили 3,1 і знайшли в документах ...

Перетворіть будь-який макет сітки з фіксованою шириною в макет на повну ширину, змінивши крайній .containerна .container-fluid.

Заглянувши bootstrap.css, виявляється, що .container-fluidце ідентично .container. Обидва мають однаковий CSS, і кожен екземпляр .container-fluidпоєднується з .container, і всі класи стовпців задаються у відсотках.

Під час обертання з прикладами я не бачив різниці, оскільки все здавалося текучим.

Оскільки я новачок у Bootstrap, я припускаю, що мені щось не вистачає. Чи міг би хтось взяти хвилинку і просвітити мене?


4
Я бачив це. Це було розміщено кілька оборотів назад. контейнер-рідина виймали на 3,0 і додавали назад за 3,1.
FatFingers

1
@Ranveer Однозначно не дублікат, оскільки це стосується> BS3, що є BS2.3 - Оскільки це питання не відповідає, чи можете ви видалити, щоб не бентежити майбутніх користувачів
PW Кад

З документа рідина охоплює ширину всього вікна перегляду. (або це цілий контейнер, що працює в даний час, або містить елемент?) У будь-якому випадку, чому назва "fluid"? Що таке рідина на відміну від нетекучої ємності?
пашуте

Відповіді:


704

Швидка версія: .container має одну фіксовану ширину для кожного розміру екрана в завантажувальному пристрої (xs, sm, md, lg); .container-fluidрозширюється, щоб заповнити наявну ширину.


Різниця між containerі container-fluidпоходить від цих рядків CSS:

@media (min-width: 568px) {
  .container {
    width: 550px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

Залежно від ширини вікна перегляду, на якому переглядається веб-сторінка, containerклас надає своєму діві певну фіксовану ширину. Ці рядки не існують у жодній формі для container-fluid, тому його ширина змінюється щоразу, коли змінюється ширина вікна перегляду.

Наприклад, скажімо, вікно вашого браузера шириною 1000 пікселів. Оскільки вона більша, ніж мінімальна ширина 992 пікселів, ваш .containerелемент матиме ширину 970 пікселів. Потім ви повільно розширюєте вікно веб-переглядача. Ширина вашої .containerзміни не зміниться, поки ви не досягнете 1200 пікселів, при цьому вона підскочить до ширини 1170 пікселів і залишиться таким чином для будь-якої більшої ширини браузера.

.container-fluidЗ іншого боку, ваш елемент буде постійно змінювати розмір, коли ви вносите навіть найменші зміни в ширину браузера.


@jkillian Це означає, що якщо я хочу створити макет повної ширини, я повинен використовувати .container-fluidі .containerдля коробки ширину, чи правильно?
Хун ПД

1
@TheHung Залежить саме від того, що ви маєте на увазі під "повною шириною", але container-fluidце те, про що я б пішов у вашому випадку, наскільки я можу сказати
JKillian

@JKillian Як і нині багато тем, у них завжди є 2 макети: розміщена в коробці та широкий макет. Сподіваюся, ви зможете зрозуміти, що я пояснюю. Вибачте за погану англійську.
Хун ПД

@JKillian Як щодо використання .container та .container-рідини в деяких випадках? Напр .: ( design.davidrozando.com/drew-html-v1.1/… ).
Brightweb

5
@JKillian Отже, навіщо рідина з контейнерів навіть потрібна?

177

Я думаю, ти кажеш, що containerпроти container-fluid- це різниця між чуйною та невідповідною сіткою. Це неправда ... що говорить, що ширина не фіксована ... її повна ширина!

Це важко пояснити, тому давайте розглянемо приклади


Приклад перший

container-fluid:

http://www.bootply.com/119981

Отже, ви бачите, як контейнер займає весь екран ... ось це container-fluid.

Тепер давайте подивимось на іншого лише звичайне containerі переглянемо краї попереднього перегляду

Приклад другий

container

http://www.bootply.com/119982

Тепер ви бачите на прикладі білий простір? Це тому, що його фіксована ширина container! Можливо, буде більше сенсу відкривати обидва приклади на двох різних вкладках і перемикатися вперед і назад.

EDIT

Ще краще ось приклад з обома контейнерами одночасно! Тепер ви дійсно можете сказати різницю!

http://www.bootply.com/119983

Сподіваюся, це допомогло трохи прояснити!


у прикладі з обома типами контейнерів є елементи, які змінюють ширину.
ahnbizcad

6
Навіть знаючи, в чому різниця, я знайшов приклад "обох" заплутаним через затінення. Я відправив ваш код, щоб зробити якийсь ясний приклад для деяких: bootply.com/119983 (Крім того, .row-fluid не потрібен у Bootstrap 3. Просто використовуйте .row, чи є ваш контейнер рідким чи ні.)
Карл Буссема

Карл, ваше посилання йде на той самий приклад, що й оригінал. Якщо у вас все ще є роздвоєна версія, можете опублікувати посилання?
Майк Т

6
Ось приклад хорошої вилка посилання , в разі , якщо хто - небудь інші біжать в це в майбутньому.
Майк Коллінз

Спасибі Майку іншим прикладом вони виглядали точно так само в моєму браузері.
eric

169

Обидва .containerі .container-fluidчуйні (тобто змінюють макет залежно від ширини екрану), але різними способами (я знаю, іменування не робить це таким чином).

Коротка відповідь:

.container є стрибковим / чіпким зміною розміру та

.container-fluid безперервне / точне зміна розміру на ширині: 100%.

З точки зору функціональності:

.container-fluidпостійно змінює розмір, змінюючи ширину вікна / браузера на будь-яку кількість, не залишаючи зайвого порожнього місця з боків ніколи, на відміну від того, як .containerце робиться. (Звідси іменування: "флюїд" на відміну від "цифрового", "дискретного", "збитого" або "квантованого").

.containerзмінює розміри в шматки на кілька певних ширин. Іншими словами, це будуть різні конкретні ака "фіксовані" ширини різних діапазонів ширини екрана.

Семантика: "фіксована ширина"

Ви можете бачити, як може виникнути плутанина в іменуванні. Технічно, ми можемо сказати, що .containerце "фіксована ширина", але вона фіксується лише в тому сенсі, що вона не змінює розмір на кожній зернистій ширині. Він насправді не "фіксований" в тому сенсі, що він завжди залишається на певній ширині пікселів, оскільки він насправді може змінювати розмір.

З фундаментальної точки зору:

.container-fluidмає властивість CSS width: 100%;, тому він постійно налаштовується при кожній деталізації ширини екрана.

.container-fluid {
  width: 100%;
}

.containerмає щось на зразок "width = 800px" (або em, rem тощо), певне значення ширини пікселів при різних ширинах екрана. Це, звичайно, є причиною того, що ширина елемента різко підскакує на іншу ширину, коли ширина екрану переступає поріг ширини екрана. І цей поріг регулюється медіа-запитами CSS3, які дозволяють застосовувати різні стилі для різних умов, наприклад діапазони ширини екрана.

@media screen and (max-width: 400px){
  .container {
    width: 123px;
  }
}
@media screen and (min-width: 401px) and (max-width: 800px){

  .container {
    width: 456px;
  }
}
@media screen and (min-width: 801px){
  .container {
    width: 789px;
  }
}

Поза

Ви можете зробити будь-який елемент з фіксованою шириною реагувати на запити медіа, а не лише на .containerелементи, оскільки медіа-запити саме так .containerреалізовані завантажувальним інструментом у фоновому режимі (див. Відповідь JKillian для коду).


1
Хіба не більш точна поведінка для .containerАдаптив на відміну від Чуйного?
ayjay

@ayjay ти підводиш хороший момент. Буде корисним використання термінів для розмежування постійного зміни розміру від стрибкового розміру.
ahnbizcad

1
@ayjay Adaptive виявляє тип пристрою, яким є клієнт, і надає речі на стороні сервера. Чуйному не важливо, яким типом пристрою є клієнт; вона дбає лише про ширину (завдяки медіа-запитам). Таким чином, реагує на клієнта (css, javascript). див. huffingtonpost.com/garrett-goodman/… та amberweinberg.com/is-it-adaptive-or-responsive-web-design IMO-реагування набагато простіше в обслуговуванні та побудові, ніж абсолютно різні версії вашого сайту для різних пристроїв. Але ваш CSS повинен обліковувати всі браузери.
ahnbizcad

@ajay Revisitingng це семантичне запитання адаптивного та чуйного… оскільки адаптивний означає, що він виявляє пристрій і відповідно випльовує різні html / css / js ... можливо, що html / css / js може містити стиль css ширини: 100%;. і це може бути для кожного пристрою. У такому випадку воно все адаптивне, але все-таки змінюється постійно, а не різко в шматках ... Таким чином, це не семантично правильно називати адаптивним проти чуйним
ahnbizcad

24

Використовуйте, .container-fluidколи ви хочете, щоб ваша сторінка змінювалась з будь-якою різницею у розмірі вікна перегляду.

Використовуйте, .containerколи ви хочете, щоб ваша сторінка змінювалась лише на 4 типи розмірів , які також відомі як "точки прориву".

Точками переривання, що відповідають їх розмірам, є:

  • Дуже малий: (лише мобільна роздільна здатність)
  • Малий: 768px (Таблетки)
  • Середній: 992 пікселів (ноутбуки)
  • Великий: 1200 пікселів (Ноутбуки / Настільні ПК)

11

Оновлено 2019 рік

Основна відмінність полягає в тому, що containerваги реагують, хоча container-fluidє завжди width:100%. Тому у кореневих визначеннях CSS вони відображаються однаковими, але якщо ви подивитесь далі, то побачите, що .containerпов'язане з медіа-запитами.

Завантаження 4

containerМає 5 ширин ...

.container {
  width: 100%;
}

@media (min-width: 576px) {
  .container {
    max-width: 540px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 720px;
  }
}

@media (min-width: 992px) {
  .container {
    max-width: 960px;
  }
}

@media (min-width: 1200px) {
  .container {
    max-width: 1140px;
  }
}

Завантаження 3

У containerнього 4 розміри. Повна ширина на xsекранах, а потім їх ширина змінюється залежно від наступних медіа-запитів.

    @media (min-width: 1200px) {
        .container {
            width: 1170px;
        }
    }
    @media (min-width: 992px) {
        .container {
            width: 970px;
        }
    }
    @media (min-width: 768px) {
        .container {
            width: 750px;
        }
    }

демонстрація контейнера проти контейнера-рідини


Це не має нічого спільного з питанням. Приємна інформація, але тут не актуальна.
BeNice

Зим він запитував, яка різниця між .container-fluidта .container. Це була інформація, яку я шукав. Ваша інформація цікава, але, коли я прийшов шукати відповідь, справді збентежив біса на пару хвилин. Якби він був перерахований ПІСЛЯ відповідей, які відповідали на питання, що було б чудово, але ТАК, здається, не дозволяє нам запропонувати власне замовлення. І читаючи свій оригінальний коментар, я був не настільки зрозумілий, як міг би бути. Anyhoo дякую за інформацію.
BeNice

Коротше кажучи, .containerзмінюється ширина відповідно до медіа-запитів і .container-fluidзмінюється ширина в режимі реального часу (відповідно до ширини порту перегляду)
Hassan

6

.containerмає значення пікселя максимальної ширини, тоді .container-fluidяк максимальна ширина - 100%.

.container-fluid постійно змінює розмір, змінюючи ширину вікна / браузера на будь-яку кількість.

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


Здається, що загальна ємність з рідиною краще? Більш чутлива до мобільних телефонів, яка сьогодні величезна річ ...

5

З точки зору відображення .containerви надаєте більше контролю над тим, що бачать користувачі, і полегшує бачити те, що побачать користувачі, оскільки у вас є лише 4 варіації відображення (5 у випадку завантажувального пристрою 5), оскільки розміри залежать від такі ж, як розміри сітки. наприклад .col-xs, .col-sm, .col, і .col-lg.

Це означає, що коли ви робите тестування користувача, якщо ви тестуєте на дисплеях 4 різних розмірів, ви бачите всі перевірки на дисплеї.

При використанні, .container-fluidоскільки witdh пов’язаний із шириною вікна перегляду, дисплей динамічний, тому коливання набагато більше, і користувачі з дуже великими екранами або нечастою шириною екрана можуть побачити результати, яких ви не очікували.


0

Ви праві в 3.1 .container-fluid і .container однакові і працюють як контейнер, але якщо ви вилучите їх, він працює як .container-fluid (повна ширина). Вони видалили .container-fluid для "Мобільного першого підходу", але тепер він повернувся в 3.3.4 (і вони працюватимуть інакше)

Щоб отримати останню завантажувальну програму, будь ласка, прочитайте цю публікацію в stackoverflow, це допоможе перевірити її .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.