Как разместить два div по горизонтали внутри другого div

Я слишком долго не играл с CSS и на данный момент у меня нет ссылок. Мой вопрос должен быть довольно простым, но поиск в Google не дает достаточного ответа. Итак, добавляя к коллективным знаниям ...

|#header---------------------------------------------------------------|
|                               TITLE                                  |
|#sub-title------------------------------------------------------------|
|bread > crumb                    |                  username logout   |
|#sub-left                        |                          #sub-right|
|---------------------------------|------------------------------------|

Вот каким я хочу, чтобы мой макет был. Живите в любом случае. Я хотел, чтобы подзаголовок содержал под-левый и под-правый. Какие правила css я использую, чтобы гарантировать, что div привязан к атрибутам другого div. В этом случае, как мне убедиться, что левый и правый нижний левый и нижний правый сегменты остаются в пределах подзаголовка?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
56
0
131 528
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Возможно, что-то вроде этого ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <style>
            #container
            {
                width:600px;
            }

            #head, #sub-title
            {
                width:100%;
            }

            #sub-left, #sub-right
            {
                width:50%;
                float:left;
            }

        </style>
    </head>

    <body>
        <div id = "container">
            <div id = "head">
                 #head
            </div>
            <div id = "sub-title">
                #sub-title
                <div id = "sub-left">
                    #sub-left
                </div>

                <div id = "sub-right">
                    #sub-right
                </div>
            </div>
        </div>
    </body>
</html>

Это очень похоже на то, что я использую сейчас. Однако, скажем, я хотел, чтобы «контейнер» в вашем примере рисовал границу вокруг нижнего левого и нижнего правого блоков div, это не сработает.

Josh Smeaton 27.11.2008 15:40

Это должно сделать то, что вы ищете:

<html>
    <head>
        <style type = "text/css">
            #header {
                text-align: center;
            }
            #wrapper {
                margin:0 auto;
                width:600px;
            }
            #submain {
                margin:0 auto;
                width:600px;
            }
            #sub-left {
                float:left;
                width:300px;
            }
            #sub-right {
                float:right;
                width:240px;
                text-align: right;
            }
        </style>

    </head>
    <body>
        <div id = "wrapper">
            <div id = "header"><h1>Head</h1></div>
            <div id = "sub-main">
                <div id = "sub-left">
                    Right
                </div>
                <div id = "sub-right">
                    Left
                </div>
            </div>
        </div>
    </body>
</html>

И вы можете управлять всем документом с помощью класса-оболочки или только двумя столбцами с подглавным классом.

Вы также можете добиться этого с помощью структуры CSS Grids, такой как YUI Grids или Blue Print CSS. Они решают множество проблем с кроссбраузерностью и позволяют простым смертным использовать более сложные макеты столбцов.

Когда вы размещаете sub-left и sub-right, они больше не занимают места в sub-title. Вам нужно добавить еще один div с style = "clear: both" под ними, чтобы развернуть содержащий div, или они появятся под ним.

HTML:

<div id = "sub-title">
   <div id = "sub-left">
      sub-left
   </div>
   <div id = "sub-right">
      sub-right
   </div>
   <div class = "clear-both"></div>
</div>

CSS:

#sub-left {
   float: left;
}
#sub-right {
   float: right;
}
.clear-both {
   clear: both;
}

Этот ответ помог мне решить мою проблему, я добавил div внизу с четким CSS, и он сработал

samouray 07.03.2016 16:21

Серьезно попробуйте некоторые из них, вы можете выбрать фиксированную ширину или более плавные макеты, выбор за вами! Действительно легко реализовать.

Макеты IronMyers

еще еще еще

Этот ответ дополняет приведенные выше решения, чтобы обратиться к вашему последнему предложению, которое гласит:

как сделать так, чтобы левый и правый нижний левый и нижний правый сегменты оставались в пределах подзаголовка

Проблема в том, что по мере расширения содержания под-левого или правого подзаголовка они будут расширяться под подзаголовком. Такое поведение разработано в CSS, но вызывает проблемы у большинства из нас. Самое простое решение - создать div, стилизованный под объявление CSS Clear.

