<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Интересное по веб-дизайну &#187; Статьи</title>
	<atom:link href="http://www.empd.ru/posts/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.empd.ru</link>
	<description></description>
	<lastBuildDate>Thu, 25 Jul 2013 09:55:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Справочник фронт-энд девелопера: виды горизонтальных панелей навигации</title>
		<link>http://www.empd.ru/post/spravochnik-front-jend-developera-vidy-gorizontalnyh-panelej-navigacii/</link>
		<comments>http://www.empd.ru/post/spravochnik-front-jend-developera-vidy-gorizontalnyh-panelej-navigacii/#comments</comments>
		<pubDate>Fri, 24 May 2013 10:02:28 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=552</guid>
		<description><![CDATA[Данная статья нацелена скорее на начинающих верстальщиков, но, может быть, матерые профессионалы тоже найдут в ней что-то новое или будут обращаться к ней как к справочнику.]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-553" title="5a756b5cad98c93d62d06b513dbd6e17" src="http://www.empd.ru/wp-content/uploads/2013/05/5a756b5cad98c93d62d06b513dbd6e17.png" alt="" width="800" height="358" /></p>
<p>Предисловие: работая верстальщиком, ваш покорный слуга заметил, что существует несколько типов меню; при этом для верстки каждого из них следует использовать свои приемы.</p>
<blockquote><p>Статья целиком: <a href="http://habrahabr.ru/post/180473/" target="_blank">http://habrahabr.ru/post/180473/</a><br />
Автор: <a href="http://habrahabr.ru/users/everyonesdesign/" target="_blank">everyonesdesign</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/spravochnik-front-jend-developera-vidy-gorizontalnyh-panelej-navigacii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ещё один способ устранить ВОШ</title>
		<link>http://www.empd.ru/post/eshhjo-odin-sposob-ustranit-vosh/</link>
		<comments>http://www.empd.ru/post/eshhjo-odin-sposob-ustranit-vosh/#comments</comments>
		<pubDate>Fri, 24 May 2013 09:46:26 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=542</guid>
		<description><![CDATA[ВОШ — эффект, возникающий при стилизации текста подключаемым шрифтом, не установленным на компьютере пользователя. Проявляется, когда подключаемый шрифт ещё не успел скачаться, и стилизуемый текст отображается следующим шрифтом из значения свойства font-family этого элемента. Такое переключение шрифтов также может повлиять на размеры элемента, если они зависят от размеров текста в нём.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Источник: <a href="http://habrahabr.ru/post/180615/" target="_blank">http://habrahabr.ru/post/180615/</a><br />
Автор: <a href="http://habrahabr.ru/users/SVGen/" target="_blank">SVGen</a></p></blockquote>
<h1>Задача</h1>
<p><abbr title="Вспышка Обычного Шрифта">ВОШ</abbr> — эффект, возникающий при стилизации текста подключаемым шрифтом, не установленным на компьютере пользователя. Проявляется, когда подключаемый шрифт <em>ещё не успел скачаться</em>, и стилизуемый текст отображается <em>следующим шрифтом</em> из значения свойства <code>font-family</code> этого элемента. Такое переключение шрифтов также может повлиять на размеры элемента, если они зависят от размеров текста в нём.<br />
Эффект известен также как <abbr title="Flash Of Unstyled Text">FOUT</abbr> — так его <a href="http://paulirish.com/2009/fighting-the-font-face-fout/">назвал</a> Пол Айриш.</p>
<p>При общих моментах, есть и особенности. Например, в Файрфоксе текст, который нужно будет отрисовать нестандартным шрифтом, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=499292">в течение 3 секунд</a> не отображается, в Хроме <a href="https://bugs.webkit.org/show_bug.cgi?id=25207#c28">тоже есть подобная задержка</a>. <em>Если шрифт успеет скачаться</em> за это время, текст отобразится сразу нужным шрифтом.</p>
<p>На эту тему здесь была <a href="http://habrahabr.ru/post/78551/">такая статья</a>. В ней последствия ВОШ рекомендовалось нивелировать грамотной игрой со шрифтами. К сожалению, иногда подключаются такие шрифты, которые слишком отличаются по характеристикам от стандартных.</p>
<h1>Решение</h1>
<p>Чтобы устранить ВОШ, я решил указывать шрифт в основном файле стилей при помощи <code>data:uri</code>, чтобы шрифт отображался сразу, вместе со страницей.</p>
<p>Остаётся выбрать формат шрифта, понимаемый большинством браузеров посетителей и удобный для загрузки. Широту поддержки форматов подключаемых шрифтов можно узнать <a href="http://caniuse.com/#feat=fontface">здесь</a>.</p>
<p>Шрифты в <code>eot</code> наиболее лёгкие, но поддерживаются только ИЕ.<br />
Шрифты в <code>ttf</code> и <code>svg</code> тяжелы, иногда — конечно, это зависит от шрифта — занимающие в два раза больше места, чем <code>eot</code> и <code>woff</code>. В моей ситуации я выбрал <code>woff</code>, этот формат поддерживается большинством браузеров наших посетителей.<br />
Ещё есть браузеры, которые <code>woff</code> не понимают, поэтому указываются альтернативы для них.</p>
<p>ИЕ версии 8 и старше не понимают шрифты в <code>woff</code>, им нужен <code>eot</code>. В то же время, ИЕ8 не понимает файлы в <code>data:uri</code> <a href="http://css-tricks.com/data-uris/">тяжелее 32КБ</a>, а более старшие версии не воспринимают совсем никакие, поэтому в отдельном файле стилей для них можно просто указать ссылки на файлы шрифтов. Чтобы эти браузеры не загружали ненужное, подключение шрифта в <code>woff</code> и в других форматах выделено в отдельный файл стилей и отделено условным комментарием.</p>
<p>Также, есть мнение, что под Вин в Хроме <code>svg</code>-шрифты выглядят <a href="http://www.fontspring.com/demos/svg-vs-woff/">лучше других</a>, но, мне кажется, это дело вкуса. Шрифт в этом формате <a href="http://www.phpied.com/gzip-your-font-face-files/">лучше других сжимается</a> при помощи <code>gzip</code>, но не поддерживается Файрфоксами и ИЕ.</p>
<p>Таким образом, подгружать шрифты можно при помощи следующего кода:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">&lt;!-- подключение файлов стилей --<span style="color: #00AA00;">&gt;</span>
&lt;!--<span style="color: #00AA00;">&#91;</span>if lte IE <span style="color: #cc66cc;">8</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>
  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;fonts_ie.css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;all&quot;</span><span style="color: #00AA00;">&gt;</span>
&lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span>
&lt;!--<span style="color: #00AA00;">&#91;</span>if gt IE <span style="color: #cc66cc;">8</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>&lt;!--<span style="color: #00AA00;">&gt;</span>
  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;fonts.css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;all&quot;</span><span style="color: #00AA00;">&gt;</span>
&lt;!--&lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span>
&nbsp;
&lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;main.css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;all&quot;</span><span style="color: #00AA00;">&gt;</span></pre></div></div>

<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* fonts_ie.css */</span>
<span style="color: #a1a100;">@font-face {</span>
    <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'PT Sans Narrow'</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">italic</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
    src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'PTS76F_W.eot'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* fonts.css */</span>
<span style="color: #a1a100;">@font-face {</span>
    <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'PT Sans Narrow'</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">italic</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-variant</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
    src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'data:application/x-font-woff;base64,d09GRgABAAAA...aCw0AAA=='</span><span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'woff'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span>
         <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'PTN77F_W.svg#PTSans-NarrowBold'</span><span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'svg'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span>
         <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'PTN77F_W.ttf'</span><span style="color: #00AA00;">&#41;</span> format<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'truetype'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* main.css */</span>
body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'PT Sans Narrow'</span><span style="color: #00AA00;">,</span> <span style="color: #ff0000;">'Arial Narrow'</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">sans-serif</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-style</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">italic</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>При использовании этого способа ВОШ остаётся только в неподдерживающих <code>woff</code>-шрифты, планомерно теряющих пользователей браузерах, самый распространённый из которых на данный момент — ИЕ8.</p>
<p><a href="http://ser-gen.github.io/sandbox/tests/fout/test_1.html">На этой странице</a> шрифт подключен традиционно.<br />
<a href="http://ser-gen.github.io/sandbox/tests/fout/test_2.html">Здесь</a> шрифт закодирован.<br />
Эффект заметней на медленном соединении.</p>
<h1>Особенности</h1>
<p>Стоит осознать, что при использовании такой техники остаются браузеры, которые <strong>не понимают шрифты</strong> в <code>woff</code>, но которым <strong>придётся</strong> их загружать. Тут уже играет роль количество посетителей с такими браузерами и продуктивность их посещений. В моей ситуации оказалось, что лучше устранить ВОШ.</p>
<p>Шрифт <strong>всё равно будет скачиваться</strong>, даже если установлен <em>локально</em>. Это сделано, чтобы предотвратить конфликты между начертаниями; будет скачиваться такое, какое нужно.<br />
Страница <a href="http://www.phpied.com/css-and-the-critical-path/">не будет отрисовываться</a>, пока файл стилей со шрифтом не скачается.</p>
<p>Также отмечу, что способ <strong>не подойдёт для шрифтов с лицензией, не позволяющей загружать их при помощи <code>data:uri</code></strong>.</p>
<p>И, конечно, гарантированное решение всех проблем с подгружаемыми шрифтами — <strong>отказаться</strong> от их использования. Серьёзно, иногда они ни к чему.</p>
<h2>Дополнительная информация</h2>
<p>Отличная <a href="http://habrahabr.ru/post/64596/">отправная точка</a> для изучения темы подключаемых шрифтов<br />
Если нужно подключить шрифт <a href="http://habrahabr.ru/post/113136/">как обычно</a>. <a href="http://habrahabr.ru/post/113136/#comment_3634868">Здесь же</a> находится комментарий, который я заметил уже после того, как применил этот способ.</p>
<p>Немного <a href="http://paulirish.com/2010/font-face-gotchas/">об особенностях подключения</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/eshhjo-odin-sposob-ustranit-vosh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как сделать классную рассылку</title>
		<link>http://www.empd.ru/post/kak-sdelat-klassnuiy-rassylku/</link>
		<comments>http://www.empd.ru/post/kak-sdelat-klassnuiy-rassylku/#comments</comments>
		<pubDate>Wed, 22 May 2013 12:48:38 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=521</guid>
		<description><![CDATA[Опыт Мегаплана]]></description>
			<content:encoded><![CDATA[<p><a title="Как устроена наша рассылка" href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=b093e2e3cb&amp;e=e621a121a4">Как сделать классную рассылку</a> &#8212; <a title="Как устроена наша рассылка" href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=b093e2e3cb&amp;e=e621a121a4"><em>Опыт Мегаплана</em><br />
</a></p>
<div><img id="headerImage campaign-icon" src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/making_of.jpg" alt="Рабочее место редактора рассылки" width="700" height="442" border="0" /></div>
<div>
<h3>Здравствуйте!</h3>
</div>
<div>У копирайтера Дмитрия Кота вышла <a href="http://www.mann-ivanov-ferber.ru/books/mif/e-mail_marketing/" target="_self">чудесная книга об электронных рассылках</a>.</div>
<div>
<p>Я сделал ее дайджест, но получилось бестолково. Книга достаточно короткая и емкая, чтобы прочитать ее самостоятельно. Мой дайджест вряд ли будет полезен. К тому же, оказалось, что многое Мегаплан делал прямо по книге, не зная того.Поэтому сегодня вместо дайджеста я расскажу, как мы делаем собственную рассылку. Этот опыт будет полезен всем, кто тоже хочет общаться с клиентами с помощью интересных писем.</p>
</div>
<div>
<h2><strong>Человечность и польза</strong></h2>
<p>Рассылка начинается с цели: построить нормальное человеческое общение с пользователями Мегаплана. Не продавать Мегаплан, не рекламировать релизы, а рассказывать что-нибудь полезное. Просто так, без впаривания и заискивания.</p>
<p>Раз в пятилетку можно сообщать о важных новостях Мегаплана и даже размещать рекламу партнеров. Но рекламы должно быть мало, она  помечается как реклама и ставится в конец рассылки. Основной материал — полезные статьи для наших пользователей.</p>
<p>Выпуски должны быть достаточно интересным, чтобы бизнес-журналы захотели их перепечатать.</p>
</div>
<div>
<h2>Круг интересов</h2>
<p>Я очертил круг тем, к которым неравнодушен сам и которые понравятся пользователям Мегаплана:</p>
<ul>
<li>личная эффективность,</li>
<li>корпоративная культура,</li>
<li>облачные инструменты,</li>
<li>технологии управления,</li>
<li>предпринимательство,</li>
<li>работа в офисе и вне его.</li>
</ul>
<p>В список намеренно не включены общечеловеческие темы — личные отношения, здоровье и путешествия. Мегаплан — это о малом и среднем бизнесе, оптимизации, сокращении затрат и эффективности каждого отдельного сотрудника. Об этом же и рассылка.</p>
<p>Если решите создавать свою рассылку, постарайтесь писать о том, что объединяет вас с клиентами. Не делайте еще один «Менс хелс» или «Космо». Если вы веб-студия, будет странно делать рассылку о кулинарии — пусть это и интересно.</p>
</div>
<div>
<h2>Рубрикатор и редплан</h2>
<p>Рассылка похожа на журнал: она должна выходить регулярно и быть предсказуемой по формату. На третий-четвертый раз читатель должен знать, что его ждет. Иногда нужно ломать шаблон, но остальное время его придерживаемся. В первые 3 месяца у нас сложился такой рубрикатор:</p>
<ol>
<li>Одна или несколько статей на актуальную тему. Пример: <a href="http://eepurl.com/yaNf9" target="_self">о критике</a>;</li>
<li>Дайджест полезной книги: <a href="http://eepurl.com/w_5I9" target="_self">о мотивации</a>, <a href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=35336969a1" target="_self">манипуляциях</a>, <a href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=f1bac2dff8" target="_self">о</a><a href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=f1bac2dff8">бщении с ребенком</a>;</li>
<li>Совет об организации работы, управлении персоналом, планировании или предпринимательстве, с использованием Мегаплана. Совет должен быть полезен и сам по себе, и в применении к Мегаплану: <a href="http://us2.campaign-archive1.com/?u=833bf5395122c8de57f99f863&amp;id=8e4817eeb0" target="_self">как и зачем сегментировать клиентов</a>, <a href="http://eepurl.com/wk9ef" target="_self">как держать обещания</a>.</li>
<li>Подборка ссылок — 3-5 интересных статей, сайтов, блогов, без особой связи. Называется «Тем временем в интернете». Пример: <a href="http://eepurl.com/xO9Kf" target="_self">второй выпуск</a>.</li>
</ol>
<p>Рубрикатор идет по кругу. После дайджеста выйдет совет, после совета — подборка, после подборки — статья. Так я всегда знаю, что писать в ближайшее время.</p>
<p>Помимо рубрикатора я веду редакционный план. Составляю его раз в месяц, чтобы знать, о чем будут ближайшие четыре статьи. Зная это, я могу обратиться за помощью к экспертам, попросить у издательства нужные книги, заранее их прочитать.</p>
<p>Редплан — это отлично. С ним никогда нет проблемы, что рассылка завтра, а я до сих пор не знаю, о чем писать.</p>
<p>План ведется в Мегаплане:</p>
<p><img src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/old_plan.jpg" alt="Редплан" width="650" height="484" align="none" /></p>
</div>
<div>
<h2>Рабочий процесс</h2>
<p>Главное — не нарушать темп. Мы решили, что рассылка должна выходить каждую неделю, несмотря ни на что. Выпустить ее вовремя — самая важная задача. Срок отлит в железе, запечатан в бетоне, и сдвинуть его может только директор Мегаплана Михаил Смолянов.</p>
<p>Я уделяю столько внимания сроку, потому что это главный секрет. Если применить к себе менее жесткие требования, рассылка вообще выходить не будет. Всегда найдутся срочные дела, которые отодвинут выпуск на потом. Поэтому если делаете регулярную рассылку, обязательно соблюдайте срок.</p>
<p>Нужно понимать, что рассылка для компании — это серьезный проект. На него уходит время и деньги. Рассылка, которая делается по остаточному принципу, в лучшем случае просто удаляется из ящиков. Поэтому если у вас нет ресурса или вы не понимаете, зачем это — не тратьте время. Либо делать хорошо, либо не делать вообще.</p>
<blockquote><p>Если применить к себе менее жесткие требования, рассылка вообще выходить не будет.</p></blockquote>
</div>
<div>
<h2>Качество материалов</h2>
<p>Основная работа — это поиск и обработка полезного материала. Я стараюсь отфильтровывать то, что сам считаю глупостью: тупые ] американские схемы, нереалистичные советы, вывернутые наизнанку истории успеха. К сожалению, фильтровать приходится много: из двадцати свежих записей на «<a href="http://www.inc.com/" target="_self">Инке</a>», «<a href="http://ted.com/" target="_self">Теде</a>» или «<a href="http://www.businessinsider.com/" target="_self">Бизнесинсайдере</a>» мой фильтр проходит в лучшем случае одна.</p>
<p>Самые интересные статьи основаны на опыте российских предпринимателей. Две недели назад мне написала консультант по ресторанному бизнесу, и я готовлюсь сделать о ней материал в июне. Мне чертовски интересно узнать, как устроен этот бизнес и что в нем особенного.</p>
<p>Мой друг — товаровед в продуктовом магазине. Когда он уволится, я узнаю у него все о магазинном бизнесе.</p>
<p>Если будете делать свою рассылку, подумайте в первую очередь, что нового и уникального вы сможете рассказать. Это может быть опыт ваших сотрудников, клиентов или членов семьи. Он в любом случае более интересный, чем перепечатка статей с сайта «Сто секретов бизнеса».</p>
</div>
<div>
<h2>А/Б-тесты и исследования</h2>
<p>Я стараюсь измерить все, что измеряется: сколько кликнули по каждой ссылке и почему, какие заголовки пользовались спросом, какие вызвали  отклик в Твиттере. Это важно: так я понимаю, в каком направлении двигаться.</p>
<p>У «Мейлчимпа», через который мы отправляем рассылку, есть чудесный механизм А/Б тестирования. Работает так:</p>
<ol>
<li>Я пишу рассылку и придумываю для нее два одинаково хороших заголовка. Заголовок влияет на открываемость: чем он удачнее и интереснее, тем больше читателей захотят прочитать письмо.</li>
<li>Во вторник после обеда делаю рассылку на 20% аудитории. 10% аудитории получают письмо с первым заголовком, 10% — со вторым.</li>
<li>В течение 24 часов «Чимп» собирает информацию об открываемости: какой из заголовков пользуется большим спросом.</li>
<li>На следующий день можно уверенно говорить, какой из заголовков пользовался большим спросом. «Чимп» рассылает письмо с этим заголовком оставшимся 80% аудитории.</li>
</ol>
<p>Так я тестировал лучшее имя отправителя, темы и самое удачное время рассылки. Оказалось, вечером читают немного лучше:</p>
<p><img src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/absplit2.jpg" alt="Результат А/Б-тестирования времени" width="600" height="231" align="none" /></p>
<p>Впрочем, то, что вечером нас смотрят чаще, не значит, что у вас будет так же. Тестируйте и находите свою комбинацию времени и темы.</p>
</div>
<div>
<h2>Итерации</h2>
<p>Рассылка не сразу стала такой, какой вы ее видите. Мы начинали с очень скромного стандартного шаблона, без плана и с минимальными ресурсами. Сначала стояла задача проверить, могу ли я делать выпуск каждую неделю.</p>
<p>Могу.</p>
<p>Через месяц появился формат цитат с фотографиями.</p>
<p>Еще через месяц дизайнеры Мегаплана Саша, Илья и Леша сделали первый фирменный шаблон рассылки. Потом появились ссылки на предыдущие выпуски. В этой рассылке, по совету нашего читателя, появится ссылка на подписку.</p>
<p><img src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/before_after_2.jpg" alt="" width="650" height="358" align="none" /></p>
<p>Сейчас мы работаем над инфраструктурой: страницей подписки, отписки и архива.</p>
<p>Рассылка выходила все это время, вне зависимости от внешних обстоятельств. Ничто не мешало нам запуститься с минимальным функционалом, проверить главную гипотезу, и дальше развивать рассылку, руководствуясь опытом. Если бы мы сначала сделали всю инфраструктуру, мы бы до сих пор не запустились.</p>
<p>Если решите делать свою рассылку, начните с главного: чтобы люди получали от вас интересные письма. Украшения, брендирование и автоматизацию настроите потом.</p>
</div>
<div>
<h2>Тонкости</h2>
<ol>
<li>Люди всегда будут отписываться от рассылки, это нормально. Всем не угодишь. Важно, чтобы другие люди подписывались.</li>
<li>Если оставить просто обратный адрес, никто ничего не напишет. Если конкретно сказать, что присылать (например, критику и ссылки на интересные проекты), писем будет много.</li>
<li>«Я» интереснее, чем «мы». Пишите от своего имени, а не от имени компании. Пишите о людях и историях, а не о теориях и идеях.</li>
<li>Истина рождается только во время тестов и экспериментов. Вы ничего не знаете о своей аудитории, пока не начнете с ней работать.</li>
<li>Рассылка начинается с хорошего заголовка, подзаголовка и картинки.</li>
</ol>
</div>
<div>
<div><a href="http://maximilyahov.ru/"><img src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/maxim_3.jpg" alt="Илья Максимов" width="125" height="125" border="0" /></a></div>
<div>
<h4>Максим Ильяхов</h4>
<p>Редактор Мегаплана</p>
</div>
<div>
<h3>Домашнее чтение</h3>
<p>Я рассказал о своем опыте создания рассылки Мегаплана. <a href="http://www.mann-ivanov-ferber.ru/books/mif/e-mail_marketing/" target="_self">В книге Дмитрия Кота</a> сказано все остальное. Это чудесная короткая книга без лишней теории и булшита, с правильным отношением к клиенту.</p>
<p><a href="http://www.mann-ivanov-ferber.ru/books/mif/e-mail_marketing/"><img src="http://gallery.mailchimp.com/833bf5395122c8de57f99f863/images/emailmarketing.jpg" alt="Книга Дмитрия Кота" width="200" height="259" align="none" /></a></p>
<p>Если хотите узнать больше о рассылке Мегаплана, рассказать о своем бизнесе или прислать ссылку на интересную статью, проект или блог, пишите: <a href="mailto:maxim@megaplan.ru">maxim@megaplan.ru</a></p>
<blockquote><p>Ссылка для подписки:<br />
<a href="http://megaplan.ru/subscribe" target="_self">megaplan.ru/subscribe</a><br />
(перешлите друзьям)</p></blockquote>
<p>Хорошего дня и успехов!</p>
</div>
</div>
<div>
<p>P.S. Вера, спасибо за книгу!P. P. S. Это двадцать шестой выпуск еженедельной рассылки Мегаплана. Пишем о личной эффективности, корпоративной культуре, облачных системах, технологиях управления, предпринимательстве, работе в офисе и вне его. Дайджесты книг и статьи по одному разу в месяц. Редактор: <a href="mailto:maxim@megaplan.ru" target="_self">maxim@megaplan.ru</a></p>
</div>
<blockquote><p>Источник: <a href="http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=b093e2e3cb&amp;e=e621a121a4" target="_blank">http://us2.campaign-archive2.com/?u=833bf5395122c8de57f99f863&amp;id=b093e2e3cb&amp;e=e621a121a4</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/kak-sdelat-klassnuiy-rassylku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel-free CSS</title>
		<link>http://www.empd.ru/post/pixel-free-css/</link>
		<comments>http://www.empd.ru/post/pixel-free-css/#comments</comments>
		<pubDate>Mon, 06 May 2013 11:50:51 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=513</guid>
		<description><![CDATA[I recently redesigned my blog, The Sunday Best. In the process, I think I did something new: I completely avoided the use of px units in my CSS.]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-514" title="Pixel-free_CSS" src="http://www.empd.ru/wp-content/uploads/2013/05/Pixel-free_CSS.jpg" alt="" width="640" height="320" /></p>
<p>I recently redesigned my blog, The Sunday Best. In the process, I think I did something new: I completely avoided the use of px units in my CSS.</p>
<blockquote><p><a href="http://medium.com/design-ux/66bddb327bb1" target="_blank">http://medium.com/design-ux/66bddb327bb1</a></p></blockquote>
<p>I’ve been (badly) making websites since I was 14. In 1996, and indeed for most of the Web’s existence, makers of websites had to be very concerned about the average resolution of users’ screens. I felt safe stretching my sites to just under 800-pixels wide to avoid horizontal scroll bars on monitors in the late ‘90s. By the early ‘00s, it was safe to make websites just under 1024-pixels wide.</p>
<p>In 2013, however, it’s more complicated. Uber users run Thunderbolt displays stretching 2560 pixels. Those same users are also on Macbook Airs with just 1366 pixels. Or on iPhones, with a width of 640 pixels but which answer to media quieries for 320-pixel design.</p>
<p>In 2013, the pixel is nearly meaningless. I got tired of guessing users’ pixel counts. I fully adopted vw and em units in my CSS.</p>
<p><strong>It started when I discovered vw units</strong>, and learned that I could define a font size in them. My initial goal was to simply resize the font based on the width of the viewport — and it worked, at least in modern browsers.</p>
<pre><em>body { font-size: 1.8vw; }</em></pre>
<p>I then wanted to see how far I could take the idea. I ended up completely removing px units from my CSS. And I’m very happy with the results.</p>
<p>The final challenge in extricating pixels from my design came from social share buttons. While the rest of my page fitted perfectly to any size screen, share buttons such as Facebook’s Like didn’t resize the same way. In mobile Safari, the button was uselessly tiny. Twitter offers different sizes for the Tweet button, but Facebook surprisingly has no options. In the end, I nixed the standard share buttons and created my own. (They’re not quite as functional as stock buttons, but certainly more usable on mobile, and more attractive.)</p>
<h2>The benefits</h2>
<p>Responsiveness is built in. Sort of. I still use media queries to adjust the layout for portrait screens and small screens.</p>
<p>Everything is kept to scale. Font size doesn’t adjust independently of the column width — roughly the same character count per line is retained. Dividing lines are sized relative everything else, maintaining the original proportions no matter what.</p>
<p>Users can resize a browser window to any size or aspect ratio and the design will fit — no horizontal scroll bars, no obstructed content. Instead of keeping a rigid browser size, this allows users to move the content anywhere on a desktop.</p>
<p>There’s no unused blank space around the page, no wasted screen.</p>
<p>It’s not easy for most people to do, but users can load multiple sites within a set of adjacent iframes, effectively viewing multiple websites at once. (Assuming other sites are as flexibly designed. <a href="https://medium.com/r/?url=http%3A%2F%2Ffiddle.jshell.net%2FMRSallee%2FWzqQT%2F8%2Fshow%2F">Here’s an example</a> — naturally, it works with most responsive designs.)</p>
<h2>The drawbacks</h2>
<p>Browser zoom controls no longer do anything on my blog — the only way to increase or decrease the size of the text is to resize the browser window.</p>
<p>I haven’t yet established a style for very large browsers, so at high resolution and a full-screen window the design gets a bit silly.</p>
<p>I had to give up stock social share buttons. They’re ugly anyway.</p>
<p>Images are still in pixels, and they get stretched. I don’t use many images in the page design, but do use a lot of photos. I’m pretty happy with how resized photos look in modern browsers. (Vector graphics and more advanced image serving could negate this issue.)</p>
<p>Browser compatibility with vw and vh units is still an issue. They work great in WebKit and Gecko. I looked at my blog in Internet Explorer just once and it seemed usable, though there were certainly some issues. I have the luxury of not having to worry about Internet Explorer.</p>
<hr />
<p>Most of the Web isn’t built like this, which means some of the ideals behind it don’t really work. Users aren’t accustomed to resizing their browser window to squeeze content to a preferred size. Some users always run full-screen even on large resolutions, which makes my blog look silly (words get huge). And few users are in the habit of loading multiple websites in adjacent iframes — we use tabs instead, which are generally preferable anyway (but don’t have the same options for content consumption).</p>
<p><strong>I think the Web should fully move in this direction.</strong> True proportionate sizing seems to me a more authentic way to responsively fit websites to browsers (rather than media queries that simply toggle between set pixel widths). It’s also pretty easy, and requires virtually zero guessing about the user’s browser. And after jumping the initial mental hurdle of designing in vw instead of px, I found it much easier and faster to build.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/pixel-free-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подчёркивание ссылок с разрывами</title>
		<link>http://www.empd.ru/post/podchyorkivanie-ssy-lok-s-razry-vami/</link>
		<comments>http://www.empd.ru/post/podchyorkivanie-ssy-lok-s-razry-vami/#comments</comments>
		<pubDate>Sat, 20 Apr 2013 08:26:21 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=509</guid>
		<description><![CDATA[Два варианта]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-510" title="links-underline" src="http://www.empd.ru/wp-content/uploads/2013/04/links-underline.png" alt="" width="264" height="130" /></p>
<p>Два варианта:</p>
<blockquote><p><a href="http://bolknote.ru/2013/04/19/~3946#22" target="_blank">http://bolknote.ru/2013/04/19/~3946#22</a></p>
<p><a href="http://kizu.ru/" target="_blank">http://kizu.ru/</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/podchyorkivanie-ssy-lok-s-razry-vami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функциональность важнее формы: проектируя для читателя</title>
		<link>http://www.empd.ru/post/funktsional-nost-vazhnee-formy-proektiruya-dlya-chitatelya/</link>
		<comments>http://www.empd.ru/post/funktsional-nost-vazhnee-formy-proektiruya-dlya-chitatelya/#comments</comments>
		<pubDate>Fri, 29 Mar 2013 09:21:06 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=453</guid>
		<description><![CDATA[С ростом популярности веб-гарнитур и общедоступных сервисов по работе с ними, а также уже готовых к использованию наборов шрифтов, типографика возвращает себе титул королевы всея дизайна, графики и веб-проектирования.]]></description>
			<content:encoded><![CDATA[<p>С ростом популярности веб-гарнитур и общедоступных сервисов по работе с ними, а также уже готовых к использованию наборов шрифтов, типографика возвращает себе титул королевы всея дизайна, графики и веб-проектирования.</p>
<p>В то же самое время основным камнем преткновения многих дизайнеров, работающих с типографикой, остается вопрос эстетики. Сложность заключается в том, что под термином «типографика» мы часто понимаем кастомные шрифты для надписей (и наоборот), <a href="http://www.smashingmagazine.com/2013/01/17/understanding-difference-between-type-and-lettering/">что на самом деле неверно</a>. Чтобы убедиться в существовании подобного заблуждения, достаточно просмотреть результаты поисковой выдачи <a href="http://dribbble.com/tags/typography">материалов с тегом «typography» на Dribbble.com</a>.</p>
<p><a href="http://habrahabr.ru/post/174517/"><img src="http://habrastorage.org/storage2/efe/399/a31/efe399a31c9aa697a534047020b41db8.png" alt="" /></a><br />
Очарование качественно исполненных кастомных шрифтов – а я могу часами просматривать портфолио с ними! – может существенно изменить наши взгляды на гарнитуры, поскольку типографику и создание декоративных шрифтов объединяют общие визуальные концепции. Однако, в своем стремлении найти Самую Красивую Гарнитуру™ всех времен мы можем далеко уйти от функциональности гарнитур и их преимуществ, таких как универсальность, гибкость и возможность многократного использования.</p>
<p>Более того, часто мы слишком увлекаемся использованием новейших функций OpenText, припудриваем материал милыми сердцу <a href="http://opentype.info/blog/2012/11/20/whats-a-ligature/">лигатурами</a>, нашпиговываем лишь частично описанными переносами слов на новую строку в CSS, а затем в благоговейном восхищении созерцаем получившийся шедевр, безразличные к тому, что наши усилия не оценит никто, кроме другого такого же типографического гика. Суровые реалии жизни не замедлят воздать нам должное в тот момент, когда нормальные люди попытаются прочесть (и понять) наш шедевр, используя при этом все разнообразие существующих в природе устройств, начиная с ноутбуков с дисплеем Retina, заканчивая мониторами с электронно-лучевой трубкой и разрешением 72 dpi, работающими под Windows XP, а то и вовсе какими-нибудь новомодными мобильными устройствами с функцией измерения давления.</p>
<blockquote><p>«Хорошая типографика нужна не за тем, чтобы радовать эстетов, а для того, чтобы текст было удобно читать»<br />
– <a href="https://twitter.com/iA">Оливер Райхенштайн</a></p></blockquote>
<p>Большинство статей в Сети оптимизированы с целью легкости их восприятия – вам знаком термин «<a href="http://en.wikipedia.org/wiki/Inverted_pyramid">перевернутая пирамида</a>»? В самой природе Интернета заложена быстрота обмена информацией соответствующая сравнительно небольшому объему внимания читателя. Люди посещают сайты и используют приложения потому, что, в первую очередь, ищут информацию, в большинстве случаев не пытаясь удовлетворить эстетические потребности. Не поймите меня неправильно – я люблю креативно сверстанные статьи, заголовки и подзаголовки, привлекающие мое внимание – но в то же время мы не можем отрицать необходимость баланса между креативностью и удобством восприятия экземпляра текста.<br />
Давайте приступим!</p>
<h2>Начнем с начала: исследование проекта</h2>
<p>Написанный материал усваивается легко, только когда его типографика продумана, а удобство чтения обусловлено соответствующими знаниями о восприятии текста конечным пользователем. Здесь, как и в других областях дизайна, прежде чем сделать что-либо, мы должны провести исследование. Вырабатывая в себе привычку исследовать, мы не только сможем получить ценную информацию, но также разовьем способность встать на место читателя, переключая фокус с нашего злейшего врага – нашего собственного эго (с которым я лично веду бесконечную игру в перетягивание каната).</p>
<p>Как вы уже, должно быть, догадались, основными компонентами исследования в цифровом пространстве становятся <a href="http://semanticstudios.com/publications/semantics/000029.php">контент, контекст и пользователь</a>. Скорее всего, вы обращаете внимание на все три эти компонента практически в каждом проекте по проектированию чего-либо. Но если сфокусироваться исключительно на типографии в рамках каждого их этих компонентов, можно найти немалое количество методов оценки и ряд соображений, которые стоит принять во внимание и которые в конечном счете улучшат общее впечатление пользователя от чтения.</p>
<h1>Контент</h1>
<p>Лучший способ начать проект, посвященный дизайну типографики – прочесть содержание публикуемого материала. В конце концов, любой дизайнер достаточно умен для того, чтобы понять, для кого предназначен данный текст, и что он сообщает читателям. Однако, помимо оценки качества контента и перечисления его структурных элементов, мы также можем измерить степень доступности текста, затраты времени на его чтение, цель его написания и, наконец, продолжительность жизни данного материала.</p>
<h2>Оцените все типографские элементы текста</h2>
<p>Во время чтения контента подумайте о его структуре или об элементах, которые вы встречаете в процессе чтения, и перечислите их. Используйте этот перечень как отправную точку для создания простого руководства по форматированию стиля текста. Помимо обычных абзацев, заголовков и вспомогательных элементов редактуры вы найдете и другие – зачастую с первого взгляда незаметные – детали, такие, как области логического ударения в тексте, цитаты, наиболее яркие моменты внутри цитат и, что в настоящее время особенно важно, таблицы с данными и численную информацию. Ваш идеальный шрифт должен включать в себя достаточно символов для всех этих элементов.</p>
<p>Для первичной разметки гипертекста убедитесь, что вы учли все элементы HTML-разметки. На этом этапе вы можете даже создать образцы HTML- и CSS-файлов, включающие в себя все требуемые элементы, и сохранить их как Project-Typography.html. Как вы уже наверное догадались, этот файл станет основой типографской системы проекта и будет очень полезен, когда вы начнете продумывать моменты изменения адаптивного дизайна.</p>
<h2>Оцените время на чтение материала</h2>
<p>В среднем, <a href="http://en.wikipedia.org/wiki/Reading_speed#Reading_rate">скорость чтения</a> текста колеблется от 100 слов в минуту до нескольких тысяч; большинство взрослых людей читают со скоростью от 200 до 250 слов в минуту. Мы можем подсчитать время на чтение текста, просто разделив количество слов в тексте на 250. Если вам доступен пример текстового материала по вашему проекту, просто загрузите его в установленную на вашем компьютере систему CMS и запустите <a href="http://briancray.com/posts/estimated-reading-time-web-design/">скрипт для оценки времени чтения текста</a>.</p>
<p>В зависимости от ситуации оценка времени чтения текста может помочь установить размер отступов между абзацами и задать правильный шаг и ритм чтения. Если текст достаточно длинный, мы можем разбить его на несколько частей или просто подчеркнуть ключевые моменты врезом (отдельной цитатой, выделяемой шрифтом), который усилит акцент на них.</p>
<h2>Оцените легкость чтения и доступность материала</h2>
<p>Множество тестов на проверку доступности материала показывают, какой уровень образования должен быть у читателя для того, чтобы понять текст, и знание таких параметров оценки текста может оказаться крайне полезным. Например, если содержание материала достаточно сложно для восприятия, вы можете включить в текст различные редакторские пометки для того, чтобы поддержать уровень доступности материала – или увеличить количество ссылок, которые, в свою очередь, сами могут содержать ряд элементов редактуры текста.</p>
<p>Более того, когда вы работаете совместно с копирайтером, шлифуя содержание и типографику материала, подобные тесты позволят легче отслеживать различия между версиями.</p>
<p>Один из таких тестов – Автоматизированный Индекс Доступности (читабельности) текста – <a href="http://en.wikipedia.org/wiki/Automated_Readability_Index">Automated Readability Index</a> (ARI). Показатели индекса ARI базируются на количестве символов, слов и предложений, что делает его удобным для мониторинга версий текста в реальном времени. Тест <a href="http://en.wikipedia.org/wiki/Flesch-Kincaid_readability_test#Flesch.E2.80.93Kincaid_Grade_Level">Flesh-Kincaid Grade Level</a>, с другой стороны, фокусируется в основном на количестве слогов, а не символов, что требует несколько более интенсивной работы процессора и менее удобно для оценки материала в реальном времени.</p>
<p>Другой заслуживающий внимания тест – <a href="http://en.wikipedia.org/wiki/Flesch-Kincaid_readability_test#Flesch_Reading_Ease">Flesch Reading Ease</a>. В его основе лежит подсчет слов, предложений и слогов, результирующие данные помогают вам определить уровень сложности материала. Для большинства широко распространенных языков есть собственные версии теста. Хотя некоторым веб-дизайнерам эти инструменты покажутся новыми, книжные издательства и правительственные учреждения используют их уже много лет для оценки сложности материала, изучаемого школьниками и студентами различных ступеней обучения.</p>
<p>Подсчитывание уровня легкости восприятия каждого отрывка текста вручную – чистейшей воды мазохизм, поэтому я рекомендую обратить внимание на <a href="http://www.maratz.com/blog/archives/2012/07/26/article-readability-stats-with-php/">Article Readability Stats</a>, скрипт на PHP, который мы в <a href="http://www.creativenights.com">Crearive Nights</a> разработали для наших собственных проектов.</p>
<h2>Контент-стратегия, информационная архитектура и микрокопии</h2>
<p>Если мы отойдем чуть в сторону от типографии и обратим внимание на <a href="http://alistapart.com/article/thedisciplineofcontentstrategy">контент-стратегию</a> (область планирования и управления контентом для формализации процесса редактирования) и <a href="http://books.google.hr/books?id=2d2Ry2hZc2MC">информационную архитектуру</a> (область организации и описания контента), то среди них, вероятно, найдем ряд полезных для нас моментов.</p>
<p>Здравая оценка длительности жизненного цикла материала позволит вам не поддаваться желанию использовать новейшие гарнитуры и типографские приемы при его публикации. Так что, если материал будет необходимо опубликовать заново, вы избежите гнева редактора, вызванного остатками старого форматирования, которые не были удалены в процессе подготовки к перепубликации.</p>
<p>Названия разделов (обычно определяемые информационным архитектором) могут превратить жизнь веб-дизайнера в кошмар, потому что размер навигационной панели или колонки – величина конечная. Бьюсь об заклад, что на определенном этапе своей карьеры каждый веб-дизайнер пытался переименовать или сократить название раздела для того, чтобы вписаться в необходимое пространство. Конечно, мы всегда можем уменьшить кегль или выбрать более плотный тип шрифта, но если все это не помогает, мы идем к информационному архитектору.</p>
<p>Помимо самой статьи нам приходится задавать типографские настройки для названий форм, инструкций, информационных разделов, печатающихся мелким шрифтом, интерактивных элементов (кнопок и ссылок) и прочих текстовых блоков, поясняющих назначение деталей интерфейса. Все эти маленькие кусочки текста относятся к <a href="http://stuffandnonsense.co.uk/blog/about/microcopy">микрокопиям</a>, и являются фундаментальной составляющей эффективного проектирования взаимодействия пользователя с интерфейсом вашей системы.</p>
<h1>Контекст</h1>
<p>Благодаря последним разработкам в области веб-стандартов, дизайнеры сейчас создают сайты, все больше и больше соответствующие идее «<a href="http://adactio.com/journal/1716/">Единой Сети</a>», доступной всем и везде. Несмотря на это, достичь равной универсальности во всех типах проектах нелегко – известно, что мобильный интернет, к примеру, не означает просто поиск в Сети со смартфона.</p>
<p>Известно также, что планшеты используются чаще всего чтобы быстро продемонстрировать что-либо, просматривать ленту в Twitter за завтраком или читать статьи, сидя в туалете (каждый, кто отрицает этот факт, просто не понимает потребностей пользователей). Плотность пикселей на экранах ноутбуков нового поколения значительно превосходит возможности стареньких 30-дюймовых мониторов с разрешением 96 dpi. Мы восхищаемся универсальностью Интернета, но в то же время не можем забывать о разнообразии пользователей и их устройств.</p>
<h2>Ограничения ПО</h2>
<p>Пользователи ОС Windows, позволяющей сглаживать символы по технологии ClearType, выигрывают от <a href="http://ru.wikipedia.org/wiki/%D0%A5%D0%B8%D0%BD%D1%82%D0%B8%D0%BD%D0%B3">хинтования</a> шрифта. Проблема заключается в том, что хинтинг – длительный процесс, и далеко не все веб-гарнитуры поддерживают его. В этой связи дополнительное тестирование страницы в Windows-браузерах должно войти в число ваших обязательных действий при работе с публикацией.</p>
<p><img src="http://habrastorage.org/storage2/b16/a4a/1aa/b16a4a1aa888731f4046fc07d4c7ff5d.jpg" alt="" /><br />
<em>Эти скриншоты шрифтов Verdana, Proxima Nova, Arial, Adelle Sans и Georgia, кегль 16п. (за исключением Proxima – кегль 18п.) были сделаны в браузере Firefox 18 на Windows 7. Proxima и Adelle воспроизводятся как веб-шрифты, а другие – как обыкновенные шрифты, предварительно установленные на большинстве ОС. Верхние 5 строк сделаны без сглаживания методом ClearType.</em></p>
<p>Помимо этого помните, что каждый специализированный сервис настройки веб-шрифтов может использовать различные версии одного и того же шрифта. Шрифт может демонстрировать хорошие результаты в одной системе, и при этом быть совершенно нечитабельным в другой. Я допускаю, что причина подобных различий, если таковые имеют место, содержится в первую очередь в нехватке у создателей системы времени на хинтование шрифта или в отсутствии специалистов по хинтованию.</p>
<p>К счастью для всех нас, вендоры сервисов по настройке веб-шрифтов непрерывно улучают их качество и рано или поздно каждый шрифт будет доведен до совершенства. Поскольку подбор соответствующих шрифтов – задача трудоемкая, я советую вам покупать их и подписываться на платные программы веб-хостинга, которые (помимо всего прочего) стимулируют хинтование шрифтов компаниями-разработчиками. Чем больше будет спрос, тем быстрее пойдет процесс.</p>
<p>Если поддержка Windows-пользователей критична для вашего проекта, обратите внимание на гарнитуры, хинтованные вручную, такие как <a href="http://www.lucasfonts.com/fonts/thesans/thesans-office/features/">TheSans Office</a> от компании LucasFonts (эти ребята известны своей страстью к хинтованию) или на ряд других гарнитур, разработанных специально для приложений Microsoft Office (в их названиях часто присутствуют элементы “Com,” “Offc” или“Office”). Если поддержка пользователей со старыми версиями Windows для вас не является приоритетной задачей, используйте проверенные шрифты вроде Arial, Georgia или Verdana.</p>
<p>За более подробной информацией о рендеринге шрифтов советую обратиться к статье Тима Аренса «Рендеринг шрифтов в деталях» (Tim Ahrens, “<a href="http://www.smashingmagazine.com/2012/04/24/a-closer-look-at-font-rendering/">A Closer Look at Font Rendering</a>”).</p>
<h2>Ограничения аппаратного обеспечения</h2>
<p>Проблема, с которой мы сталкиваемся в рамках всей индустрии аппаратного обеспечения, заключается в существенных различиях в плотности пикселей на экранах устройств – как результат, зачастую типографика материала оказывается не адаптированной под нужды того или иного устройства. В качестве одного из интересных решений предлагается вводить <a href="http://typophile.com/node/81483">градуированные шрифты</a> для экранов с различной плотностью пикселей точно так же, как дизайнеры печатных изданий используют градуированные шрифты для более точного контроля нанесения чернил на бумагу. Вы можете прочитать более подробно об этом подходе в статье Оливера Райхенштайна «Новый сайт с адаптивной типографикой» (Olivier Reichenstein, “<a href="http://informationarchitects.net/blog/responsive-typography/">New Site With Responsive Typography</a>”).</p>
<p><img src="http://habrastorage.org/storage2/019/9a8/1df/0199a81dff681274442564c992c16fce.jpg" alt="" /><br />
<em><a href="http://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%B8%D1%84">Глифы</a> воспроизводятся по-разному даже на устройствах одного и того же производителя. На изображении представлен шрифт Adele, кегль 16п. так, как он воспроизводится на iPhone 3G, iPad 3 и iPhone 4S (скриншот веб-страницы, увеличенный в Photoshop).</em></p>
<p>Другой пример – использование гарнитур для билбордов и ТВ-экранов – в этом случае часто необходим более насыщенный шрифт и б`ольшая контрастность. В таком случае необходимо увеличить насыщенность шрифта на два пункта по шкале и сочетать стили Regular и Extra bold. Предпросмотра подобных вариантов дизайна на десктопе или ноутбуке с дисплеем Retina недостаточно – как и в случае проектирования типографики для мобильных устройств, необходимо протестировать полученный дизайн на устройствах с низкой плотностью пикселей.</p>
<h2>Тип интерфейса</h2>
<p>Помимо аспектов, связанных с программным и аппаратным обеспечением, контекст также требует определенного типа интерфейса. К примеру, новостные порталы, Интернет-журналы, электронные книги должны иметь четко прослеживающуюся структуру, элементы которой, тесно связанные друг с другом, при чтении будут складываться в единую последовательность. Темы статей на информационных сайтах часто неоднородны (даже на нишевых порталах), а историю необходимо рассказывать четко и последовательно для того, чтобы она была понятна читателю (помните про редакторские приемы, о которых мы говорили чуть выше?).</p>
<p>С другой стороны, информация в веб-приложениях изложена прямолинейно, сухо и содержит минимум необходимых фактов, легко сопоставимые пункты или фрагменты данных, чаще всего ограниченные заранее определенными временными рамками. В отличие от повествовательных предложений, такие дискретные порции информации можно читать и с легкостью воспринимать отдельно друг от друга, они, таким образом, открыты для интерпретации пользователем. Мы в этой связи можем предположить, что процесс чтения такой информации будет нелинейным, а пользователь будет произвольно выхватывать из контекста одну порцию данных за другой.</p>
<p>В веб-приложениях контекст, окружающий содержание излагаемого материала, в большинстве случаев предсказуем. Вот некоторые из наиболее типичных примеров: проверка данных по продажам, анализ таблиц, диаграмм и графиков со статистикой по сайту, редактирование заметок, относящихся к определенной дате/времени и – в случае использования почтового сервиса – проверка писем на предмет очередного выигрыша в Нигерийскую Королевскую Лотерею.</p>
<h1>Пользователь</h1>
<p>В Интернете каждый пользователь может быть нашим целевым потребителем, особенно если мы создаем многоязыковую систему. И если на кнопке достаточно места для английского “Return”, то французское “Retour”, немецкое “Zurück”, хорватское “Povratak” и тем более венгерское “Visszatérés” могут не уместиться.</p>
<h2>Ограничения доступности</h2>
<p>Дислексия – болезнь, характеризующаяся затруднением восприятия письменного материала. Например, страдающий дислексией воспринимает символы, как картинки, видит буквы перевернутыми или в зеркальном отражении. Как результат, печатная (т.н. <a href="http://en.wikipedia.org/wiki/File:LowercaseA.svg">double-story</a>) буква “а”, написанная в нижнем регистре с коротким хвостом, выглядит для больного дислексией так же, как “е” курсивом.</p>
<p>Кроме того, большинство символов в <a href="http://www.linotype.com/3396/geometricfonts.html">геометрических гарнитурах</a> тяжелы для восприятия больными дислексией из-за схожести форм различных элементов шрифтов. Латинское “p” в зеркальном отражении будет абсолютно идентично “q”, а перевернутую “n” будет не отличить от “u”. Это не означает, что мы должны немедленно переключиться на специализированные гарнитуры, однако в знании таких моментов проявляется грамотность веб-дизайнера. В случаях осложнений (в каждом четвертом клиническом случае) дислексия сопровождается другим заболеванием – <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B4%D1%80%D0%BE%D0%BC_%D0%B4%D0%B5%D1%84%D0%B8%D1%86%D0%B8%D1%82%D0%B0_%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B8_%D0%B3%D0%B8%D0%BF%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8">синдромом дефицита внимания и гиперактивности</a>.</p>
<p><img src="http://habrastorage.org/storage2/061/d53/466/061d53466b553d17d6025957f485548c.jpg" alt="" /><br />
<em>Акцент на нижнюю часть символов позволяет больным дислексией различать буквы. На изображении представлены шрифты Futura и Open Dyslexic.</em></p>
<p>Смягчение контрастности шрифта на экране становится возможным благодаря использованию красных, зеленых и синих субпикселей. К несчастью, небольшому количеству людей на Земле некоторые гарнитуры кажутся более контрастными или наоборот более размытыми, более облегченными или насыщенными, чем большинству, просто потому, что красный субпиксель может оказаться недостаточно различим. Используя бесплатные инструменты, такие как <a href="http://colororacle.org">Color Oracle</a>, можно легко узнать, как выбранный вами шрифт воспринимается людьми с затрудненным цветовым восприятием.</p>
<p><img src="http://habrastorage.org/storage2/a2e/00f/5a1/a2e00f5a148f9bfb103aeb3427ca10c5.jpg" alt="" /><br />
<em>Люди с нарушением цветового восприятия воспринимают <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5">сглаженные</a> буквы (с применением технологии антиалиасинга) по-разному.</em></p>
<h2>Выбор функциональной гарнитуры</h2>
<p>В противовес расхожему мнению, вкус к красивым гарнитурам – не врожденный дар. Конечно, на начальном этапе талант даст вам преимущество, но на нем вы далеко не уедете. Тренируйтесь всесторонне изучать проекты, за которые вы беретесь, и вдохновение для выбора идеальной гарнитуры придет само, позволяя вам значительно сузить круг возможных кандидатов.</p>
<p>Небольшая ремарка. На тему того, как выбрать идеальную гарнитуру, основываясь на атмосфере проекта, его визуальных и эмоциональных характеристиках, написаны многие туториалы и руководства. Атмосфера созидания, пробуждение эмоций и визуальная дифференциация бренда от конкурентов – сфера ответственности графических дизайнеров и проектировщиков интерфейсов. Дизайнер типографики смотрит на происходящее с иной точки зрения, основываясь на утилитарных потребностях и целях проекта. Для успешного проекта в равной степени важны оба подхода.</p>
<p>Поскольку указанные цели столь различны между собой, нам приходится лавировать между ними, вынося суждения о тех или иных типах гарнитур и использовать такие более общеупотребительные прилагательные, как “красивый” и такие менее драматические определения, как “приятный” в отрыве от контекста. Гарнитура может быть оценена только в контексте конкретной ситуации. Если гарнитуры рассматривать изолированно от материала, мы должны сравнивать их только по техническим характеристикам.</p>
<p>Когда я вижу приглашение на детский утренник, написанное шрифтом <a href="http://bancomicsans.com/main/">Comic Sans</a>, первое, что я вынужден сделать (само собой) – прикрыть глаза. Но с другой стороны, я должен быть честным и признать, что он подходит для аудитории – моих детей и их друзей – пока я не поощряю их использовать его всегда и везде. Но если я увижу Comic Sans на корпоративном меморандуме, то, скорее всего, <a href="http://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%BE%D1%87%D1%82%D0%B0%D1%80%D0%B5%D0%BD%D0%B8%D0%B5">пошлю его вразнос</a>.</p>
<h4>Антиква VS. Гротеск (шрифт с засечками и без): кто это начал?</h4>
<p>Многие начинающие дизайнеры проводят массу часов, выбирая между гарнитурами с засечками и без. Как всегда, все зависит от ситуации, но выбор никогда не должен основываться на личных предпочтениях дизайнера или клиента. <a href="http://asserttrue.blogspot.se/2013/01/the-serif-readability-myth.html">Не существует разницы в читабельности между этими двумя типами гарнитур</a>, особенно в нашу эпоху высокой пиксельной плотности экранов устройств.</p>
<p>Иногда проект позволяет нам сгладить углы, и если вы сделали домашнюю работу и изучили контент, наши решения могут основываться на фактах. Например, если мы демонстрируем вертикально-ориентированные данные (таблицу валютных курсов или список цен на продукты), тогда, вероятно, гарнитура без засечек будет более приемлемой, поскольку антиква как правило задает горизонтальное оринетирование текста. С другой стороны, поскольку засечки “ведут” горизонтальную линию текста, антиква больше подходит для линейно-ориентированного материала или в тех случаях, когда вертикальное пространство ограничено.</p>
<p>Мы часто забываем отойти на шаг назад и взглянуть на картину проекта в целом, хотя и знаем о такой необходимости. Мне, например, нравится объяснение Виталия Фридмана (Vitaly Friedman) и Эллиота Джей Стокса (Elliot Jay Stocks) по поводу их решения использовать шрифт без засечек для основного текста в Smashing Magazine. Взглянув на страницу “с высоты птичьего полета”, объединив в своем восприятии разметку страницы и интерфейс, они заключили следующее:</p>
<blockquote><p>“Поскольку в Smashing Magazine есть много визуальных составляющих – скриншоты, кнопки, назойливая реклама – шрифт без засечек для основного текста будет уравновешивать этот хаос и восприниматься более гармонично ”<br />
– Виталий Фридман и Эллиот Джей Стокс</p></blockquote>
<h1>Читабельность букв</h1>
<p>Другой важный тест на доступной восприятия – проверка того, как сильно отличается каждый глиф от остальных в рамках одной гарнитуры. Дизайнеры используют <a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BD%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0">панграммы</a>, или небольшие тестовые тексты, для оценки и сопоставления гарнитур, например (для английского языка): “The quick brown fox jumps over the lazy dog,” “Handgloves” и “Hamburgefonstiv”. Текст “aegh! iIl1 0O”, составленный дизайнером <a href="http://v1.jontangerine.com">Джоном Таном</a> (Jon Tan) идет дальше: он представляет собой хороший способ одновременно оценить внешний вид гарнитуры и проверить различия между символами “i,” “I,” “l” и“1”, “0” и “O”.</p>
<p>Мы можем расширить такие панграммы и включить в них курсив, <a href="http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%28%D1%88%D1%80%D0%B8%D1%84%D1%82%29">капитель</a> и цифры. Например, мы можем продолжить такую строку буквой “e”, написанной курсивом, чтобы убедиться, что она не слишком похожа на перевернутую строчную “а”, что особенно важно для малых кеглей, когда детали начертания теряются.</p>
<p><img src="http://habrastorage.org/storage2/fda/e38/bff/fdae38bffda5cab9b7c6451adedcc3c3.jpg" alt="" /><br />
<em>Старайтесь избегать неопределенных форм в начертании символов. Сверху вниз: League Gothic, Gill Sans, Myriad Pro, Neue Helvetica.<br />
</em></p>
<h1>Международные отношения</h1>
<p>Поддержка иностранных посетителей ресурса – абсолютная необходимость. Если вы собираетесь перевести весь вебсайт на язык, вам незнакомый (например, арабский или вьетнамский), тогда вам вероятно понадобится личная встреча с местным специалистом по типографии. Однако, большинство веб-дизайнеров будут разрабатывать профили пользователей в расчете на интернациональную аудиторию, и в этой связи мы должны убедиться, что все символы национального языка поддерживаются выбранной гарнитурой, и что она может работать с языками, менее распространенными, нежели английский или испанский. В каждом языке есть парочка узких мест в части начертания символов.</p>
<p>Довольно необычно видеть такие последовательности символов, как “gy” в венгерском или “ij” в ряде южнославянских диалектов, не говоря уже о <a href="http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B3%D1%80%D0%B0%D1%84">диграфах</a> (“ch,” “dž,” “ij,” “lj” и “ty”) и <a href="http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B3%D1%80%D0%B0%D1%84_%28%D0%BE%D1%80%D1%84%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%29">триграфах</a> (“dzs” and “sch”), которые обычно изображаются последовательностью соответственно двух или трех глифов.</p>
<p>Любопытно, что в <a href="http://ru.wikipedia.org/wiki/%D0%98%D1%82%D0%B0%D0%BB%D1%8C%D1%8F%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82">итальянском алфавите</a> буквы “k,” “j,” “w,” “x” и “y” используются для слов, заимствованных из других языков, часто только в разговорной речи – например “k”, как акцентированное “c” – нечто подобное я услышал, когда подрезал одного парня в пробке в последней поездке по Италии. Но я отвлекся. Язык со слегка усеченным алфавитом содержит, как правило, часто встречающиеся комбинации букв вроде “cc,” “ll,” “tt” и “zz”, находящиеся рядом – или окруженные – буквами “o” или “i”. Нетрудно понять, что подобные комбинации могут стать проблемой при разрядке набранного текста.</p>
<p>В юго-восточной Европе фамилии часто заканчиваются на “č” или “ć”, и никому не понравится, что его имя или фамилия лишились <a href="http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%BA%D1%80%D0%B8%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%BD%D0%B0%D0%BA%D0%B8">диакритических знаков</a>, или, хуже того, отображаются нечитаемыми символами. Датчане и норвежцы, например, используют знак “ø”, а немцы – “ß” – и это одна только латиница.</p>
<p><img src="http://habrastorage.org/storage2/4a9/e84/e60/4a9e84e60519f71af922481b26ad729f.jpg" alt="" /><br />
<em>Изучайте символы и комбинации символов языка вашей целевой аудитории.</em></p>
<p>Для того, чтобы правильно отображать расширенную латиницу, нам приходится выбирать гарнитуры, включающие в себя все символы, использующиеся в Центральной Европе (как вариант – использовать платные гарнитуры). Но в случае вышеупомянутых комбинаций в менее общеупотребительных языках, стоит рассмотреть те гарнитуры, которые адаптированы именно для этих языков, потому что в CSS нет поддержки ручного кернинга (кроме шуток).</p>
<h1>Нам легче читать знакомые шрифты, но мы лучше запоминаем материал на незнакомых гарнитурах</h1>
<p>Считается, что людям легче <a href="http://www.usability.gov/pdfs/chapter11.pdf">читать знакомые шрифты</a> (PDF, 11.5 MB). Даже эксперты – к примеру, <a href="http://en.wikipedia.org/wiki/Zuzana_Licko">Жужана Лико</a> (Zuzana Licko) и <a href="http://ru.wikipedia.org/wiki/%D0%A8%D0%BF%D0%B8%D0%BA%D0%B5%D1%80%D0%BC%D0%B0%D0%BD%D0%BD,_%D0%AD%D1%80%D0%B8%D0%BA">Эрик Шпикерманн</a> (Erik Spiekermann) – утверждают, что нам легче читать тот шрифт, с которым мы сталкиваемся чаще всего. Изучите историю гарнитуры, которую вы рассматриваете, как подходящую, и сопроставьте ее с тем, с чем ваща целевая аудитория сталкивается чаще всего.<br />
Шрифт <a href="http://www.type-together.com/Skolar">Skolar</a>, разработанный <a href="http://davi.cz">Дэвидом Брезиной</a> (David Brezina), был создан для научных работ и публикаций на различных языках, то есть для тех случаев, в которых люди привыкли пользоваться Times New Roman. Skolar – небанальный и современный шрифт, хоть в чем-то он и напоминает Times для того, чтобы целевая аудитория воспринимала его адекватно. Это хороший пример безопасного перехода к современной типографике, однако я настоятельно рекомендую вам экспериментировать и рассматривать различные альтернативы, применимые к вашей целевой аудитории.</p>
<p><img src="http://habrastorage.org/storage2/6fc/931/721/6fc931721a5b2ec970765b77fed5c75f.jpg" alt="" /><br />
<em>Skolar как замена Times и Times New Roman? А вы видите различия между двумя Times?</em></p>
<p>Недавнее исследование, проведенное Коннором Дайманд-Йауманом (Connor Diemand-Yauman), Даниелем Оппенгеймером (Daniel M. Oppenheimer) и Эриккой Воган (Erikka B. Vaughan) по вопросам эффектов потери беглости речи в процессе обучения – “<a href="http://web.princeton.edu/sites/opplab/papers/diemand-yauman_oppenheimer_2010.pdf">Effects of Disfluency on Educational Outcomes</a>” (PDF, 1.3 MB) показало, что информация, отображенная трудночитаемыми шрифтами, запоминается легче, чем информация, отображенная шрифтами, которые проще читать. Исследование продемонстрировало, что более глубокая обработка информации мозгом, вызванная затруднением чтения, приводит к стимулированию работы памяти. Это не означает, что мы должны немедленно выбрать самый дикий шрифт на планете – просто в том, чтобы рассмотреть альтернативы привычным шрифтам, тоже есть смысл.</p>
<h1>Отображение гарнитур в век адаптивного дизайна</h1>
<p>Современный Интернет заново открыл уплотненные гротески и специализированные декоративные гарнитуры. Они добавляют тексту стиля и (визуально) придают вес, особенно хорошо работая в качестве элементов привлечения внимания при указании редакционных данных или при расстановке акцентов в длинном тексте. В данной статье не рассматриваются стилистические предпочтения, поскольку заголовки в сети чаще всего написаны так, чтобы соответствовать требованиям SEO-оптимизации и привлекать больше посетителей, что в некоторой степени отличается от функций заголовков в печатных изданиях. Давайте, однако, поговорим о ловушках, таящихся на пути тех, кто использует уплотненные гарнитуры в Сети, где контент никогда не бывает по-настоящему статичен.</p>
<p>Если опустить вопросы изменения ориентации экрана и формата изображения, то заголовок из нескольких слов, написанный шрифтом типа Skyline (то есть с использованием уплотненной гарнитуры без засечек) может хорошо вписаться в страницу с альбомной ориентацией, предназначенную для отображения на широкоформатных мониторах. В то же самое время, такой заголовок может занимать слишком много места на экране смартфона с книжной ориентацией страницы, особенно когда текст, ранее умещавшийся в одну строчку, разбивается на две. Обыкновенное уменьшение кегля помогает, однако результат может стать далеко не таким удобочитаемым, каким был вначале.</p>
<p>Обратное явление также имеет место. Если во главу угла ставятся мобильные устройства, для которых крупный заголовок на маленьком экране смотрится уместно, то такое же соотношение размера заголовка и страницы для десктопа может быть пугающим.<br />
Разреженная версия уплотненного шрифта для меньшего кегля может стать хорошим решением в случае, когда необходимо отображение заголовка на вертикально-ориентированном экране. Когда же разреженный текст будет казаться слишком мелким, его можно будет заменить на уплотненную версию.</p>
<p><img src="http://habrastorage.org/storage2/6d6/2c4/7d4/6d62c47d47354baa12bb47578bbb5f97.jpg" alt="" /><br />
<em>Этот заголовок, написанный шрифтом League Gothic в одну строку, становится крайне неразборчивым на экране мобильного устройства. Разбитый на две строки, он занимает слишком много места.</em></p>
<p><img src="http://habrastorage.org/storage2/9a5/b9f/3a2/9a5b9f3a2f98758cce8d5267995a610c.jpg" alt="" /><br />
<em>Вариант решения проблемы с применением Nimbus Sans Condensed и Nimbus Sans Extended.</em></p>
<p>Сочетания гарнитур. Гарнитуры сочетают для усиления акцента или привлечения внимания к дизайну. В большинстве случаев, однако, стоит читателю втянуться в процесс, и правильно составленная структура и композиционная организация текста будут способствовать легкости чтения в гораздо большей степени, чем эстетические достоинства нескольких гарнитур сразу, особенно если речь идет об экранах с низким разрешением, где мелкие различия и типографические детали будут практически неразличимыми. Считайте этот совет последней попыткой отговорить вас использовать в тексте совершенно разные шрифты, за исключением случаев крайней необходимости.</p>
<p>В качестве практического совета, как избежать типографической катастрофы, советую вам сочетать гарнитуры с совпадающей высотой литеры “х”. Сопоставляя высоту литеры “х” одного и того же кегля, вы сможете легко определить, могут ли слова, написанные выбранными вами шрифтами, сосуществовать в пределах одного текста. Всегда помните о том, что выбор гарнитуры для веб-страниц должен быть рассчитан на самые разные сценарии просмотра и типы устройств. Получается, что создание типографской гармонии – далеко не самая простая задача, особенно если элементы, расположенные на одном уровне, должны иметь разный кегль, чтобы компенсировать неодинаковую высоту букв.</p>
<p><img src="http://habrastorage.org/storage2/bc9/ca7/672/bc9ca7672b643391b703918047644a42.jpg" alt="" /><br />
<em>Шрифт Aller в сочетании с Minion Pro, Georgia и Adelle. Minion Pro и Georgia “проседают” по высоте букв.</em></p>
<h1>Подход для тех, кто не рискует</h1>
<p>Самое простое решение при сочетании гарнитур – следовать соотношениям шрифтов и собственному здравому смыслу. Гарнитура, которая является частью большой системы может сочетаться с “членами своей семьи” по любому из параметов (плотность, ширина и засечки), так что можете быть уверены, что сочетание гарнитур из одного семейста будет процессом безболезненным. Поищите гарнитуры в расширенных семействах или “супер-семьях”, включающих в себя больше шрифтов, чем обычный набор (стандартный, курсив, полужирный, полужирный курсив). Расширенные семейства включают в себя массу шрифтов, начиная с облегченных до полужирных или даже особенно жирных, тогда как супер-семейства, также называемые типографскими системами, содержат еще и варианты с засечками и без, а также варианты с различной степенью плотности.</p>
<p>Не стоит слишком переживать о точных классификациях, поскольку категории часто меняются от одной типографской компании к другой. Кроме того, границы между расширенными и супер-семьями не всегда четко определены. Например, некоторые семейства включают в себя антикву и гротеск различной плотности, но не различной жирности. Помните, что многие семейства шрифтов содержат лишь ограниченный набор базовых стилей, хотя только несколько десятков гарнитур являются достаточно универсальными, чтобы удовлетворять всем типографским потребностям (несколько десятков среди сотен тысяч существующих шрифтов – величина крайне малая). Если у вас возникают проблемы при сочетании шрифтов, советую начать с универсальных коллекций гарнитур.</p>
<p><img src="http://habrastorage.org/storage2/925/846/219/925846219619ae49104a8d88ed78bafb.jpg" alt="" /><br />
<em>Шрифт JAF Bernino Sans содержит большое количество вариаций плотности и жирноти. Буквы, залитые серым – ложный курсив, также называемый наклонным прямым шрифтом. Некоторые браузеры могут деформировать шрифты в наклонную форму на лету, используя CSS, но ложный курсив определенно является типографским преступлением.</em></p>
<p>Гарнитуры, разработанные одним и тем же дизайнером, обычно хорошо сочетаются, потому что пропорции литер, их формы, штрихи и углы содержат единую ДНК. Обратите внимание на шрифты, разработанные такими дизайнерами, как: Jos Buivenga, Veronika Burian, Matthew Carter, Nikola Đurek, Adrian Frutiger, Jose Scaglione, Mark Simonson и Erik Spiekermann (это всего лишь несколько моих кумиров) и попытайтесь проанализировать индивидуальный почерк каждого.</p>
<p>Как последний вариант, вы можете использовать гарнитуры одной компании, поскольку компании как правило предлагают гарнитуры, сочетающиеся между собой. Опытный дизайнер подписывается на рассылки, посвященные новостям типографики и, таким образом, узнает об огромном количестве проверенных комбинаций шрифтов, подходящих для многократного использования, как утверждают известные дизайнеры и специалисты по типографии, работающие в компаниях, разрабатывающих шрифты. В качестве бонуса – ваша папка с материалами рассылок рано или поздно станет хорошим архивом полезной информации.</p>
<p>Если вы все еще хотите экспериментировать самостоятельно, следите за тем, чтобы между гарнитурами сохранялся достаточно сильный контраст для поддержания баланса. Избегайте гарнитур, откровенно “соперничающих” между собой – это создаст слишком сильный дисбаланс и будет угнетать читателя. С другой стороны, если две гарнитуры слишком близки друг другу, читателя будет раздражать то, что он не видит четких различий. Сочетание вариантов гарнитуры, близких по плотности (таких, как стандартный и полужирный шрифт или полужирный и жирный) не должно входить у вас в привычку, за исключением случаев, когда вы абсолютно уверены в такой необходимости.</p>
<p>Как и в кулинарии, начните с приготовления простых, съедобных блюд. Затем, приобретя некоторый опыт и никого не отравив, вы можете спокойно убрать книги с рецептами на полку и начать экспериментировать с экзотическими приправами и выдумывать собственные приемы. Если вым интересны практические приемы, вот несколько полезных статей:<br />
• “Лучшие практики сочетания шрифтов”, Дуглас Бонневиль (“<a href="http://www.smashingmagazine.com/2010/11/04/best-practices-of-combining-typefaces/">Best Practices of Combining Typefaces</a>”, Douglas Bonneville)<br />
• “Какой использовать шрифт? – пять принципов выбора и использования гарнитур”, Ден Майер (“<a href="http://www.smashingmagazine.com/2010/12/14/what-font-should-i-use-five-principles-for-choosing-and-using-typefaces/">What Font Should I Use?’: Five Principles for Choosing and Using Typefaces</a>”, Dan Mayer)<br />
• “Как выбрать гарнитуру”, Дуглас Бонневиль (“<a href="http://www.smashingmagazine.com/2011/03/24/how-to-choose-a-typeface/">How to Choose a Typeface</a>”, Douglas Bonneville)</p>
<h2>Редакторские приемы</h2>
<p>Особые декоративные шрифты подходят для коротких отрывков текста, таких как заголовки и врезки, потому что они задают колорит и атмосферу текста и позволяют разбивать длинные отрывки (вы же помните про оценку длительности чтения?). Текстовые гарнитуры утилитарны и подходят для продолжительного чтения. Чтение в какой-то момент может наскучить, особенно если сопровождается отвлекающими внимание элементами, как бывает при чтении с компьютера, подключенного к Интернету.</p>
<blockquote><p>“Дизайнерам нравится даже блеклый шрифт, что для читателя совершенно неприемлемо”<br />
– Эрик Шпикерманн</p></blockquote>
<p>Включите в текст внезапный разрыв, сопровождающийся заголовком или врезом, чтобы поддерживать внимание читателя. Врезы, подчеркивающие важные фрагменты текста, только выиграют от декоративного шрифта. Поскольку заголовки – часть основного текста, для них лучше выбирать вариации базового шрифта (например, капитель). Как я подчеркивал ранее, это скорее совет, нежели железное правило.</p>
<h2>Мы несем ответственность</h2>
<p>Есть два важных фактора, которые могут оказать влияние на ваше решение. Во-первых, если читателю не нравится ваш шрифт, он может изменить его благодаря настройкам своего устройства или приложения. И если он это сделал, то скорее всего изменил шрифт на нечто более привычное, то есть полностью разрушил вашу систему гарнитур. Это как вернуться в те дни, когда необходимо было учитывать соотношение высоты строки в абсолютных единицах и размера букв в Internet Explorer в относительных единицах (мне так рассказывали), поэтому даже небольшое изменение кегля приводило к полному хаосу на странице.</p>
<p>Во-вторых, отсутствие сгибов и любых других физических границ страницы – одновременно и благословение, и проклятье. С одной стороны, пространство для контента на экране становится буквально бесконечным. С другой стороны, разработка гармоничной разметки страницы усложняется, потому что в большинстве случаев мы не можем увидеть всю страницу целиком. Именно поэтому редакторские приемы становятся ценными инструментами, помогающими нам создать лучшие впечатление от процесса чтения. Ведь если пользователь единожды прокрутил бегунок в низ страницы, это не значит, что он обязан дочитать до конца.</p>
<p>Разрабатывая дизайн для всех мы, тем не менее, не должны принимать во внимание все подряд. Мы должны признать, что наш дизайн типографики будет просматриваться с разных устройств на экранах различной плотности. Мы должны убедиться в том, что текст доступен и читается легко в условиях самых разнообразных сочетаний пространства, времени, способности людей к восприятию текста, социальных и психологических переменных. Дни непреложных правил прошли, и сейчас мы в первую очередь несем отвественность за наши знания о проекте, позволяющие нам принимать решения, основанные на фактах, и проектировать убедительные дизайн-концепции.</p>
<blockquote><p>Перевел: <a href="http://habrahabr.ru/users/dmitrykabanov/" target="_blank">dmitrykabanov</a><br />
Перевод: <a href="http://habrahabr.ru/company/uidesign/blog/174517/" target="_blank">http://habrahabr.ru/company/uidesign/blog/174517/</a><br />
Оригинал: <a href="http://www.smashingmagazine.com/2013/02/18/designing-reading-experience/" target="_blank">http://www.smashingmagazine.com/2013/02/18/designing-reading-experience/</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/funktsional-nost-vazhnee-formy-proektiruya-dlya-chitatelya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кроссбраузерная кастомизация системного скроллбара</title>
		<link>http://www.empd.ru/post/krossbrauzernaya-kastomizatsiya-sistemnogo-skrollbara/</link>
		<comments>http://www.empd.ru/post/krossbrauzernaya-kastomizatsiya-sistemnogo-skrollbara/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 13:57:17 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=425</guid>
		<description><![CDATA[Проблема размещения непрерывного контента произвольного объёма в экран, или окно, фиксированных размеров, существует несколько десятков лет. Примерно столько же существует и лучшее решение этой проблемы: элемент графического интерфейса — скроллбар.
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Оригинал статьи: <a href="http://habrahabr.ru/company/2gis/blog/169359/" target="_blank">http://habrahabr.ru/company/2gis/blog/169359/</a><br />
Код решения можно скачать с Github: <a href="https://github.com/Diokuz/baron" target="_blank">https://github.com/Diokuz/baron</a><br />
Демо: <a href="http://diokuz.github.com/baron/" target="_blank">http://diokuz.github.com/baron/</a></p></blockquote>
<p>Проблема размещения непрерывного контента произвольного объёма в экран, или окно, фиксированных размеров, существует несколько десятков лет. Примерно столько же существует и лучшее решение этой проблемы: элемент графического интерфейса — скроллбар.<img class="alignnone size-full wp-image-426" title="069dc074806a31de761112f84fd797da" src="http://www.empd.ru/wp-content/uploads/2013/02/069dc074806a31de761112f84fd797da.png" alt="" width="557" height="328" /></p>
<p>Ниже можно узнать, как в ближайшее время будет работать скролл в 2ГИС Онлайн.</p>
<p>Механизм системного скролла реализуется на уровне базовых возможностей операционной системы, поэтому с уверенностью можно сказать, что он всегда лучше js-эмуляции: он производительнее, работает независимо от JavaScript и реализует все необходимые «фичи» системы для разного типа устройств.</p>
<p>Дизайн же системного скроллбара, особенно Windows младше 8 версии, способен изуродовать значительную часть сайтов интернета. То, что не все согласны с этим мириться, подтверждается фактом наличия большого числа решений, программно меняющих системный скроллбар на <a href="http://slodive.com/web-development/jquery-scroll/">кастомный</a>.</p>
<p>Сейчас в <a href="http://maps.2gis.ru/?utm_source=news&amp;utm_medium=habr&amp;utm_campaign=post_baron">2ГИС Онлайн</a> (и, соответственно, в <a href="http://api.2gis.ru/?utm_source=news&amp;utm_medium=habr&amp;utm_campaign=post_baron">API 2ГИС</a>) мы используем FleXcroll: он эмулирует механизм скролла и не подходит нам по ряду причин:</p>
<ul>
<li>Не является кроссплатформенным решением (в частности, плохо работает на Mac)</li>
<li>Как и любой эмулятор в принципе, имеет проблемы с производительностью</li>
<li>Не имеет встроенного механизма фиксации заголовков.</li>
</ul>
<p>Все эти факторы заставили нас задуматься над двумя вопросами:</p>
<ul>
<li>существует ли нужное нам готовое решение, или необходимо создавать собственное?</li>
<li>возможно ли в принципе сохранить системный механизм скролла, но полностью заменить его дизайн?</li>
</ul>
<p>Нами были сформированы основные требования к решению, которое должно менять визуальное представление скроллбара:</p>
<ol>
<li>Системный механизм скролла должен быть сохранён: коррекции подвергается только его дизайн.</li>
<li>Общий размер всех зависимостей должен быть минимизирован. В идеальном случае их не должно быть вообще. Должен быть минимизирован размер и самого решения.</li>
<li>Должен присутствовать механизм фиксации заголовков контента при выходе их за поле зрения, либо простой интерфейс для добавления такого механизма (подробнее об этом пункте см. ниже).</li>
</ol>
<p>&nbsp;</p>
<h4>Ограничения</h4>
<p>На момент написания статьи, более или менее гибко кастомизировать скроллбар средствами CSS можно только в браузерах на движке webkit. Цвета скроллбара можно поменять в браузере Internet Explorer. В остальных браузерах поддержка кастомизации скроллбара через CSS полностью отсутствует. Отчасти это связано с жёсткой <a href="http://lists.w3.org/Archives/Public/www-style/2001Sep/0050.html">позицией w3c</a>:</p>
<blockquote><p>There are just some things that CSS should not do, full stop.</p></blockquote>
<h4>Существующие решения</h4>
<p><img src="http://habrastorage.org/storage2/f8d/530/629/f8d5306291f2e87ca94d1625f8bbc2a2.png" alt="" /></p>
<p>Из того большого числа js-библиотек более половины подменяют нативный механизм скролла. Это значит, что для враппера свойство overflow выставляется в значение hidden, а вложенный контейнер с нужным нам контентом меняет свою абсолютную позицию при генерации событий, связанных со скроллом (например, mousewheel). К таким решениям можно отнести: <a href="http://jscrollpane.kelvinluck.com/">jScrollPane</a>, <a href="http://code.google.com/p/scrollbarpaper/">Scrollbar Paper</a>, <a href="http://manos.malihu.gr/jquery-custom-content-scroller/">jQuery Custom Scrollbar plugin</a>, <a href="http://www.hesido.com/web.php?page=customscrollbar">FleXcroll</a>, <a href="http://baijs.nl/tinyscrollbar/">Tiny Scrollbar</a> и многие другие.</p>
<p>При таком подходе возникает сразу два фундаментальных недостатка: отсутствие кроссбраузерности и отсутствие же кроссплатформенности. Дело в том, что интерфейс событий, генерируемых действиями пользователя, при помощи которых пользователь что-то скроллит, существенно отличается от браузера к браузеру: с точки зрения стандартов тут творится настоящий бардак. Более того, последовательность и логика «бросания» событий серьёзно отличается и между платформами. Например, трекпады на платформе Mac при скролле генерируют события типа Wheel с большей частотой, чем колесо обычной мыши, что приводит к <a href="http://maps.2gis.ru/#/?history=project/moscow/center/37.596986%2C55.748488/zoom/11/state/firms/what/%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%BC%D0%B0%D1%82/action/search/page/1/sort/relevance/rpage/1/ppage/1">чересчур быстрому скроллу</a> в ряде подобных решений.</p>
<p>Именно эти недостатки эмуляции скролла привели нас к формулированию первого пункта требований.</p>
<p>Многие решения изначально позиционируются как плагины к jQuery. В ситуации, когда мы используем jQuery по частям, возникает проблема экономии трафика. Проблема существенно растёт при наличии у плагина зависимости от куда более тяжеловесного jQuery UI. Это касается, например, ShortScroll и Vertical Scroll. А также от ряда других библиотек: например, один из немногих jQuery плагинов, сохраняющих нативный механизм скролла, Scrollbars, зависит от 4 плагинов: event.drag, resize, mousehold и mousewheel общим весом более 10 кб.</p>
<p>Третьему пункту требований не удовлетворяет ни одно из найденных нами решений.</p>
<h4>Собственное решение</h4>
<p>У решения есть две основных задачи: 1) скрыть системный скроллбар и 2) отобразить кастомный скроллбар.</p>
<p>Для простоты будем рассматривать только вертикальный скроллбар — в нашем случае, как и в большинстве других, нужен только он. Кроме того, это экономит объём выходного кода. Для случая с горизонтальным скроллбаром рассуждения расширяются по аналогии.</p>
<p>Для начала, построим html структуру:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div class='wrapper' id='wrapper'&gt;
    &lt;div class='scroller' id='scroller'&gt;
        &lt;article class='container' id='container'&gt;
        &lt;/article&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre></div></div>

<p>где container — собственно, то, что мы хотим скроллировать; scroller — блок, в который по высоте не помещается container, но у него выставлено свойство overflow-y: scroll, что приводит к появлению системного скроллбара у его правой границы; wrapper — окно с шириной чуть меньшей, чем у scroller и свойством overflow: hidden. Ширина меньше ровно на ширину скроллбара scroller. К сожалению, средствами CSS невозможно точно узнать ширину системного скроллбара. Например, не работает вариант с выставлением ширины 125% для scroller и 80% для container, при котором, казалось бы, ширины container и wrapper должны точно совпасть. Можно сделать scroller заведомо шире, а wrapper и container выставить одинаковую ширину, но такой способ не подходит для резиновой вёрстки и порождает баг в webkit браузерах (см. ниже). Введём js-переменные:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> wrapper <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'wrapper'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
scroller <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'scroller'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Теперь мы можем вычислить ширину системного скроллбара: scroller.offsetWidth — это ширина scroller, включающая в себя border, padding, а также системный скроллбар. Если мы обнулим border и padding при помощи CSS, и вычтем scroller.clientWidth, мы получим искомую ширину скроллбара в пикселях.</p>
<p>В webkit-браузерах существует особенность, заставляющая скроллиться элементы при выделении в них текста в горизонтальном направлении, даже при overflow-x: hidden. То есть scroller начинает двигаться по горизонтали внутри меньшего по ширине wrapper, в результате чего обнажается скрытый нами системный скроллбар. К счастью, в webkit-браузерах, и только в них, мы можем обнулить ширину скроллбара средствами CSS, после чего ширины всех трёх блоков в точности совпадут и места для горизонтального скролла просто не будет:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.scroller</span><span style="color: #00AA00;">:</span><span style="color: #3333ff;">:-webkit-scrollbar </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Теперь нарисуем и спозиционируем кастомный скроллбар. Для этого минимально усложним html структуру на 1 элемент, который и будет полностью отвечать за визуальное представление скроллбара:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div class='wrapper' id='wrapper'&gt;
    &lt;div class='scroller' id='scroller'&gt;
        &lt;article class='container' id='container'&gt;
        &lt;/article&gt;
        &lt;div class='scroller__bar'&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre></div></div>

<p>Здесь важно отметить, что для нашей задачи не требовалась прорисовка кнопок «вверх» и «вниз», а также подстилающего «трека». Впрочем, никаких ограничений для их реализации нет. При реализации драга нарисованного кастомного скроллбара, главное — запретить выделение текста внутри скроллируемого контента. Для этого достаточно сделать вот такой бинд:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> dontStartSelect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> selection<span style="color: #009900;">&#40;</span>on<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>on<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'selectstart'</span><span style="color: #339933;">,</span> dontStartSelect<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">off</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'selectstart'</span><span style="color: #339933;">,</span> dontStartSelect<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
event<span style="color: #009900;">&#40;</span>bar<span style="color: #339933;">,</span> <span style="color: #3366CC;">'mousedown'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    selection<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Disable text selection in IE8</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
event<span style="color: #009900;">&#40;</span>document<span style="color: #339933;">,</span> <span style="color: #3366CC;">'mouseup blur'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    selection<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Enable text selection in IE8</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как видите, большая часть кода нужна для браузера IE8, который пока, к сожалению, нельзя сбрасывать со счетов. Обратите внимание, что сброс «нажатого» состояния мыши должен происходить не только при отпускании кнопки мыши, но и при потере страницей фокуса (blur).</p>
<h4>Прилипающие заголовки</h4>
<p>Некоторые элементы внутри container всегда должны быть видны пользователю. Например, это могут быть заголовки разделов какой-то статьи, при клике на которые (это дополнительный функционал, который выходит за рамки решения) контент «перематывался» бы к кликнутому заголовку.</p>
<p>Ни абсолютное (относительно scroller), ни относительное (относительно своих начальных позиций) позиционирование заголовков в чистом виде, в данном случае не подходит. Первое — по причине схлапывания контента, окружающего заголовок и соответствующих им рывков при скролле; второе — по причине нативных неустранимых transition&#8217;ов у браузера Internet Explorer для скролла, которые приводят к дрожанию всех зафиксированных заголовков.</p>
<p>В связи с этим, html структуру пришлось ещё немного усложнить, обернув все заголовки в врапперы, задача которых — сохранять место под заголовками при их вырывании из потока во время фиксации абсолютным позиционированием. В принципе, аналогичного результата можно добиться подбором отрицательных margin&#8217;ов для заголовков и секций, к которым они относятся — тогда можно обойтись и без врапперов заголовков.</p>
<p>При каждом скролле для каждого заголовка необходимо проверять условие:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">scroller.<span style="color: #660066;">scrollTop</span> <span style="color: #339933;">-</span> H<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">offsetTop</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> Sum<span style="color: #009900;">&#40;</span>H<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">offsetHeight</span><span style="color: #339933;">,</span> j<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span>..<span style="color: #660066;">i</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span>
scroller.<span style="color: #660066;">scrollTop</span> <span style="color: #339933;">-</span> H<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">offsetTop</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> scroller.<span style="color: #660066;">clientHeight</span> <span style="color: #339933;">-</span> Sum<span style="color: #009900;">&#40;</span>H<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">offsetHeight</span><span style="color: #339933;">,</span> j<span style="color: #339933;">=</span>i..<span style="color: #660066;">n</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>где H — массив элементов заголовков; i — номер заголовка, меняется в диапазоне от 0 до n-1; scroller.scrollTop — виртуальное расстояние от верхней границы container до верхней границы видимой части container; H[i].offsetTop — расстояние от верхней границы container до верхней границы заголовка H[i].</p>
<p>Выполнение обоих условий означает, что заголовок i находится где-то в видимой области, не конфликтует с другими заголовками по положению, и его фиксация не требуется. Нарушение первого условия означает, что заголовок пытается скрыться сверху, а второго — снизу. В обоих случаях требуется фиксация.</p>
<h4>Пробрасывание события mousewheel</h4>
<p>В webkit браузерах мы столкнулись с неприятным багом: событие mousewheel не пробрасывалось с фиксированных заголовков вверх к scroller. Это создавало эффект поломки (внезапного прекращения) скролла при попадании под курсор фиксированного заголовка (например, в результате всё того же скролла). То есть, пользователь крутит колесо мыши, под курсор попадает заголовок, фиксируется, и, внезапно, скролл перестаёт работать (точнее, скроллиться начинает вся страница).</p>
<p>К счастью, в webkit браузерах (а нам требовалось обратиться только к ним) есть такая возможность:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>headers<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mousewheel'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> evt <span style="color: #339933;">=</span> document.<span style="color: #660066;">createEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'WheelEvent'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    evt.<span style="color: #660066;">initWebKitWheelEvent</span><span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">originalEvent</span>.<span style="color: #660066;">wheelDeltaX</span><span style="color: #339933;">,</span> e.<span style="color: #660066;">originalEvent</span>.<span style="color: #660066;">wheelDeltaY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    scroller.<span style="color: #660066;">dispatchEvent</span><span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Пробрасываем событие на scroller</span>
    e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Останавливаем скролл страницы</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Конечно, это сокращённая версия кода: необходимо проверять наличие соответствующих функций и типа события, чтоб не генерировать ошибки в других браузерах.</p>
<h4>Пример</h4>
<p>Для минимизации объёма js-кода и зависимостей был использован подход, при котором библиотека не является плагином jQuery, хотя по-умолчанию использует его.</p>
<p>Например, в самом простом случае (без фиксации заголовков), инициализация выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">baron<span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.wrapper'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> scroller<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.scroller'</span><span style="color: #339933;">,</span> container<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.container'</span><span style="color: #339933;">,</span> bar<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.scroller__bar'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Причём $(&#8216;.wrapper&#8217;) может быть массивом html объектов — проинициализируется каждый из них.</p>
<p>Если вы хотите фиксации заголовков, ограничения верхнего положения скроллбара, и использования альтернатив jQuery, инициализация немного усложняется:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">baron<span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.test_advanced'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    scroller<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.scroller'</span><span style="color: #339933;">,</span>
    container<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.container'</span><span style="color: #339933;">,</span>
    bar<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.scroller__bar'</span><span style="color: #339933;">,</span>
    barOnCls<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.scroller__bar_state_on'</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Класс, навешиваемый скроллбару, когда он должен быть видимым</span>
    barTop<span style="color: #339933;">:</span> <span style="color: #CC0000;">40</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Ограничитель позиции скроллбара сверху</span>
    header<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.header__title'</span><span style="color: #339933;">,</span>
    hFixCls<span style="color: #339933;">:</span> <span style="color: #3366CC;">'header__title_state_fixed'</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Класс, навешиваемый зафиксированным заголовкам</span>
    selector<span style="color: #339933;">:</span> qwery<span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Селектор</span>
    event<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>elem<span style="color: #339933;">,</span> event<span style="color: #339933;">,</span> func<span style="color: #339933;">,</span> off<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// Менеджер событий</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>off<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            bean.<span style="color: #660066;">off</span><span style="color: #009900;">&#40;</span>elem<span style="color: #339933;">,</span> event<span style="color: #339933;">,</span> func<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            bean.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span>elem<span style="color: #339933;">,</span> event<span style="color: #339933;">,</span> func<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    dom<span style="color: #339933;">:</span> bonzo <span style="color: #006600; font-style: italic;">// Библиотека для работы с DOM</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Для менеджера событий пришлось сделать обёртку, поскольку его интерфейс отличается в разных библиотеках. В принципе, можно обернуть нативные функции типа addEventListener и отказаться от специализированного менеджера событий.</p>
<h4>Тестирование</h4>
<p>В тестировании принимали участие актуальные версии браузеров Chrome, Firefox, Opera, Safari и Internet Explorer (IE) на платформах Windows, Mac и iOs (тестировались, конечно, только существующие версии браузеров <img src='http://www.empd.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Кроме этого, тестировался IE9 и IE8. Все тесты на всех браузерах проходят нормально.</p>
<p>Особенность предлагаемого в данной статье решения заключается в том, что даже в случае каких-то ошибок в JavaScript, скролл всё равно будет работать, поскольку он системный, поэтому категорию риска попадают лишь браузеры устаревших версий Android и Opera Mini, в которых системный скролл на элементах не реализован, или реализован плохо.</p>
<h4>Итог</h4>
<p>Предложенное решение позволяет сохранить механизм системного скролла, заменить его дизайн, полностью отказаться от жестких зависимостей от других библиотек, и уложиться в 998 байт сжатого кода (минифицированного и сжатого gzip). В довесок к этому, есть механизм фиксации каких-либо элементов скроллируемого контента (например, заголовков).</p>
<p>К недостаткам можно отнести отсутствие горизонтального скроллбара и контролов управления вертикальным.</p>
<p>Код решения можно скачать с <a href="https://github.com/Diokuz/baron">Github</a>.<br />
<a href="http://diokuz.github.com/baron/">Демо</a>.</p>
<p>Внедрение данного решения запланировано на начало марта.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/krossbrauzernaya-kastomizatsiya-sistemnogo-skrollbara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Favicon: A Changing Role</title>
		<link>http://www.empd.ru/post/favicon-a-changing-role/</link>
		<comments>http://www.empd.ru/post/favicon-a-changing-role/#comments</comments>
		<pubDate>Sun, 17 Feb 2013 14:13:17 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=420</guid>
		<description><![CDATA[Many developers pay insufficient attention to the importance of favicons and thereby miss an opportunity to make their websites that much more distinctive and memorable. Far from being just a funny little dinkus propped at one end of a browser’s]]></description>
			<content:encoded><![CDATA[<p>Many developers pay insufficient attention to the importance of favicons and thereby miss an opportunity to make their websites that much more distinctive and memorable.</p>
<p>Far from being just a funny little dinkus propped at one end of a browser’s address bar, favicons today have become a key part of the identity of a website and are used for branding purposes. Proper use of them can help you in creating not only a good first impression among site visitors, but a lasting one.</p>
<p>The concept of favicons was first introduced by Internet Explorer in 1999. They were produced in ICO format and were dropped in the root folder of the domain as <code>/favicon.ico</code>. Since then many things have changed. They are now used for multiple purposes in different devices.</p>
<p>The most basic format of using favicon for a website is as follows:</p>
<pre>&lt;link rel="shortcut icon" href="favicon.ico"/&gt;</pre>
<h2>The rel Property</h2>
<p>The important part of the above declaration is the <code>rel</code> property. It is this property which helps the browser identify the favicon and show them properly. Traditional IE browsers used “shortcut” and “icon” both to identify the image and to display it in the browser title and shortcut bar. After the release of HTML5 this has been changed to only “icon” as the global representation of favicon.</p>
<div id="div-gpt-ad-1328644474660-10"></div>
<h2>The Type Property</h2>
<p>The <code>type</code> property can sometimes define whether the browser will display the favicon or not. Internet Explorer sees only the server MIME of the ICO file, otherwise it ignores the file. In general one has to declare the favicon in following ways, for IE:</p>
<pre>&lt;!-- For IE6+ --&gt;
&lt;link rel="shortcut icon" href="path/to/favicon.ico" type="image/x-icon"&gt;</pre>
<pre>&lt;!-- For IE6+ --&gt;
&lt;link rel="shortcut icon" href="path/to/favicon.ico"&gt;</pre>
<pre>&lt;!-- For IE6+ --&gt;
&lt;link rel="shortcut icon" href="path/to/favicon.ico" type="image/vnd.microsoft.icon"&gt;</pre>
<p>One of the best upgrades to the use of the favicon in recent times has been the acceptance of PNG files. You can use transparent images with rounded corners as the favicon for your websites. Rounded corners with transparent edges were too difficult to achieve in ICO format. Browsers like Google Chrome and Mozilla Firefox allow the use of PNG favicons.</p>
<p>An important point to note here is that if both ICO format and PNG format are declared the ICO format will be used by all browsers, irrespective of the order in which they are declared.</p>
<pre>&lt;!-- Works in Chrome, Safari, IE --&gt;
&lt;link rel="shortcut icon" href="path/to/favicon.ico"&gt;</pre>
<pre>&lt;!-- Works in Firefox, Opera, Chrome and Safari -&gt;
&lt;link rel="icon" href="path/to/favicon.png"&gt;</pre>
<h2>The Size</h2>
<p>Another development in the role of the favicon is the size. Older browsers used 16×16 as the standard size of a favicon while modern browsers allow 32×32 size icons which are later scaled down to appropriate size. IE10 uses the 32×32 size icon to display in the address bar.</p>
<pre>&lt;!-- For IE 6-10 --&gt;
&lt;link rel="shortcut icon" href="favicon.ico"/&gt;
&lt;!-- For all other browsers --&gt;
&lt;link rel="icon" href="favicon.ico"/&gt;</pre>
<p>With the use of PNG favicons, another new property is added called size” which determines the size of the file specified in the <code>href</code> property. For example:</p>
<pre>&lt;link rel="icon" href="favicon16.png" sizes="16x16"&gt;
&lt;link rel="icon" href="favicon32.png" sizes="32x32"&gt;
&lt;link rel="icon" href="favicon48.png" sizes="48x48"&gt;
&lt;link rel="icon" href="favicon64.png" sizes="64x64"&gt;
&lt;link rel="icon" href="favicon128.png" sizes="128x128"&gt;</pre>
<p>In general, Firefox and Safari will use the favicon which comes first in the declaration. Different versions of Chrome have different preferences. Chrome for Windows will use either 16×16 or ICO, whichever comes first. Chrome for Mac will use an ICO favicon if present or else it will go with 32×32 size favicon and scale down to 16×16 for higher clarity in non-retina devices. Opera on the other hand doesn’t have any such preferences; it randomly selects any one from all the favicons presents.</p>
<p><img src="http://www.sitepoint.com/wp-content/uploads/1/files/2013/02/figure12.png" alt="icons" width="602" height="102" /></p>
<h2>Best Use</h2>
<p>Since Internet Explorer does not support PNG files and other modern browsers do, we can wrap ICO files in the conditional statement and leave the PNG files open. For example:</p>
<pre>&lt;!-- For IE --&gt;
&lt;!--[if IE]&gt;&lt;link rel="shortcut icon" href="path/to/favicon.ico"&gt;&lt;![endif]--&gt;</pre>
<pre>&lt;!-- For Modern Browsers with PNG Support --&gt;
&lt;link rel="icon" type="image/png" href="path/to/favicon.png"&gt;</pre>
<p>But we have an issue in the above declaration! IE 10 doesn’t support conditional statements and neither do PNG files. What should we do now?</p>
<p>We can drop the ICO files in the root directory and make declarations for PNG files only. This way, Internet Explorer will ignore the <code>&lt;icon rel="icon"&gt;</code> and prefer the ICO image in the root directory. Modern browsers will find the <code>&lt;icon rel="icon"&gt;</code> declaration and use PNG files.</p>
<h2>For Apple Devices</h2>
<p>Apple devices with iOS 1.1.3 and later require a special type of <code>rel</code> property which can be recognized only by such devices. The <code>rel</code> property in such devices use <code>apple-touch-icon</code> and <code>apple-touch-icon-precomposed</code>.</p>
<p>Here the favicons are used not only to display in browsers but also when a website is bookmarked to the apps screen. Such favicons need to be of a higher resolution and custom-made in order to stand out among other apps.</p>
<p><img src="http://www.sitepoint.com/wp-content/uploads/1/files/2013/02/figure22.png" alt="apple icons" width="602" height="338" /></p>
<pre>&lt;!-- For rounded corners and reflective shine in Apple devices --&gt;
&lt;link rel="apple-touch-icon" href="favicon.png" /&gt;</pre>
<pre>&lt;!-- Favicon without reflective shine --&gt;
&lt;link rel="apple-touch-icon-precomposed" href="favicon.png" /&gt;</pre>
<p>The value <code>apple-touch-icon-precomposed</code> is used to instruct the device not to add reflective shine to the favicon and use it as it is.</p>
<p>The recommended basic size for Apple devices is 57×57 with 90 degrees corners. For higher resolution screens use 114×114 size images. iPad 2 uses 72×72 size while iPad 3 uses 114×114 for retina display.</p>
<h2>For Windows 8</h2>
<p>Windows 8 uses the concept of tiles and has the option to pin a website to the home screen. The favicon in such should be of good quality in order to get look good on the screen.</p>
<p><img src="http://www.sitepoint.com/wp-content/uploads/1/files/2013/02/figure33.png" alt="windows8" width="275" height="275" /></p>
<pre>&lt;meta name="msapplication-TileColor" content="#D83434"&gt;
&lt;meta name="msapplication-TileImage" content="path/to/tileicon.png"&gt;</pre>
<p>Note that in the above declaration I have used the <code>meta</code> tags instead of a <code>link</code> tag. Windows 8 prefers to see the <code>meta</code> declaration for images in the tiles. The <code>msapplication-TileColor</code> tag specifies the colors to be filled in the tile and <code>msapplication-TileImage</code> specifies the image to display at the centre of the tile.</p>
<h2>Limitations to favicons</h2>
<p>Favicons can sometime create extra traffic for your website due to repeated checking for it in the same location. Sometimes these can even create garbage 404 errors in the log files if not found.</p>
<p>Another important limitation of these favicons is the inability to load the new favicons automatically. This problem is mostly found in older browsers such as IE6-9.</p>
<p>The <code>rel</code> attribute is also not standardized by W3C, so different user agents define their own version.</p>
<p>Favicons have been the main target of many types of phishing attacks and eavesdropping in past such as showing the secured icon when they are not certified to be secured.</p>
<p>These are all points to be taken into consideration when deciding whether and how to use favicons on a website. None of them should stop you using favicons creatively.</p>
<p>Today, favicons have an importance of their own. Their visual impact will continue to grow and you should expect them to grow in functionality, as well.</p>
<blockquote><p>Оригинал статьи: <a href="http://www.sitepoint.com/favicon-a-changing-role/" target="_blank">http://www.sitepoint.com/favicon-a-changing-role/</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/favicon-a-changing-role/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подходы к реализации адаптивного меню</title>
		<link>http://www.empd.ru/post/podhody-k-realizatsii-adaptivnogo-menyu/</link>
		<comments>http://www.empd.ru/post/podhody-k-realizatsii-adaptivnogo-menyu/#comments</comments>
		<pubDate>Tue, 20 Nov 2012 08:14:45 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=401</guid>
		<description><![CDATA[Когда мы начинаем работать с адаптивным дизайном, мы сталкиваемся с различными техниками того, как лучше обработать изменение нашего навигационного меню для экранов с низким разрешением. Возможности кажутся бесконечными. Поэтому, я покажу вам четыре главных подхода с их достоинствами и недостатками.]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-417" title="css-tricks.com.open" src="http://www.empd.ru/wp-content/uploads/2012/11/css-tricks.com_.open_.jpg" alt="" width="600" height="362" /></p>
<p>Когда мы начинаем работать с адаптивным дизайном, мы сталкиваемся с различными техниками того, как лучше обработать изменение нашего навигационного меню для экранов с низким разрешением. Возможности кажутся бесконечными. Поэтому, я покажу вам четыре главных подхода с их достоинствами и недостатками. Три из них сделаны с использованием только CSS и один — с небольшим количеством JavaScript.</p>
<blockquote><p>Статья: <a href="http://habrahabr.ru/post/159359/" target="_blank">http://habrahabr.ru/post/159359/</a><br />
Автор перевода: <a href="http://habrahabr.ru/users/druf/" target="_blank">druf</a><br />
Оригинал: <a href="http://css-tricks.com/responsive-menu-concepts/" target="_blank">http://css-tricks.com/responsive-menu-concepts/</a></p></blockquote>
<h2></h2>
<h2>Введение</h2>
<p>В коде, представленном в статье, я не использую браузерные префиксы, чтобы код стилей оставался простым к прочтению и пониманию. В более сложных примерах используется SCSS. Каждый из примеров размещен на сайте <a href="http://codepen.io/">CodePen</a>, где вы можете увидеть скомпилированный CSS.</p>
<p>Все подходы в этой статье используют простой HTML код, который я называю «базовое меню». <a href="http://www.w3.org/TR/xhtml-role/">Атрибут role</a> используется чтобы указать определенный тип: горизонтальное меню (full-horizontal), выпадающий список (select), ниспадающее меню (custom-dropdown) и canvas.</p>
<p>Для стилей я использую один и тот же <a href="https://developer.mozilla.org/en-US/docs/CSS/Media_queries">медиа запрос</a> для всех вариантов:</p>
<h2></h2>
<h2>1. Горизонтальное меню</h2>
<p>Самый простой подход, потому что вам нужно лишь сделать список элементов шириной во всю страницу.</p>
<p>С дополнительным оформлением так оно выглядит на экранах с небольшим разрешением:<br />
<img src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/full-horz.jpg" alt="Горизонательное меню" /></p>
<h4>Преимущества</h4>
<ul>
<li>Не требуется JavaScript</li>
<li>Никакой лишней разметки</li>
<li>Простой код стилей</li>
</ul>
<h4>Недостатки</h4>
<ul>
<li>Занимает слишком много места на экране</li>
</ul>
<p><a href="http://codepen.io/TimPietrusky/pen/ysblx">Пример горизонтального меню</a> можно увидеть на сайте CodePen.</p>
<h2></h2>
<h2>2. Выпадающий список</h2>
<p>В данном подходе скрывается базовое меню и показывается <a href="https://developer.mozilla.org/en-US/docs/HTML/Element/select">выпадающий список</a> вместо него.</p>
<p>Чтобы добиться такого эффекта нам нужно добавить в базовую разметку выпадающий список. Чтобы он работал нам придется добавить JavaScript код, который изменяет значение <a href="https://developer.mozilla.org/en-US/docs/DOM/window.location">window.location</a>.href когда происходит событие <a href="https://developer.mozilla.org/en-US/docs/DOM/element.onchange">onchange</a></p>
<p>Скрываем список на больших экранах.</p>
<p>На маленьких экранах скрываем базовое меню и показываем выпадающий список. Чтобы помочь пользователю понять, что это меню — мы добавим псевдо-элемент с тектом «Меню»</p>
<p>С дополнительным оформлением так оно выглядит на экранах с небольшим разрешением:<br />
<img src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/num-2.jpg" alt="Выпадающий список" /></p>
<h4>Преимущества</h4>
<ul>
<li>Не занимает много места</li>
<li>Использует «собственные» элементы управления</li>
</ul>
<h4>Недостатки</h4>
<ul>
<li>Для работы требуется JavaScript</li>
<li>Происходит дублирование содержимого</li>
<li>Выпадающий список не удается стилизовать во всех браузерах</li>
</ul>
<p><a href="http://codepen.io/TimPietrusky/pen/iopIJ">Пример этого меню</a>.</p>
<h2></h2>
<h2>3. Пользовательское ниспадающее меню</h2>
<p>В данном подходе на небольших экранах скрывается базовое меню и показывается input и label вместо них (используется <a href="http://css-tricks.com/the-checkbox-hack/">хак с чекбоксом</a>). Когда пользователь кликает на label, базовое меню показывается под ним.</p>
<h4>Проблемы с использованием хака с чекбоксом</h4>
<p>Две основных проблемы с этим решением:</p>
<ol>
<li><strong>Оно не работает на мобильных версиях Safari (iOS &lt; 6.0)</strong>. Невозможно кликнуть на label в браузере под iOS &lt; 6.0, чтобы сработал input из-за бага. Решается <a href="http://stackoverflow.com/questions/5421659/html-label-command-doesnt-work-in-iphone-browser/6472181#6472181">добавлением пустого события</a> onclick на label</li>
<li><strong>Оно не работает на основном браузере ОС Android версии меньше или равной 4.1.2.</strong> Давным давно был баг в WebKit движке, который не позволял использовать псевдо-классы с комбинацией селекторов <code>+</code> и <code>~</code></li>
</ol>
<p>Это не оказывало никакого эффекта, потому что хак с чекбоксом использовал псевдокласс <code>:checked</code> с селектором <code>~</code>. И пока баг не был исправлен в WebKit 535.1 (Chrome 13) и в актуальном для Android 4.1.2 WebKit 534.30, хак не работал ни на каком устройстве с ОС Android.</p>
<p><a href="http://stackoverflow.com/questions/8320530/webkit-bug-with-hover-and-multiple-adjacent-sibling-selectors/8320736#8320736">Лучшее решение</a> — это использовать анимацию только для WebKit-браузеров для тега <code>&lt;body&gt;</code></p>
<p>Комбинация всех вариантов создает <a href="http://timpietrusky.com/advanced-checkbox-hack">расширенный хак для чекбоксов</a>:<br />
Для больших экранов мы скрываем label:<br />
Для небольших экранов мы скрываем базовое меню и показываем label. Чтобы помочь пользователю понять, чтобы это меню, мы добавим псевдоэлемент с текстом &#171;≡&#187; в label (представим в виде кода &#171;\2261&#8243;, чтобы использовать как содержимое псевдоэлемента). Когда пользователь кликает на input, базовое меню показывается и список элементов раскрывается во всю ширину.</p>
<p>Так меню выглядит на маленьких экранах:</p>
<p><img title="Закрытое" src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/closed.jpg" alt="Закрытое" /><br />
<img title="Открытое" src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/open.jpg" alt="Закрытое" /></p>
<h4>Преимущества</h4>
<ul>
<li>Не занимает много места в закрытом состоянии</li>
<li>Целиком стилизуется</li>
<li>Не требует JavaScript</li>
</ul>
<h4>Недостатки</h4>
<ul>
<li>Не семантичный код (input / label)</li>
<li>Требуется дополнительный HTML</li>
</ul>
<p><a href="http://codepen.io/TimPietrusky/pen/gqlhA">Пример работы этого меню</a>.</p>
<h2></h2>
<h2>4. Canvas</h2>
<p>В этом подходе, на небольших экранах, скрывается базовое меню и показывается input и label как в варианте 3. Когда пользователь кликает на label, базовое меню выплывает слева и содержимое перемещается вправо. Экран разделяется на части в пропорциях 80% меню и 20% содержимое (в зависимости от разрешения и единиц, используемых в CSS)</p>
<p>На больших экранах мы скрываем label.</p>
<p>На маленьких экранах мы помешаем меню вне содержимого окна и показываем label и input. Чтобы скрыть меню мы устанавливаем для него ширину и отрицательное значение положения. Чтобы помочь пользователю понять, чтобы это меню, мы так же добавим псевдоэлемент с текстом &#171;≡&#187; в label (в виде кода &#171;\2261&#8243;, чтобы использовать как содержимое псевдоэлемента).</p>
<p>С дополнительным оформлением так оно выглядит на экранах с небольшим разрешением:</p>
<p><img title="Закрытое" src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/offcanvas-closed.png" alt="Закрытое" /><br />
<img title="Открытое" src="http://cdn.css-tricks.com/wp-content/uploads/2012/11/offcanvas-open.png" alt="Открытое" /></p>
<h4>Преимущества</h4>
<ul>
<li>Не занимает много места в закрытом состоянии</li>
<li>Целиком стилизуется</li>
<li>Не требует JavaScript</li>
<li>Работает как Facebook / Google+ приложения</li>
</ul>
<h4>Недостатки</h4>
<ul>
<li>Не семантичный код (input / label)</li>
<li>Требуется дополнительный HTML</li>
<li>Абсолютное позиционирование элемента body вызывает ощущение зафиксированного положения</li>
</ul>
<p><a href="http://codepen.io/TimPietrusky/pen/CLIsl">Пример этого меню</a>.</p>
<h2></h2>
<h2>Работает ли это под IE?</h2>
<p>Все использованные техники преследуют одну цель: создать адаптивное меню для современных браузеров! И все потому, что нет никаких IE8 или ниже ни на каких мобильных устройствах и, поэтому, мы можем совершенно не беспокоиться об этом вопросе.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/podhody-k-realizatsii-adaptivnogo-menyu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Типы адаптивных макетов</title>
		<link>http://www.empd.ru/post/tipy-adaptivny-h-maketov/</link>
		<comments>http://www.empd.ru/post/tipy-adaptivny-h-maketov/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 08:13:34 +0000</pubDate>
		<dc:creator>peter</dc:creator>
				<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://www.empd.ru/?p=390</guid>
		<description><![CDATA[С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов. Резиновый]]></description>
			<content:encoded><![CDATA[<p><img src="http://habrastorage.org/storage2/a97/fa7/576/a97fa757612843bd44642a40b3f815d8.png" alt="" /></p>
<p>С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов.</p>
<h2>Резиновый</h2>
<p>Простой в реализации и очевидный для пользователя тип представления контента. Основные блоки сжимаются до ширины экрана мобильного устройства, где такое невозможно — перестраиваются в одну длинную ленту. Такой макет очень просто реализовать с помощью адаптивных CSS-фреймворков, например Twitter Bootstrap.</p>
<p><img src="http://habrastorage.org/storage2/e62/60c/0a9/e6260c0a91a43af34e0f498463187fb2.png" alt="" /></p>
<p>Примеры:</p>
<ul>
<li><a href="http://mediaqueri.es/fss/">Five Simple Steps</a></li>
<li><a href="http://mediaqueri.es/pea/">Princess Elisabeth Antarctica</a></li>
<li><a href="http://mediaqueri.es/tre/">Trent Walton</a></li>
<li><a href="http://mediaqueri.es/sif/">Sifter</a></li>
<li><a href="http://mediaqueri.es/cho/">ChoiceResponse</a></li>
</ul>
<h2>Перенос блоков</h2>
<p>Очевидный способ для многоколоночного сайта: при уменьшении ширины экрана дополнительные блоки (сайдбары) переносятся в нижнюю часть макета.</p>
<p><img src="http://habrastorage.org/storage2/518/a26/f95/518a26f959cf7a091914b7314c20a9a2.png" alt="" /></p>
<p>Примеры:</p>
<ul>
<li><a href="http://mediaqueri.es/mod/">Modernizr</a></li>
<li><a href="http://mediaqueri.es/owl/">Owltastic</a></li>
<li><a href="http://mediaqueri.es/wee/">Wee Nudge</a></li>
<li><a href="http://mediaqueri.es/fds/">Festival de Saintes</a></li>
<li><a href="http://mediaqueri.es/ash/">Ash Personal Training</a></li>
</ul>
<h2>Переключение макетов</h2>
<p>Этот способ наиболее удобен при чтении сайта с различных устройств: под каждое разрешение экрана разрабатывается отдельный макет. Способ трудоемок, поэтому менее популярен, чем предыдущие два.</p>
<p><img src="http://habrastorage.org/storage2/1a1/b31/47b/1a1b3147b93224be5948ae3919247144.png" alt="" /></p>
<p>Примеры:</p>
<ul>
<li><a href="http://mediaqueri.es/fse/">Food Sense</a></li>
<li><a href="http://mediaqueri.es/pma/">Performance Marketing Awards</a></li>
<li><a href="http://mediaqueri.es/ffg/">Forefathers Group</a></li>
<li><a href="http://mediaqueri.es/bg/">The Boston Globe</a></li>
<li><a href="http://mediaqueri.es/awa/">Andersson-Wise Architects</a></li>
</ul>
<h2>Адаптивность «малой кровью»</h2>
<p>Очень простой способ, который подходит для несложных сайтов. Достигается элементарным масштабированием изображений и типографики. Не очень популярен, т.к. не обладает гибкостью.</p>
<p><img src="http://habrastorage.org/storage2/101/87e/a45/10187ea4579d0ed10371b6761c62f010.png" alt="" /></p>
<p>Примеры:</p>
<ul>
<li><a href="http://mediaqueri.es/ff/">Future Friendly</a></li>
<li><a href="http://mediaqueri.es/pa/">Path</a></li>
<li><a href="http://mediaqueri.es/neo/">Neovada</a></li>
<li><a href="http://mediaqueri.es/lyc/">Lycos</a></li>
<li><a href="http://mediaqueri.es/dgf/">Design made in Germany</a></li>
</ul>
<h2>Панели</h2>
<p>Способ, пришедший из мобильных приложений, где дополнительное меню может появляться при горизонтальном или вертикальном тапе. Главный недостаток — неочевидность действий для пользователя: очень непривычно видеть мобильную навигацию на веб-сайта. Но думаю, со временем способ станет достаточно популярным.</p>
<p><img src="http://habrastorage.org/storage2/beb/b02/8b6/bebb028b60fa4d2ae2b9d7e9cb45cc53.png" alt="" /></p>
<p>Пример панелей в мобильном приложении:</p>
<p><img src="http://habrastorage.org/storage2/2d7/c35/5ec/2d7c355ecfc9cb354a4e2b74029aec70.png" alt="" /></p>
<p>Пример панелей на сайтах:</p>
<ul>
<li><a href="http://www.kaemingk.com/en/our-showroom/christmas/">Kaemingk Christmas 2012</a></li>
</ul>
<p>Представленные выше макеты не являются универсальными решениями, для каждого проекта необходимо выбирать наиболее подходящий под нужды и возможности способ.</p>
<p>Полезные сайты:</p>
<ul>
<li><a href="http://mediaqueri.es/">mediaqueri.es</a> — галерея адаптивный сайтов</li>
<li><a href="http://www.lukew.com/ff/entry.asp?1569">Блог с оригиналом</a> Luke Wroblewski</li>
<li><a href="http://bradfrostweb.com/blog/">Блог</a> Brad Frost</li>
</ul>
<blockquote><p>Оригинал статьи: <a href="http://habrahabr.ru/post/158703/" target="_blank">habrahabr.ru/post/158703/</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.empd.ru/post/tipy-adaptivny-h-maketov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
