Статья размещена автором Бетке Сергей Сергеевич

Яндекс.Карты и CSS: несовместимости

Яндекс.Карты и CSS: несовместимости Наткнулся на одну неприятность при попытке вставки карт Яндекса (maps.yandex.ru) на страницу wordpress. Проблема возникла здесь: http://www.nice-tour.nov.ru/contacts. И выражалась она следующим образом (на картинке видно). То есть даже элементы управления видны и функционируют, а карты нет.

Решим и эту проблему…

Честно говоря, сначала грешил на плагин Yandex Maps for WordPress, который использовал для вставки карты. Перекопал весь его код, но никаких серьёзных проблем не нашёл. Shortcode для вставки карты с использованием данного плагина выглядит следующим образом:

[yandexMap name="Приятное путешествие" description="Туристическое агентство" width="100%" height="320"]Россия, Новгородская область, Великий Новгород, Александра Корсунова проспект, 53/1, офис 2.12[/yandexMap]

Результат Вы видите. Так в чём же причина? После того проверил все .css на предмет display, visibility и прочего наткнулся в .css темы на следующее определение:

img {
    border:0px;
    padding:5px;
    max-width: 100%;
}

На первый взгляд – ничего страшного. Но только на первый. Использовать max-width для тега img нельзя! Стоило убрать запись max-width – и всё заработало! (результат виден по ссылке в начале статьи).

Такие вот глупые на первый взгляд несовместимости. С одной стороны, и разработчикам Яндекса не помешает явно переопределить max-width, с другой стороны – и при работке .css тем не стоит огульно рисовать стили для тегов без явного указания класса или id. Надо бы разработчикам Яндекс.Карт написать про этот “глюк”.

Пока по результатам общения с разработчиками могу сказать следующее: любые правила в CSS, устанавливающие width:100% либо max-width:100% для тега img (без явного указания его класса или иных ограничений, не позволяющих применить это правило к карте) приводят к описанным проблемам. Будем надеяться, что общение с разработчиками приведёт к определённым корректировкам.

Отзывы » (5)

  1. Разработчикам сообщил про эту «особенность»: http://clubs.ya.ru/mapsapi/…. Ответ не заставил себя ждать…

  2. Леха:

    Проблема эта несколько надумана, имхо. По уму, ширину и высоту картинок нужно указывать в атрибутах (x)HTML. Во-первых, это будет способствовать более быстрому и правильному рендерингу страницы, т.к. браузеру уже не нужно будет вычислять размеры изображений и он заранее отобразит блок с соответствующими шириной и высотой, даже если картинка еще не загрузилась и не отобразилась соответственно. Во-вторых, позволит избежать вот таких вот проблем.

    Кстати, я не сразу понял, зачем вообще нужен max-width для img. Единственное, что приходит на ум — чтобы размеры больших картинок, которые не помещаются в контейнер, ужимались до размеров контейнера.
    Ну, тоже вариант, в принципе. Но проблемный.

    • Суть в том, что приведённые в статье правила встречаются во многих темах. Поэтому и описал одну из типовых проблем, которая может возникнуть при использовании Яндекс.Карт. Я согласен с Вашим замечанием к разработчику темы, но решать подобные проблемы приходится уже при при разработке сайта.

  3. Леха:

    max-width: 100% для img в данном случае — просто костыль, ИМХО. Предназначенный для того, чтобы картинки, размер которых превышает размер контейнера, ужимались до размера контейнера.
    Но размеры картинки можно указать в предназначенных для этого HTML-атрибутах width и height, тогда и проблемы такие отпадут, и рендеринг страницы в браузерах ускорится.

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка