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

Плавающие две 50% ширины div с запасом 10px между

Я хочу поместить пару разделов жидкости по моей странице, каждая из которых занимает половину своей ширины контейнера, но с разницей в 10 пикселей между ними. Я сделал это JSFiddle http://jsfiddle.net/andfinally/sa53B/5/, и вот HTML:

<div class="clearfix">
    <a class="prev" href="#">Previous</a>
    <a class="next" href="#">Next</a>
</div>

И CSS:

.prev {
    background: black;
    color: white;
    font-size: 16px;
    margin-bottom: 10px;
    display: block;
    float: left;
    box-sizing: border-box;
    width: 50%;
    margin-right: 5px;
}

.next {
    background: black;
    color: white;
    font-size: 16px;
    margin-bottom: 10px;
    display: block;
    float: right;
    box-sizing: border-box;
    width: 50%;
    margin-left: 5px;
}

Правило выбора размера окна недостаточно для выполнения этой работы - divs более 50%. В одном из ответов на этот вопрос кто-то предложил использовать таблицу отображения CSS. Может ли кто-нибудь объяснить, как сделать эту работу в этой ситуации?

Спасибо!

4b9b3361

Ответ 1

Вы можете: a) опустить 50% в 48% и сделать маржировать 2% или b) использовать CSS3 calc, который не поддерживается везде, но должен быть вариантом в ближайшем будущем. (В частности, когда IE8 отключен от таблицы) (см. http://caniuse.com/#feat=calc для совместимости)

Пример использования процентов: http://jsfiddle.net/sa53B/9/

.prev {
    background: black;
    color: white;
    font-size: 16px;
    display: block;
    float: left;
    box-sizing: border-box;
    width: 48%;
    margin: 0 2% 10px 0
}

.next {
    background: black;
    color: white;
    font-size: 16px;
    display: block;
    float: right;
    box-sizing: border-box;
    width: 48%;
    margin: 0 0 10px 2%
}

Пример использования calc: http://jsfiddle.net/sa53B/6/

.prev {
    background: black;
    color: white;
    font-size: 16px;
    display: block;
    float: left;
    box-sizing: border-box;
    width: 47%;
    width: -webkit-calc(50% - 5px);
    width: calc(50% - 5px);
    margin: 0 5px 10px 0;
}

.next {
    background: black;
    color: white;
    font-size: 16px;
    display: block;
    float: right;
    box-sizing: border-box;
    width: 47%;
    width: -webkit-calc(50% - 5px);
    margin: 0 0 10px 5px;
}

Ответ 2

Маржа добавит ширину ваших контейнеров. Если вы используете ширину, основанную на проценте, вы также должны установить значение маржи в процентах.

Например, если вы хотите два 50% div. Вы также должны учитывать маржу. Для этого вам нужно вычесть маржу из общей ширины. Если вы хотите 1% маржи слева и справа, то в общей сложности 2% вам нужно удалить из общей ширины.

div {
float: left;
width: 48%;
margin: 0 1%;
}

обновленный скрипт: http://jsfiddle.net/sa53B/8/

Ответ 3

Недавно в моей задаче мне нужны два столбца с плавающей запятой с фиксированным запасом 8px между ними.

Итак, я использовал свойства границ и размеров полей без какой-либо магии calc.

Итак, утверждение:

.wrapper__col {
   width: 50%;
   box-sizing: border-box; // used to change box-model
   overfow: hidden; // clearfix hack
}
.wrapper__col:nth-child(odd) {
   float: left;
   border-left: 4px solid transparent;
}

.wrapper__col:nth-child(even) {
   float: right;
   border-right: 4px solid transparent;
}
<div class="wrapper">
   <div class="wrapper__col">1</div>
   <div class="wrapper__col">2</div>
</div>

Ответ 4

То, что вы пытаетесь сделать, не работает с фиксированными полями. Вам нужно рассчитать использование процентных полей.

Размер окна влияет только на прописку и пространство с границами, а не на поле пробела. Таким образом, 50% + 50% = 100% + 5px + 5px > 100%.

Используйте% полей и ваша проблема решена.

Ответ 5

Поздно, но кто-то может быть заинтересован в этом, чтобы исправить:

Оберните элементы, которые вы хотите отобразить в столбцах с div:

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

И просто установите эти стили:

.left {
    float:left;
    width:50%;
}

.right {
    float:right;
    width:50%;
}

Независимо от поля содержимого divs он не будет влиять на ширину 50%. Я использовал этот путь, прежде чем слышать полезный css calc.

См. JSFiddle

Ответ 6

Вот как я это делаю, но он использует переменный разрыв между:

css:

.left {
  float:left;
  width:59%;
  margin-right: 1%;
  background-color:red;
}
.right {
  float:left;
  width:39%;
  margin-left: 1%;
  background-color:blue;
}

HTML:

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

jsfiddle: http://jsfiddle.net/gkmjLfgx/

Ответ 7

Иногда вам нужен одинаковый интервал 10px по горизонтали и по вертикали и по-прежнему иметь столбцы одинакового размера.

Вы можете сделать это, добавив "border-left: 10px solid white" в дополнительный DIV внутри каждого столбца и добавьте "margin-left: -10px" в контейнер столбцов, чтобы съесть границу левого столбца.

скрипка 128psahu