[9/18] - 95% Откуда добавляется несколько пикселей к высоте блока?

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

<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Испытание: карточка курса</title>
</head>
<body>
    <div class="main-block">
        <h1>Курс &laquo;Фоны&raquo;</h1>
        <p>Учимся использовать фоновые цвета и изображения, разбираемся с форматами, знакомимся с приёмами создания декоративных эффектов.</p>
        <div class="block-social">
            <a class="icon icon-fb"></a>
            <a class="icon icon-tw"></a>
            <a class="icon icon-go"></a>
        </div>
    </div>
</body>

Стили 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;
}

/*
Все размеры, отступы, координаты, размеры шрифтов (не заданные в body) кратны 5 или 10.
Адрес картинки-спрайта:
/assets/course14/social-challenge.png
*/
.main-block {
width: 200px;
background-color: #1abc9c;
color: white;
padding: 20px;
}
.main-block h1 {
margin: 0;
font-weight: normal;
font-size: 20px;
}
.main-block p {
margin-top: 20px;
margin-bottom: 25px;

}
.icon {
display: inline-block;
width: 30px;
height: 30px;
margin-right: 5px;
background-color: #16a085;
background-image: url("/assets/course14/social-challenge.png");
background-repeat: no-repeat;
}
.icon-fb {
background-position: 0 0;
}
.icon-tw {
background-position: -30px 0;
}
.icon-go {
background-position: -60px 0;
}

Несколько пикселей появляется из-за ссылок, которые являются блочно-строчными элементами. Их нужно обязательно выравнивать по вертикали.

1 лайк

Код нормальный.


Несколько пикселей добавляется не только снизу, но и справа.

Нужно почитать http://xiper.net/collect/html-and-css-tricks/pozitsionirovanie/inline-block-margins, после чего добавить:

.block-social{
    font-size:0;         /* убираем горизонтальные отступы */
	line-height:0;       /* ...и вертикальные в некоторых браузерах */
	letter-spacing:-1px; /* переубеждаем webkit'ы */
}

В .icon изменить и добавить:

margin-right: 9px;
vertical-align: middle;

…кратность 5 не выполняется, но так будет правильнее…


Также эта проблема обсуждается на http://htmlbook.ru/samlayout/blochnaya-verstka/strochno-blochnye-elementy в комментариях.

1 лайк