2015-09-10 4 views
0

Я пытаюсь достичь paddings везде, кроме сторон контента. Вот мой код:Отрицательная маржа дает прокрутку

http://jsfiddle.net/3tbovz0f/1/

CSS:

.col1 .fill { 
    background: red; 
} 
.col2 .fill { 
    background: blue; 
} 
.col { 
    width: 50%; 
    float: left; 
} 
.pd { 
    padding: 10px; 
} 
.row { 
    margin: -10px; 
} 
.fill { 
    height: 30px; 
} 

HTML:

<div class="row"> 
    <div class="col col1"> 
     <div class="pd"> 
      <div class="fill"></div> 
     </div> 
    </div> 
    <div class="col col2"> 
     <div class="pd"> 
      <div class="fill"></div> 
     </div> 
    </div> 
</div> 

я скроллбар от этого. Что я делаю неправильно? Почему это появляется?

+0

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

+0

Я в замешательстве. Почему бы просто не сделать что-то вроде дополнения: 10px 0 ;? –

ответ

1

Вы должны использовать box-sizing:border-box для того, чтобы правильно отображаться.

Вот скрипку его работает должным образом: http://jsfiddle.net/sLxphrke/14/

CSS

body { 
    margin:0; 
    padding:0; 
} 
.col1 .fill { 
    background: red; 
} 
.col2 .fill { 
    background: blue; 
} 
.col { 
    width: 50%; 
    float: left; 
    padding-left:10px; 
    box-sizing:border-box; 
} 
.pd { 
    padding: 10px 0; 
} 
.row { 
    margin: 0 0 0 -10px; 
    overflow: auto; 
    background: pink; 
} 

Я также изменил отступы на PD только влияют на верхнюю и нижнюю, и дал каждый столбец свой собственный 10px отступы. Чтобы создать больше строк, все, что вам нужно сделать, это изменить 50% на 100/NumberOfRows, например 33.3333% на 3 строки. Все остальное останется неизменным.

0

обновление с этим. проверить эту ссылку: http://jsfiddle.net/realdeepak/sLxphrke/

body { 
    margin: 0; 
    padding: 0; 
} 
.row { 
    margin: 0px; 
} 

Я думаю, что это будет работать. И ваш свиток будет удален.

+0

Я думаю, что вы упустили точку вопроса. –

+0

Что я пропустил? Перед тем, как дать отрицательную точку. Сначала попробуйте правильно разобраться. В противном случае вы будете чувствовать то же самое. – RealDeepak

+0

Ваше решение не решает его основной проблемы, Он не хочет места на стороне цветных div. Они должны быть заподлицо в сторону окна. http://jsfiddle.net/3tbovz0f/4/ –

0

Проблема в том, что мама .row div не выполняла весь экран (в частности), и у вас было еще 2 дочерних div с 50% каждого. Итак, когда вы суммировали оба, это 100% + поля/поля, что давало вам более 100%. Поэтому вам нужно было указать ширину материнского div, чтобы ребенок делился относительно своей матери. Вы просто должны были добавить к width:100%.row класса .... Я только что создал новую скрипку проверить: http://jsfiddle.net/3tbovz0f/3/

+0

Хотя это теоретически может ответить на вопрос ** [который на самом деле это не так] ** ..... [** было бы желательно **] (// meta.stackoverflow.com/q/8259) включить основные части ответа здесь и укажите ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

+0

Хорошо, ваш комментарий. Его просто я увидел, что это так просто, что я даже не объяснил это. Я только что обновил свой ответ с объяснением. Я буду принимать во внимание все будущие ответы. Благодарю. –

2

Отрицательные поля будет тянуть DIV от страницы, таким образом, давая вам полосы прокрутки, отрицательные поля не являются хорошей практикой и этого следует избегать. Вы также добавляете дополнение к двум 50% элементам ширины, которые сделают его более 100%. Если вы хотите это сделать, вам придется использовать поле для выбора размера коробки.

Я немного изменил ваш css, и я думаю, что вы просили заполнить все, кроме внешних сторон? Поэтому я структурировал дополнение, чтобы сделать это.

скрипку расслоение плотной - https://jsfiddle.net/3tbovz0f/11/

/*makes it so you don't have to calculate exact percentage*/ 
html{ 
    box-sizing: border-box; 
} 
*, *:before, *:after { 
    box-sizing: inherit; 
} 
body { 
    margin: 0; 
} 
.col1 .fill { 
    background: red; 
} 
.col2 .fill { 
    background: blue; 
} 
.col1 { 
    padding: 10px 10px 10px 0; 
} 

.col2 { 
    padding: 10px 0 10px 10px; 
} 

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

.row { 
    width:100%; 
} 
.fill { 
    height: 30px; 
} 
+0

Ваша скрипка не сработала, она по-прежнему имеет прописку по бокам. Не думайте, что вы разместили правильную ссылку –

+0

Мои извинения! Правильная ссылка есть сейчас, и если вы не используете сброс, тело автоматически добавляет маржу, поэтому я добавил это также. – boolean12

Смежные вопросы