27\32 Проблема и пара вопросов


Объясните, почему блоки схлопываются и правый блок уезжает вниз, ведь у меня есть блок “container” и все эти три блока находятся в нем.

html,
body {
    margin: 0;
    padding: 0;
}

body {
    width: 450px;
    height: 335px;
    font-family: "Arial", sans-serif;
    font-size: 10px;
    color: white;
}
.header {
    width: 100%;
    background-color: #34495e;
    height: 170px;

    }
.head-block {
    background-color: #c0392b;
    margin-top: 10px;
    height: 30px;
    padding: 5px;
    margin-left: 50px;
    margin-right:50px;
    }
.clearfix {
    clear:both;
    }
.menu-block {
    background: #3498DB;
    height: 35px;
    margin-top: 10px;
    }
.promo-1 {
    width: 170px;
    height: 60px;
    background-color: #c0392b;
    float: left;
    margin-left: 50px;
    }
.promo-2 {
    width: 170px;
    height: 60px;
    background-color: #c0392b;
    float: right;
    margin-right: 50px;
    }
.promo-block {
    margin-top: 10px;
    }
.leftside {
    float: left;
    background-color: #3498DB;
    width: 70px;
    height: 110px;
    opacity: 0.8;
    }
.main {
    width: 190px;
    height: 110px;
    background-color: #ff0005;
    }
.rightside {
    float: right;
    background-color: #3498DB;
    width: 70px;
    height: 110px;
    }
.content {
    width: 100%;
    height: 110px;
    margin-top: 10px;
    }
.footer {
    width: 100%;
    background-color: #34495e;
    height: 35px;
    }
/*
    Используемые цвета:
    #34495e – мокрый асфальт
    #c0392b – красный
    #3498DB – синий
*/





<!DOCTYPE html>
<html lang="ru">
    <head>
        <title>Испытание: строим сетку</title>
        <meta charset="utf-8">
    </head>
    <body>
    <div class="header">
        <div class="head-block">
        Header
        </div>
        <div class="menu-block">
        Menu
        </div>
           <div class="promo-block">
        <div class="promo-1">
        Promo 1
        </div>
        <div class="promo-2">
        Promo 2
        </div>
           </div>
        </div>
    </div>
<div class="content">
        <div class="leftside">
        Left
        </div>
        <div class="main">
        Main
        </div>
        <div class="rightside">
        Right
        </div>
</div>
<div class="clearfix"></div>
<div class="footer">
        Footer
</div>
    </body>
</html>

Переделайте с позиционером по середине.

1 лайк

Ссылка на урок это конечно хорошо, но не мог бы ты объяснить?

27/32 Выполнил на 100% но остался не понятный момент. Здесь все от и до)

С позиционером так же не работает
.layout-positioner {
width: 450px;
margin: 0 auto;
}
.layout-positioner::after {
display: table;
content: “”;
clear: both;
}

Ставил его для содержимого каждого из мэйн блоков

Ширина позиционера должна быть меньше чем у body.

1 лайк

350px если не ошибаюсь.

1 лайк

Не работает, все равно блок заезжает под блок, а правый блок по прежнему внизу

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

У вас для .main не задано свойство float.

1 лайк

Действительно! Спасибо!

Еще тут такой нюанс, подскажите курс там где говорится о схлопывании отступов.
Ибо у меня header-block прижался к родителю, и на отступы заданные header-block’у реагирует непосредственно родитель

2 лайка

Ну ладно float, но почему так уехал блок с флоаченый в право, по правилам с флоаченых блоков, отступы родителя схлопываются а расстояние оставщиеся между ними должен занять контент, в данном случае main, или я что то не так понял? Надо самому это задание реально перепройти😄

Сам так думал, потом тут же уважаемая посоветовала зафлоатить мэйн влево, и все встало отлично

Это да, в этом то случае конечно все встанет на место, но блин почему такое смещение. Впервые вижу чтоб так скакало.

Ничего удивительного тут. Код несколько раз изменен. Но проблему можно “воссоздать”.
Если убрать div.clearfix и float: left; у .main.
Блок .main без свойства float по умолчанию занимает всю строку. Блоку .right ничего не остается, как сместиться вниз. Footer тоже без float или clear - в итоге всё плывёт.

Несогласен, main не может занять всю строку у него задана ширина фиксированная он занимает именно 190 px :slight_smile:

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

1 лайк

Вот теперь картинка сложилась:)

1 лайк