css footer - попытка разбить на 2 столбца - PullRequest
4 голосов
/ 15 мая 2009

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

#footer {
    clear: both;
    background-color: #330066;
    padding: .5em;
    font-size: 0.8em;
    color: #fff;
}

#footer p .left {
    text-align:left;
    float:left;
}

#footer p .right {
    float:right;
    text-align:right;
}


<div id="footer">
    <p class="left">
        Copyright © 2009 
    </p>
    <p class="right">
        Designed by xxxxxx
    </p>
</div>

Я должен быть очень простым, я уверен, но я просто не могу заставить его работать - кто-нибудь может предложить какой-нибудь совет, пожалуйста?

Спасибо

Елена

Ответы [ 5 ]

8 голосов
/ 15 мая 2009

Вы используете footer p .right, а не footer p.right (обратите внимание на пробел). Это означает, что классы .right и .left применяются не к абзацам, а к дочерним элементам внутри абзаца . Или это также может означать опечатку, приводящую к сбою CSS:)

Пожалуйста, скопируйте ваш HTML здесь, чтобы мы могли помочь вам лучше.


Редактировать: Я вижу, вы уже опубликовали свой HTML. Мое предположение оказывается верным. Избавьтесь от пробелов между p и .left / .right. Кроме того, если вы все равно перемещаете абзацы, вы можете опустить свойства text-align.

#footer p.left {
 float: left;
}

#footer p.right {
 float: right;
}

Редактировать: В ответ на ваш комментарий: должно работать. Вот небольшой тестовый пример:

<!DOCTYPE html>
<html lang="en">
 <head>
  <title>Test case for the CSS footer problem</title>
  <style>
   #footer { width: 300px; outline: 1px solid red; }
    #footer p.left { float: left; }
    #footer p.right { float: right; }
  </style>
 </head>
 <body>
  <p>See <a href="http://stackoverflow.com/a/867599/96656" title="Stack Overflow: CSS footer; trying to split into two columns">http://stackoverflow.com/a/867599/96656</a> for details.
  <div id="footer">
   <p class="left">Copyright © 2009</p>
   <p class="right">Designed by xxxxxx</p>
  </div>
 </body>
</html>
1 голос
/ 15 мая 2009

Не нужно удалять очистку: оба в #footer, как предлагалось ранее. Как сказал Матиас Биненс, вы должны написать «p.left» вместо «p .left» Вам понадобится очистить оба после двух абзацев и в итоге получится что-то вроде:

#footer {
    clear: both;
    background-color: #330066;
    padding: .5em;
    font-size: 0.8em;
    color: #fff;
}

#footer p.left {
    text-align:left;
    float:left;
}

#footer p.right {
    float:right;
    text-align:right;
}


<div id="footer">
     <p class="left">
         Copyright © 2009 
     </p>
     <p class="right">
         Designed by xxxxxx
     </p>
     <div style="clear:both"></div>
</div>
1 голос
/ 15 мая 2009

вы пытались установить ширину для левого и правого, например, 50% каждый

0 голосов
/ 15 мая 2009

Проблема в том, что на вашем #footer есть clear: both;, который убивает все поплавки.

Было бы лучше, если бы у вас было:

#footer {
    background-color: #330066; 
    padding: .5em; 
    font-size: 0.8em; 
    color: #fff;
    width: 100%;
    overflow: hidden;
 }

p.left { float: left; }
p.right { float: right; }

width: 100%; и overflow: hidden; исправят вашу проблему, поскольку очищают поплавки после их создания.

С кодом выше вы сможете просто:

<div id="footer">
    <p class="left">Copyright &copy; 2009</p>
    <p class="right">Designed by ****</p>
</div>
0 голосов
/ 15 мая 2009

Поскольку абзацы являются элементами уровня блока, если вы хотите, чтобы они отображались рядом, вы должны удалить плавающие элементы и установить их встраиваемые:

footer p.left {text-align:left; display:inline; }
footer p.right {text-align:right; display:inline; }

Также я предполагаю, что должен быть либо #footer, либо .footer заранее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...