Подтвердить что ты не робот

CSS: ширина в процентах и ​​границы

Я определил ширину контейнеров в процентах. Я хотел бы добавить границу (3px с правой стороны ширины), так как ширина контейнера находится в%, а ширина границы - в px, как я могу настроить ширину контейнера?

<div class="wrap">
  <div class="left">...</div>
  <div class="right">...</div>
</div>

.wrap{
    width:100%;
}

.left{
    width:30%;
}

.right{
    width:70%;
}

Я хотел бы добавить границу 3px с правой стороны .left. Например:

.left{
    width:30%;
    border:3px solid #000;
}

Так как я определил ширину в%, лучший способ изменить ширину .left. Я могу грубо уменьшить ширину до 29%, но я хочу сделать точно.

4b9b3361

Ответ 1

Используйте свойство box-sizing: border-box. Он изменяет поведение модели окна для обработки заполнения и границы как части общей ширины элемента (но не полей). Это означает, что заданная ширина или высота элемента включает в себя размеры, установленные для заполнения и границы. В вашем случае это означает, что ширина элемента и ширина границы будут потреблять 30% доступного пространства.

CSS box model

Поддержка этого не идеальна, однако префиксы поставщиков будут захватывать большинство, если не все современные браузеры:

.left {
    width: 30%;
    border: 3px solid #000;

    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
}

Более подробную информацию можно найти в MDN и Quirksmode.

В соответствии с Quirksmode, используя префиксы 3 поставщика выше (-moz-, -webkit- и -ms-), вы получаете поддержку для всех браузеров, даже IE8.

Ответ 2

Самый простой способ перекрестного браузера - НЕ устанавливать границу на внешних div, а вместо этого устанавливать его на NEW div внутри .left. Простой и хорошо работает.

Ответ 4

Просто измените px на vw как

border-width: 10px;

к

border-width: 10vw;

Его делать то, что процент делает....