Устранение проблемы увеличения межстрочного интервала в тексте при использовании графических смайлов

Я предпочитаю при написании текста использовать текстовые смайлы, а некоторые блоггеры любят графические (у WordPress, например, есть специальная опция, которая автоматически преобразует текстовые смайлы в картинки).

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

Для примера – вот так это выглядит на блоге Михаила Шакина:

shakin.ru

и вот так на блоге Сергея Сосновского:

sosnovskij.ru

Согласитесь, не очень красиво?

А устраняется данная неприятность просто – с помощью CSS. Для этого достаточно в CSS-файл сайта добавить вот такое правило:

img {vertical-align: middle}

И все. Смайлы выровняются относительно текста, и разрывы между строками исчезнут.

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

.post img {vertical-align: middle}

Здесь .post – это класс блока в котором находятся смайлы.

Комментарии (26)

  1. 10 ноября 2011 г. в 14:15

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

    1. 10 ноября 2011 г. в 14:30 / ответ на коммент art

      Именно, это класс wp-smiley

      1. 10 ноября 2011 г. в 14:34 / ответ на коммент Neolot

        Я же писал не конкретно про WordPress, а целом про любые сайты. Да даже на WordPress он не всегда присутствует (на сайте из второго примера его нет).

  2. 10 ноября 2011 г. в 14:29

    благодарю за решение проблемы

  3. 10 ноября 2011 г. в 14:33

    Спасибо. С помощью какой программы сделали такие скриншоты записей Шакина и Сосновского, не подскажите?

    1. 10 ноября 2011 г. в 14:36 / ответ на коммент xnslm

      Ха-ха, так и думал, что кто-то об этом спросит =)

      Программа называется FastStone Capture.

      1. 1 декабря 2011 г. в 22:46 / ответ на коммент Dimox

        Про рещение проблемы знал давно, ещё дольше пользуюсь FS Capture, а вот про рваные края и не знал)))) Спасибо за статью :-D

        1. 2 декабря 2011 г. в 10:43 / ответ на коммент ПафНутиЙ

          Пожалуйста =)

  4. 10 ноября 2011 г. в 19:54

    Хорошее решение – возьму на заметку! FastStone Capture тоже пользую – удобная вешь – рекомендую!!!

  5. Xtray
    11 ноября 2011 г. в 02:53

    С проблемой сталкивался, но над решением не думал — ленился. А теперь есть готовый рецепт. Спасибо :)

  6. mdss
    11 ноября 2011 г. в 07:55

    собственно высота строки все равно меньше высоты смайлика, даже если последний маленький. Вот скрин с сайта примера

    1. mdss
      11 ноября 2011 г. в 07:56 / ответ на коммент mdss

      картинко порезалась. В предварительном просмотре отображалась …
      http://pics.makexhtml.ru/images/1dwd.png

  7. 11 ноября 2011 г. в 12:59

    Спасибо, Дим. Стало стало лучше :) Смайлик все равно увеличивает межстрочный интервал, но совсем незначительно. Невооруженным глазом практически не видно.

    1. Это связано с тем, что у тебя высота смайлика больше высоты строки. Можешь поменять ее вот тут (в самом верху файла style.css):

      font: 12px/17px Verdana, Tahoma, Arial, sans-serif;

      Вместо 17 попробуй поставить 19 или 20.

      1. 11 ноября 2011 г. в 13:58 / ответ на коммент Dimox

        да и размер самого шрифта можно было бы увеличить

      2. Спасибо. Поставил 20. Высота у смайлика тоже 20 :)

  8. 11 ноября 2011 г. в 18:03

    Этот способ спорный, потому как будут выравниваться по вертикальному центру строки не только смайлы, но и все остальные изображения в посте. Чтобы выравнивались только смайты, нужно в style.css добавить:

    .post img.wp-smiley, .post img.wp-smiley:hover {vertical-align:middle !important}

    1. 11 ноября 2011 г. в 18:26 / ответ на коммент tiaurus

      Читай выше.

  9. 13 ноября 2011 г. в 17:49

    Димокс, большое спасибо! Теперь тысячи смайликов на моем блоге выровнялись за мгновение благодаря твоему решению! :) Напишу про твой пост в 46 блог-шоу.

    1. 13 ноября 2011 г. в 18:17 / ответ на коммент Глобатор

      Пожалуйста, Миша ;)

  10. 23 декабря 2011 г. в 11:33

    Cпасибо за статью. Хотел тебе написать на обратную связь, но получилось только со второго раза! с первого раза какой то ерор показывает. По тести..

  11. 2 февраля 2012 г. в 20:17

    Спасибо за подсказку. Взял на вооружение. Сразу полез в css и внёс поправочку ;-)

  12. 6 марта 2012 г. в 08:25

    Супер! Я потому и не любил использовать графические смайлы, что текст разъезжается. А решение такое простое!

  13. 13 апреля 2012 г. в 19:14

    Хорошее решение. Для нормального отображения под свой размер смайликов (24×24) поигрался со значениями vertical-align и выставил -0.6em:
    .smilie {vertical-align: -0.6em}
    На статью, кстати попал от Шакина =)

  14. 13 июня 2012 г. в 23:48

    Клево. Да, действительно, несколько напрягало увеличение межстрочного интервала. Опять таки — респект за компактное решение :)

  15. 3 июня 2015 г. в 11:07

    img.wp-smiley,
    img.emoji {
    display: inline !important;
    border: none !important;
    box-shadow: none !important;
    height: 1em !important;
    width: 1em !important;
    margin: 0 .07em !important;
    vertical-align: -0.1em !important;
    background: none !important;
    padding: 0 !important;
    }
    Можно и так сделать. Просто подстраиваем ширину и высоту смайла под размер шрифта.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код