CSS: размещение divs влево/в центре/вправо внутри заголовка
Я пытался создать сайт со следующей структурой:
Но я не могу получить правильный заголовок (e1 слева, e2 по центру, e3 справа). Я хочу, чтобы три элемента e1, e2 и e3 были расположены слева, посередине и справа. Вот что я пытаюсь:
<div id="wrapper">
<div id="header">
<div id="header-e1">
1
</div>
<div id="header-e2">
2
</div>
<div id="header-e3">
3
</div>
</div>
<div id="nav">
links
</div>
<div id="content">
content
</div>
<div id="footer">
footer
</div>
</div>
С помощью этой CSS:
#wrapper
{
width: 95%;
margin: 20px auto;
border: 1px solid black;
}
#header
{
margin: 5px;
}
#header-e1
{
float: left;
border: 1px solid black;
}
#header-e2
{
float: left;
border: 1px solid black;
}
#header-e3
{
border: 1px solid black;
}
#nav
{
margin: 5px;
}
#content
{
margin: 5px;
}
#footer
{
margin: 5px;
}
Может ли кто-нибудь дать мне советы о том, что я могу сделать? Структура будет использоваться на мобильном сайте.
UPDATE
Код, который я имею выше, дает мне это:
Но я хочу, чтобы 2 центрировались, а 3 - справа. Я не хочу устанавливать ширину в процентах, потому что содержимое в элементах может отличаться, то есть это может быть 20/60/20 - 10/80/10 - 33/33/33 или что-то еще.
Ответы
Ответ 1
Если вы можете поменять позицию html на 2 и 3 следующим образом:
<div id="header-e1">
1 is wider
</div>
<div id="header-e3">
3 is also
</div>
<div id="header-e2">
2 conforms
</div>
Затем вы можете установить этот CSS, который заставит 2 "заполнить" доступное пространство из-за overlow: hidden
на нем. Так что, если 1 и 3 расширяются, 2 сужаются (сожмите окно вниз, чтобы увидеть, что происходит в действительно маленьком размере).
#header-e1 {float: left;}
#header-e2 {overflow: hidden;}
#header-e3 {float: right;}
Технически, вы можете сохранить текущий html-ордер и ваш float: left
в 1 и 2 и сделать 3 flex div с overflow: hidden
. Вы можете сделать то же самое с 1, полностью изменив порядок html и установив 2 и 3 на float: right
с 1 overflow: hidden
. Для меня было бы лучше иметь средний прогиб, но вы знаете свое приложение лучше, чем я.
Ответ 2
Если вы пытаетесь сделать сайт с гибкой шириной, вы можете попробовать следующее (33% составляет примерно одну треть):
#header-e1 {
float: left;
width:33%;
border: 1px solid black;
}
#header-e2 {
float: left;
width:33%;
border: 1px solid black;
}
#header-e3 {
float: left;
width:33%;
border: 1px solid black;
}
Вы также можете использовать фиксированную ширину для div. Если вы хотите, чтобы дальше друг от друга вы могли играть со своими левыми/правыми полями и т.д. Надеюсь, что это поможет!
Вот отредактируйте без ширины:
#wrapper {
position:relative; (add to wrapper)
}
#header-e1 {
position:absolute;
left:0;
border:1px solid black;
}
#header-e2 {
position:absolute;
left:50%;
border:1px solid black;
}
#header-e3 {
position:absolute;
right:0;
border: 1px solid black;
}
Ответ 3
Вам нужно предоставить divs в вашем заголовке ширину, а float header-e3 - оставить.
Примечание. Все они имеют одинаковые CSS-свойства, поэтому просто дайте им тот же класс, что и .headerDivs, а затем вы не повторяете код
Изменить: вот рабочий jsfiddle: http://jsfiddle.net/eNDPG/
Ответ 4
Я использую аналогичную идею, предложенную RevCocnept с помощью width: 33%
, за исключением использования display: inline-block
вместо float: left
. Это делается для того, чтобы не удалять элементы div
внутри #header
из потока страницы и вызывать высоту #header
равным нулю.
#header > div {
display: inline-block;
width: 31%;
margin: 5px 1%;
}
Демо
Ответ 5
Вы можете сделать что-то вроде этого:
HTML
<div>
<div id="left">Left</div>
<div id="right">Right</div>
<div id="center">Center</div>
</div>
CSS
#left {
float: left;
border: 1px solid red;
}
#right {
float: right;
border: 1px solid blue;
}
#center {
margin-left: 50px;
margin-right: 50px;
border: 1px solid green;
text-align: center;
}
Центрированный <div>
должен быть последним в коде HTML
.
Здесь JS Bin для тестирования: http://jsbin.com/evagat/2/edit
Ответ 6
<style type="text/css">
body {
margin:0;
}
#header {
width:100%;
**strong text**margin:auto;
height:10%;
background-color:red;
}
#left {
width:20%;
float:left;
#margin:auto auto auto auto;
height:100%;
background-color:blue;
}
#right {
float:right;
width:20%;
#margin:auto auto auto auto;
height:100%;
background-color:green;
}
#middle {
position:relative;
left:0;
right:0;
margin:auto;
height:80%;
background-color:yellow;
width:100%;
}
#middle1 {
width: 80%;
margin:auto;
height:45%;
background-color:black;
}
#middle2 {
width: 80%;
margin:auto;
height:40%;
background-color:brown;
}
#middle3 {
width: 80%;
margin:auto;
height:15%;
background-color:orange;
}
#midmain {
width: auto;
margin:auto;
height:100%;
background-color:white;
}
#footer {
width:100%;
margin:auto;
height:10%;
background-color:red;
}
</style>
now check comment for html design.