різниця між шириною авто та шириною 100 відсотків


99

Раніше моє припущення про width: autoте, що ширина встановлена ​​на ширину вмісту. Тепер я бачу, що це займає всю ширину батьківської.

Хто-небудь може описати різницю між ними?



У двох словах: 1) auto, батьківський div ширина / висота буде сумою його дочірніх елементів. 2) 100 відсотків, його ширина / висота буде батьківською. Дивіться статтю тут
Алан Донг,

Відповіді:


142

Ширина авто

Початкова ширина елемента рівня блоку, такого як div або p, є автоматичною. Це змушує його розширюватись, займаючи весь наявний горизонтальний простір у своєму блоці, що містить. Якщо він має будь-яку горизонтальну прокладку або межу, ширина цих не додається до загальної ширини елемента.

Ширина 100%

З іншого боку, якщо ви вкажете ширину: 100%, загальна ширина елемента становитиме 100% від його вміщуючого блоку плюс будь-яке горизонтальне поле, відступ і межа (якщо ви не використовували box-sizing: border-box, і в цьому випадку лише поля додаються до 100%, щоб змінити спосіб обчислення загальної ширини). Це може бути те, що ви хочете, але, швидше за все, це не так.

Для візуалізації різниці див. Цю картинку:

введіть тут опис зображення

Джерело


3
Для тих , хто цікавиться , чому width: autoповодиться тим шлях: stackoverflow.com/questions/28353625 / ...
Хаш Qolami

1
так autoробить те ж самеfill-available
jiggunjer

2
Отже, в основному це не має нічого спільного з розміром вмісту елементів, а повністю стосується батьківської ширини?
haemse

82
  • width: auto; намагатиметься якомога сильніше зберегти елемент такої ж ширини, що і його батьківський контейнер, коли додається додатковий простір із полів, відступів або меж.

  • width: 100%;зробить елемент таким широким, як батьківський контейнер. До розміру елемента буде додано додатковий інтервал без урахування батьківського. Це зазвичай спричиняє проблеми.

введіть тут опис зображення введіть тут опис зображення


2
те саме, що забезпечується @ C-link, але додатково більш графічний інтерфейс. так +1
Навін Рауніяр

8

Йдеться про поля та межі. Якщо ви використовуєте width: auto, то додайте межу, ваш div не стане більшим, ніж його контейнер. З іншого боку, якщо ви використовуєте width: 100%та деяку межу, ширина елемента становитиме 100% + межа чи поле. Для отримання додаткової інформації дивіться це .


4

Поки значення ширини є автоматичним, елемент може мати горизонтальне поле, заповнення та межу, не стаючи ширшим за контейнер (якщо, звичайно, сума margin-left + border-left-width + padding-left + padding-right + border-right-width + margin-right більше, ніж контейнер). Ширина вікна вмісту буде такою, яка залишиться, коли від ширини контейнера віднімаються поля, відступи та межі.

З іншого боку, якщо ви вкажете ширину: 100%, загальна ширина елемента становитиме 100% від його вміщуючого блоку плюс будь-яке горизонтальне поле, відступ і межа (якщо ви не використовували box-sizing: border-box, і в цьому випадку лише поля додаються до 100%, щоб змінити спосіб обчислення загальної ширини). Це може бути те, що ви хочете, але, швидше за все, це не так.

Джерело:

http://www.456bereastreet.com/archive/201112/the_difference_bet Between_widthauto_and_width100/


3

Початкова ширина елемента рівня блоку, такого як div або p, є автоматичною.

Використовуйте width: auto, щоб скасувати явно вказані ширини.

якщо ви вкажете ширину: 100%, загальна ширина елемента складе 100% від його вміщуючого блоку плюс будь-яке горизонтальне поле, відступ та рамка.

Отже, наступного разу, коли ви виявите, що встановлюєте ширину елемента рівня блоку на 100%, щоб він займав всю доступну ширину, подумайте, чи те, що ви насправді хочете, встановлює для нього значення авто.


3

Ширина 100%: це забезпечить вміст на 100%. margin, border, padding будуть додані до цієї ширини, і елемент переповнюватиметься, якщо буде додано щось із них.

Ширина автоматично: Він буде відповідати елементу в доступному просторі, включаючи поля, межі та відступи. вільний простір, що залишився після регулювання поля + відступ + межа, буде доступний ширина / висота.

Ширина 100% + розмір коробки: border box: Він також поміщатиме елемент у вільний простір, включаючи рамку, заповнення (поле заповнить контейнер).


1

Використання ширини: авто; + дисплей: вбудований блок; в css дає чудовий ефект.

width : auto;
display: inline-block;

2
Це не відповідає на питання про різницю між 100 & та auto.
JoeTidee

1
Так, я знаю, але я намагаюся показати тут про width: auto і display: inline-block . Коли ми хочемо автоматично збільшити ширину будь-якого елемента рівня блоку, ми можемо використовувати це. І різниця між 100% і авто
Мохаммед Джавед

0

Коли ми говоримо

width:auto;

width ніколи не перевищуватиме загальної ширини батьківського елемента. Максимальна ширина - це батьківська ширина. Навіть якщо ми додамо межу, відступ та поля, вміст самого елемента стане меншим, щоб дати простір для меж, відступів та полів. У тому випадку, якщо простір, необхідний для межі + заповнення + поля, перевищує загальну ширину батьківського елемента, тоді ширина вмісту стане нульовою.

Коли ми говоримо

width:100%;

Ширина вмісту елемента стане 100% від батьківського елемента, і відтепер, якщо ми додамо межу, відступ або поле, це призведе до того, що дочірній елемент перевищить ширину батьківського елемента, і він почне переповнюватися з батьківського елемента.

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