Для этого включите оператор CSS для определения закрывающего div (может быть Clear Left или RIght, а не то и другое вместе, в зависимости от того, какие объявления Float были использованы:

#sub_close {clear:both;}

И HTML становится:

<div id = "sub-title">
<div id = "sub-left">Right</div>
<div id = "sub-right">Left</div>
<div id = "sub-close"></div>
</div>

Извините, только что понял, что это было опубликовано ранее, не стоило делать ту чашку кофе, когда набирал свой ответ!

@Darko Z: вы правы, лучшее описание решения overflow: auto (или overflow: hidden), которое я нашел, было в сообщении на SitePoint некоторое время назад Простая очистка плавсредств, а также есть хорошее описание в статье 456bereastreet Советы и хитрости CSS, часть 2. Должен признать, что мне было лень реализовывать эти решения самостоятельно, поскольку закрывающий блок div работает нормально, хотя, конечно, очень неэлегантен. Так что с этого момента я буду прилагать усилия, чтобы привести в порядок свой поступок.

Ответ принят как подходящий

Довольно распространенное заблуждение, что вам нужен блок clear:both внизу, хотя на самом деле он вам не нужен. Хотя ответ foxy правильный, вам не нужен этот бессемантический, бесполезный очищающий div. Все, что вам нужно сделать, это приклеить overflow:hidden к контейнеру:

#sub-title { overflow:hidden; }

Большое спасибо вам! Я помню, как преследовал эту проблему около 2 лет назад, и теперь я помню, как использовал overflow: hidden. Я попробую это сделать, как только вернусь к своему ноутбуку и сделаю правильный ответ.

Josh Smeaton 28.11.2008 05:52

Не проблема, дайте мне знать, как это получается

Darko Z 28.11.2008 06:40

«Распространенное заблуждение» звучит немного грубо, так как очистка div - это рекомендуемый w3c метод, но это изящный трюк. Подробнее об этом см. quirksmode.org/css/clearing.html.

itsadok 16.06.2009 10:24

распространенное заблуждение состоит в том, что вы необходимость очищающий div, а не в том, что он неправильный, не работает или не рекомендуется. лично я думаю, что его не следует рекомендовать как бессмысленный (хотя я использовал его раньше, когда не было другого способа)

Darko Z 17.06.2009 11:56

Я всегда ненавидел четкое исправление div ... меня радует то, что есть другое решение.

TheDude 04.07.2016 22:48

Я согласен с Darko Z в применении "overflow: hidden" к подзаголовку #. Однако следует отметить, что метод очистки overflow: hidden не работает с IE6, если у вас нет указанной ширины или высоты. Или, если вы не хотите указывать ширину или высоту, вы можете использовать «zoom: 1»:

#sub-title { overflow:hidden; zoom: 1; }

Вы делаете это так:

<table>
   <tr>
      <td colspan = "2">TITLE</td>
   </tr>
   <tr>
      <td>subleft</td><td>subright</td>
   </tr>
</table>

ЛЕГКО - я набрал его за 1 минуту. Помните, что файл CSS необходимо загрузить клиенту, поэтому не беспокойтесь о лишних тегах, в данном случае это несущественно.

Вместо того, чтобы использовать overflow:hidden, что является своего рода уловкой, почему бы просто не установить фиксированную высоту, например height:500px, в головное подразделение?

Лучший и простой подход с css3

#subtitle{
/*for webkit browsers*/
     display:-webkit-box;
    -webkit-box-align:center;
    -webkit-box-pack: center;
     width:100%;
}

#subleft,#subright{
     width:50%;
}
#sub-left, #sub-right
{
    display: inline-block;
}

Через Сетка начальной загрузки вы можете легко получить кроссбраузерное решение.

<div class = "container">     
  <div class = "row">
    <div class = "col-sm-6" style = "background-color:lavender;">
      Div1       
    </div>
    <div class = "col-sm-6" style = "background-color:lavenderblush;">
          Div2
    </div>
  </div>
</div>

jsfiddle: http://jsfiddle.net/DTcHh/4197/

Другие вопросы по теме