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

CSS: размещение divs влево/в центре/вправо внутри заголовка

Я пытался создать сайт со следующей структурой:
desired structure

Но я не могу получить правильный заголовок (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

Код, который я имею выше, дает мне это: current result Но я хочу, чтобы 2 центрировались, а 3 - справа. Я не хочу устанавливать ширину в процентах, потому что содержимое в элементах может отличаться, то есть это может быть 20/60/20 - 10/80/10 - 33/33/33 или что-то еще.

4b9b3361

Ответ 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.