2016-09-30 7 views
1

Я пытаюсь центрировать один div в ответ, обернув его между двумя divs - centerdiv и sidedivs.Правое Div Неправильно Выравнивает Left 25% от страницы

Код:

.overmiddlediv { 
 
    width: 100%; 
 
    height: 150px; 
 
    background-color: blue; 
 
    float: left; 
 
} 
 
.sidedivs { 
 
    width: 25%; 
 
    float: left; 
 
    padding-left: 50px; 
 
    background-color: red; 
 
} 
 
.centerdiv { 
 
    width: 50%; 
 
    float: left; 
 
    background-color: white 
 
}
<div class="overmiddlediv"> 
 
    <div class="sidedivs"> 
 
    <p>Left side</p> 
 
    </div> 
 
    <div class="centerdiv"> 
 
    <p>This is the middle and is 50%</p> 
 
    </div> 
 
    <div class="sidedivs"> 
 
    <p>Right side</p> 
 
    </div> 
 
</div>

JSFiddle at this link shows the output и это неверно, так как правая сторона находится на левой стороне, когда он должен быть справа от белой части, а также должны быть 25 %.

Я играл с удалением float:left на .sidedivs и пробою абсолютную позицию, но безуспешно. Что странно, так это то, что я использовал ту же структуру кода для нижнего колонтитула, и он работал точно так же, как и должен - разделение каждой части на 25% -50% -25%, но на этом этого нет, и я не знаю, чего мне не хватает.

See this JSFiddle, где все левые элементы и теги p были удалены.

+0

У вас есть класс, который имеет float: слева прикреплен к обеим боковым divs, поэтому оба они будут идти влево – Keith

+0

удалите 'padding' или используйте' * {box-sizing: border-box; } 'или вы должны настроить распределение ширины 25% -50% -25%, используя' calc', чтобы предотвратить упаковку. – kukkuz

+0

@Keith Спасибо, но даже если я удалю их, как я положил в свой пост, он все равно обматывает его неправильно. См. Эту скрипту для примера - https://jsfiddle.net/pe8smexz/1/. – wpquestionz

ответ

2

Добавьте к этому CSS, так что ваши процентные значения не влияют/изменены отступов и полей:

html, body { 
    margin: 0; 
} 
* { 
    box-sizing: border-box; 
} 

https://jsfiddle.net/hkq7ttvj/1/

+0

Работа; Я не понимал, что тело по умолчанию имеет заданный запас, но это очень полезно знать. Мне нужно посмотреть, что делает рамка. – wpquestionz

+1

@wpquestionz прочитал [this] (http://stackoverflow.com/questions/39129811/add-border-to-div-increase-div-width/39130170#39130170), чтобы узнать больше о 'border-box'. – kukkuz

1

Снимите прокладку с использованием sidedivs или:

* { 
    box-sizing: border-box; 
} 

Пересмотренный fiddle

Прочитайте эту answer чтобы узнать больше о border-box.

Или вы должны настроить распределение ширины 25%-50%-25%, используя calc, чтобы предотвратить обертывание.