Добавление дополнительного отступа к элементу div, вызывающему перемещение других элементов div - CSS?

Я создал скрипку, которая работает нормально, но всякий раз, когда я пытаюсь добавить дополнительный левый отступ к lef-colдругие два деления движутся вниз.

Я ожидаю, что заполнение применяется к внутреннему содержимому и внешней границе div, но в этом случае это выглядит как добавление к div расчет. Дайте мне знать, что я неправильно понимаю для прохождения.

PS - я исправил, подав заявку box-sizing: border-box в left-col, Я ищу e.xplanation для этой причины, чем решение (хотя приветствуются и альтернативные решения!!)

Код -

HTML -

<div class="container">
        <div class="left-col">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos illum perferendis corporis, nemo dolorem, mollitia at sequi quis corrupti. Fugit eaque dolores inventore, aliquam quisquam, saepe officiis eos quia at!</p>
        </div>
        <div class="mid-col">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos illum perferendis corporis, nemo dolorem, mollitia at sequi quis corrupti. Fugit eaque dolores inventore, aliquam quisquam, saepe officiis eos quia at!</p>
        </div>
        <div class="right-col">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos illum perferendis corporis, nemo dolorem, mollitia at sequi quis corrupti. Fugit eaque dolores inventore, aliquam quisquam, saepe officiis eos quia at!</p>
        </div>
    </div>

CSS -

*, html {
    margin: 0;
    padding: 0;
}

body {}

.container {
    padding: 20px;
    overflow: hidden;
}

.left-col, .mid-col, .right-col {
    width: 33.3%;
    float: left;
}

.left-col {
    background: lightpink;
}

.mid-col {
    background: lightgreen;
}

.right-col {
    background: lightblue;
}

Скрипка - https://jsfiddle.net/km2brd8m/

3 ответа

Решение

Если вы добавите box-sizing: border-box в left-col это будет работать, и причина в том, что при использовании box-sizing: border-box отступы включены в заданную ширину.

Обновленная скрипка


Вы также можете вычесть отступы из ширины, используя CSS Calc

.left-col {
    width: calc(33.3% - 20px);
    background: lightpink;
    padding-left: 20px;
}

Обновленная скрипка

Добавить box-sizing: border-box; собственность на три столбца. Это будет включать заполнение его общими размерами, а не за пределами исходных размеров, как это происходит в настоящее время.

padding увеличивает пространство, используемое элементом, так же, как margin, border-box заставляет его использовать пространство от самого элемента вместо увеличения его размера.

Вы можете прочитать больше об этом здесь.

Другие вопросы по тегам