[9/18] Испытание: карточка курса. 100% но с позиционированием

<!DOCTYPE html>
<html lang="ru">
    <head>
        <meta charset="utf-8">
        <title>Испытание: карточка курса</title>
    </head>
    <body>
        <div class="div1">
            <div class="div2">Курс &laquo;Фоны&raquo;</div>
            <div>
                Учимся использовать фоновые цвета и изображения, разбираемся с форматами, знакомимся с приёмами создания декоративных эффектов.
            </div>
            <div class="share">
                <a class="social social-vk" href="http://vk.com/htmlacademy"></a>
                <a class="social social-tw" href="http://twitter.com/htmlacademy_ru"></a>
                <a class="social social-gp" href="http://plus.google.com/+HTMLAcademyRUS"></a>
            </div>
        </div>
    </body>
</html>

CSS:

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

body {
    width: 280px;
    min-height: 280px;
    padding-top: 20px;
    padding-left: 20px;
    font-size: 14px;
    font-family: "Arial", sans-serif;
    line-height: 1.2;
    background: #ecf0f1;
}

.div1 {
    position:absolute;
    width: 240px;
    height: 235px;
    color: white;
    background-color: #1abc9c;
}

Если здесь не использовать абсолютное позиционирование, то рамка-фон начинает убегать вниз благодаря маргину ниже:

.div1 > div{
    margin: 20px;
}

.div2 {
    font-size: 20px;
}

.share {
    position: absolute;
    bottom: 0px;
}

тут, если не использовать позиционирование, то нужен паддинг с отступом не кратным 5

.social {
    display: inline-block;
    width: 30px;
    height: 30px;
    margin-right: 5px;
    background: #16a085 url("/assets/course14/social-challenge.png") no-repeat;
    vertical-align: middle;
}

.social-vk {
    background-position: 0 0;
}

.social-tw {
    background-position: -30px 0;
}

.social-gp {
    background-position: -60px 0;
}

Суть вопроса именно в качестве кода. корректно ли использовать позиционирование, или лучше от него уйти и думать как иначе решить эту задачу.

Позиционирование здесь неуместно.
Что касается разметки, то особенно плох этот фрагмент без семантики:

Для текста есть много других тегов, которые помогают правильно описать структуру документа. Это теги заголовков h1-h6, параграфы, списки, цитаты и т. д.

1 лайк
<body>
    <div class="ramka">
        <h1>Курс &laquo;Фоны&raquo;</h1>
        <div>Учимся использовать фоновые цвета и изображения, разбираемся с форматами, знакомимся с приёмами создания декоративных эффектов.</div>
        <div class="share">
            <a class="social social-fb" href="http://www.facebook.com/htmlacademy"></a>
            <a class="social social-tw" href="http://twitter.com/htmlacademy_ru"></a>
            <a class="social social-gp" href="http://plus.google.com/+HTMLAcademyRUS"></a>
        </div>
    </div>
</body>

CSS:

.ramka {
    width: 200px;
    padding: 20px;
    background-color: #1abc9c;
    color: white;
}

.ramka h1 {
    margin: 0;
    margin-bottom: 20px;
    font-weight: normal;
    font-size: 20px;
}

.share {
    margin-top: 25px;
}

.social {
    display: inline-block;
    width: 30px;
    height: 30px;
    margin-right: 5px;
    background: #16a085 url(/assets/course14/social-challenge.png) no-repeat;
    vertical-align: middle;
}

.social-fb {
    background-position: 0 0; 
}

.social-tw {
    background-position: -30px 0 ; 
}

.social-gp {
    background-position: -60px 0 ;
}

Разобрался. Теперь без позиционирования. Учел и Ваш совет по семантике. Есть еще недочеты?

Есть еще недочеты. И первый из них - это транслит (русские слова английскими буквами в качестве имени класса - это очень плохо, непрофессионально, можно даже сказать “неприлично”).
И семантику учли не до конца - безликий div как был, так и есть.

1 лайк

Спасибо. Исправлюсь))