Как лучше всего разместить div в CSS?

Я пытаюсь разместить это меню в левой части страницы:

<div class = "left-menu" style = "left: 123px; top: 355px">  
    <ul>  
        <li> Categories </li>  
        <li> Weapons </li>  
        <li> Armor </li>  
        <li> Manuals </li>  
        <li> Sustenance </li>  
        <li> Test </li>  
    </ul>  
</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 сценарий полностью изменился.
1
0
8 395
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Вы должны использовать атрибуты CSS float и clear, чтобы получить желаемый эффект.

Сначала я определил стили для вызываемых left и right для двух столбцов в моем макете и стиль под названием clearer, используемый для сброса потока страницы.

<style type = "text/css">
.left {
    float: left;
    width: 200px;
}
.right {
    float: right;
    width: 800px;
}
.clear {
    clear: both;
    height: 1px;
}
</style>

Затем я использую их для макета моей страницы.

<div>
 <div class = "left">
   <ul>
    <li>Categories</li>
    <li>Weapons</li>
    <li>Armor</li>
    <li>Manuals</li>
    <li>Sustenance</li>
    <li>Test</li>
  </ul> 
 </div>
 <div class = "right">
   Blah Blah Blah....
 </div>
</div>
<div class = "clear" />

Ваш 'более четкий' класс div не соответствует селектору '.clear', используемому в вашем CSS.

Bobby Jack 14.09.2008 16:58

Спасибо, Бобби. Я должен был дважды проверить это, прежде чем опубликовать.

Brian Matthews 20.09.2008 01:18
Ответ принят как подходящий

float действительно подходит для этого. Однако пример, приведенный bmatthews68, можно улучшить. Самая важная вещь о плавающих блоках - это то, что они должен указывают явную ширину. Это может быть довольно неудобно, но так работает CSS. Однако обратите внимание, что px - это единица измерения, которой нет места в мире HTML / CSS, по крайней мере, для указания ширины.

Всегда прибегайте к мерам, которые будут работать с разными размерами шрифта, например, используйте em или %. Теперь, если меню реализовано в виде плавающего тела, это означает, что основное содержимое плавает «вокруг» его. Если основное содержимое выше, чем меню, это может быть не то, что вам нужно:

float1 http://page.mi.fu-berlin.de/krudolph/stuff/float1.png

<div style = "width: 10em; float: left;">Left</div>
<div>Right, spanning<br/> multiple lines</div>

Вы можете исправить это поведение, присвоив основному контенту margin-left, равный ширине меню:

float2 http://page.mi.fu-berlin.de/krudolph/stuff/float2.png

<div style = "width: 10em; float: left;">Left</div>
<div style = "margin-left: 10em;">Right, spanning<br/> multiple lines</div>

В большинстве случаев вы также хотите присвоить основному контенту padding-left, чтобы он не «прилипал» к меню слишком близко.

Кстати, тривиально изменить приведенное выше так, чтобы меню было справа, а не слева: просто замените каждое вхождение слова «слева» на «справа».

Ах, и последнее. Если содержимое меню выше, чем основное содержимое, оно будет отображаться странно, потому что float делает некоторые странные вещи. В этом случае вам нужно будет очистить поле под плавающим телом, как в примере с bmatthews68.

/ Обновлено: Черт, HTML не работает так, как это было показано в предварительном просмотре. Что ж, вместо этого я включил картинки.

Все ответы, говорящие об использовании поплавков (с явной шириной), верны. Но чтобы ответить на исходный вопрос, как лучше всего позиционировать <div>? По-разному.

CSS очень контекстуален, и поток страницы зависит от структуры вашего HTML. Нормальный поток - это то, как элементы и их дочерние элементы будут располагаться сверху вниз (для элементов блока) и слева направо (для встроенных элементов) внутри своего содержащего блока (обычно родительского). Так должна работать большая часть вашего макета. Вы будете склонны полагаться на width, margin и padding, чтобы определить расстояние и расположение элементов по отношению к другим элементам вокруг него (будь то <div>, <ul>, <p> или иначе, HTML в основном является семантическим).

Использование таких стилей, как float, absolute или relative, может помочь вам достичь очень конкретных целей вашего макета, но важно знать, как их использовать. Как было объяснено, float обычно используется для размещения блочных элементов рядом друг с другом, и это действительно хорошо для многоколоночных макетов.

Я не буду вдаваться в подробности здесь, но вы можете проверить следующее:

вы можете использовать поплавок

<div class = "left-menu">
<ul>
<li> Categories </li>
<li> Weapons </li>
<li> Armor </li>
<li> Manuals </li>
<li> Sustenance </li>
<li> Test </li>
</ul>
</div>

в файле css

.left-menu{float:left;width:200px;}

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