верхняя граница полей оболочек увеличивается, если я увеличиваю другую оболочку

#html #css

#HTML #css

Вопрос:

Кто-нибудь может объяснить, что происходит не так с моим HTML-дизайном

 <div id="container">
<div id="profile" style="width:200px;float:left;margin-top:20px">
<img src="./profilepic.jpg"  width="190px" height="220px"/>
</div>
<div id="intro" style="width:420px;margin-left:15px;margin-top:30px">
<h3 style="background-color:#000000">Profile  </h3> 
</div> 
</div>
  

Проблема в том, что тег div (оболочка #profile) увеличивает верхнюю границу поля, если я увеличиваю верхнюю границу поля #intro, это так неприятно пытаться долгое время, почему это увеличивается, если я увеличиваю верхнюю часть поля #intro? а также цвет фона тега < h3 > начинается с приведенного выше изображения, хотя я использую float, но текст тега < h3 > работает правильно, я не понимаю, почему я получаю такое поведение

Я установил ширину: 420 пикселей для #intro, и ширина начинается с крайней левой стороны страницы, но не с начала тега < h3>, т. Е. со слова profile ? почему он применяет цвет фона с большей части левой части страницы, но не с текущей позиции?

и работает нормально , если я использую неупорядоченный тег list < ul > вместо div . Пожалуйста, дайте мне знать ваши ответы, почему это неправильно>

Комментарии:

1. Изначально я не знаю, что может привести #profile к увеличению верхнего поля. Я добавлю ответ ниже о том, что, как я думаю, вы пытаетесь сделать.

Ответ №1:

Похоже, вы пытаетесь расположить два элемента рядом друг с другом с разными верхними полями.

CSS

 .container {
    clear: left;
    width: 635px;
}
.left,
.right {
    float: left;
}
.left {
    width: 200px;
    margin-top: 20px;
    margin-right: 15px;
}
.right {
    width: 420px;
    margin-top: 30px;
}
h3 {
    background-color: #000;
}
  

HTML

 <div class="container">
    <div class="left">
        <img src="/profilepic.jpg" />
    </div><!-- /left -->

    <div class="right">
        <h3>Profile</h3>
    </div><!-- /right -->
</div><!-- /container -->
  

Комментарии:

1. Спасибо, я не знал, что мы должны упомянуть float:left для обеих оболочек, и не могли бы вы объяснить, в чем причина этого?

2. Короткая причина убедиться, что все элементы, которые вы хотите расположить горизонтально, имеют float: left; свойство, заключается в том, что если вы этого не сделаете, это не сработает. Длинный ответ связан с block природой большинства (читай: каждого) элемента на странице по умолчанию, что означает, что все они занимают свою собственную строку.