Почему DIV width:100% шире чем родитель?

При установке свойства width: 100% для элемента div, это означает, что ширина этого элемента будет равна 100% от ширины его родительского элемента.

Однако, есть несколько факторов, которые могут привести к тому, что элемент div будет шире, чем его родитель:

1. У элемента-родителя установлено свойство box-sizing: border-box. По умолчанию, значение этого свойства - content-box. Если установлено значение border-box, то ширина элемента будет включать ширину его границы и отступов, в результате чего элемент-потомок будет выходить за пределы родителя.

2. У элемента-потомка заданы отступы (margin), границы (border) или заполнение (padding), которые добавятся к ширине элемента. Например, если у родительского элемента нет отступов или границ, а у элемента-потомка они есть, то ширина элемента-потомка будет больше, чем ширина родителя.

3. Свойство width родительского элемента задано конкретным значением (например, в px) и не адаптируется по размеру окна или контейнера. Если ширина родителя задана фиксированным значением, а ширина элемента-потомка устанавливается относительно этого фиксированного значения, то элемент-потомок может быть шире, чем родитель, если ширина окна или контейнера меньше, чем ширина родителя.

4. Родительский элемент имеет свойство display: inline-block или display: inline, а у элемента-потомка задано display: block. В этом случае, элемент-потомок будет стремиться занять всю доступную ширину родителя и он может выйти за его пределы.

5. Наличие горизонтальных полос прокрутки. Если родительский элемент имеет отступы (например, ширину содержимого) и содержимое внутри элемента шире, чем родитель, браузер автоматически добавляет горизонтальную полосу прокрутки. Для учета этой полосы прокрутки, ширина элемента-потомка может быть больше, чем ширина родителя.

Запомните, что при работе с CSS, множество факторов может влиять на отображение элементов, и внимательность к деталям является важным аспектом, чтобы достичь желаемого результата.