Monthly Archives: December 2012

Twenty twelve, google maps и корень зла

В очередной раз обновили вордпресс.  Поставив новую, ещё более минималистическую тему, привычно уже обнаружили то, что новая тема по-новому кривит встроенную на странице контактов карту.

Прошлогодняя тема twenty eleven ставила максимальную ширину картинкам, так что тайлы карты съёживались, открывая промежутки между ними (обсуждение можно найти, например, тут).

Новая тема twenty twelve добавляет картинкам элегантные тени, от чего карта начинает выглядеть так, будто её хранили в сложенном виде, и, расправив, не смогли разгладить на сгибах.

Если вдруг кому интересно, то лечится это, как и раньше, банальным добавлением стиля, с отменой этого эффекта у картинок – потомков контейнера с картой:

<style><!--
#map_canvas img { max-width: none; box-shadow: none; }
--></style>

Сложностей, в принципе, никаких: всё решается за пару минут тыканья в каком-нибудь фаербаге.  Тем не менее, при всей своей незначительности, это – проявление настоящей проблемы, куда большей и на данный момент принципиально неразрешимой.

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

В частности, каскадность стилей (первая C из CSS) – вещь замечательная и незаменимая, но её наличие делает невозможным построение компонентов, которые гарантированно получится использовать повторно.  Просто потому, что отображение внутреннего содержимого компонента зависит и от того, где он помещён.

Даже если компонент явно укажет все используемые стили, в том числе и те, значения которых берутся по умолчанию, этого всё равно будет недостаточно – развитие технологий рано или поздно приведёт к появлению новых стилей, влияющих неизвестным заранее способом.  Причём, это происходит регулярно: производители каждого браузера постоянно добавляют свои возможности разной степени экспериментальности, с вендорными префиксами или без.

Некоторую надежду вселяет то, что попытки изобрести способ совместить несовместимое всё-таки предпринимаются.  Спецификация Web Components пока на самой ранней стадии обсуждения, но именно с ней связаны основные на данный момент надежды на решение, в том числе, и вышеозначенной проблемы изоляции компонента от контекста.  Правда, то, что там описано, судя по всему, потребует выворачивания наизнанку всей логики работы браузера, со всеми вытекающими последствиями.