пытаясь понять элемент <div> - PullRequest
1 голос
/ 01 августа 2010
<style>

div#float {
    text-align: center;
    float: left;
    width: 150px;
    height: 150px;
    border: 1px solid blue;
    background: gold;
}
div.content {
    background: yellow;
    border: 1px solid  purple;
    height: 150px;
}

</style>

            <div id='float'>
                Float text. 
            </div>
            <div class='content'>
                Content text. 
            </div>
            <div class='content'>
                Content text. 
            </div>

Кто-нибудь может объяснить, как содержимое второго div находится на новой строке? в то время как 1-й div встроен в div # float?

Ответы [ 6 ]

9 голосов
/ 01 августа 2010

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

Есть много способов контролировать это, но я не уверен, что вы ищете.

3 голосов
/ 01 августа 2010

Второй div отображается как блок-элемент. Элементы блока имеют ширину 100%, поэтому места для первого элемента div не осталось в левом размере вашего второго элемента div.

2 голосов
/ 01 августа 2010

попробуйте переключить свойство css "display" на "inline-style"

1 голос
/ 03 августа 2010

Как становится ясно из приведенных выше ответов, это не проблема, специфичная для div.Это что-то под названием «Поток» на html-страницах.

Визуализация DIV по умолчанию как элемент блока, что дает ему максимальную ширину.Когда вы перемещаете такой элемент, он теряет этот эффект.Однако блочные элементы не очищают поплавки автоматически.Таким образом, первый контентдив занимает все свободное место рядом с плавающей точкой.Другое contentdiv начинается с новой строки.

1 голос
/ 01 августа 2010

Первый <div class='content'> имеет высоту 150px, такой же, как #float, поэтому он сдвинут ровно на одну строку.Если вы хотите, чтобы #float "занимал" обе строки, увеличьте его, например:

div#float {
    text-align: center;
    float: left;
    width: 150px;
    height: 300px;
    border: 1px solid blue;
    background: gold;
}

Вы можете попробовать его здесь .

0 голосов
/ 04 августа 2010

Он ведет себя именно так, как и должен.Первый div в разметке перемещается и, таким образом, выводится из потока.Это займет 150x150 слотов вверх в верхнем левом углу, и все, что последует за ним в разметке, будет пытаться втиснуть слева в пространство справа от плавающего div, что и делает первый контентный div.div - это элементы уровня блока, поэтому они занимают всю ширину доступного пространства.В отличие от встроенного элемента, они не будут уменьшаться, чтобы соответствовать отображаемому тексту.

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

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

Похоже, вы пытаетесь настроить панель навигации, а затем контент.Если вы поместите свой контент в div и поместите этот div влево, вы останетесь справа от золотого div, но падение столбца произойдет, если размер браузера слишком мал, чтобы вместить их.Таким образом, вам нужен родительский div с шириной для обоих типов: float и content.Я добавил в вашу разметку div-упаковщик на 800 пикселей.

.....

div#contentwrapper {
  float: left;
  width: 550px;
}

#outerwrapper {
  width: 800px;
}

</style>
</head>

<body>

<div id="outerwrapper">
<div id='float'>
    Float text.
</div>

<div id="contentwrapper">
<div class='content'>
    Content text.
</div>
<div class='content'>
    Content text.   
</div>
</div>

</div>
.....

Возможно, вы захотите использовать другое имя, отличное от зарезервированного для css слова "float" для ваших div.Для получения дополнительной информации по CSS float .

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