<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Seleckis.lv :: журнал Никиты Селецкого</title>
	
	<link>http://seleckis.lv</link>
	<description />
	<lastBuildDate>Tue, 08 Feb 2011 13:52:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/seleckis_lv" /><feedburner:info uri="seleckis_lv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/seleckis_lv" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fseleckis_lv" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><item>
		<title>Вёрстка в Латвии: Вчера. Сегодня! Завтра?</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/i58kzOFMlis/vyorstka-v-latvii-vchera-segodnya-zavtra</link>
		<comments>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra#comments</comments>
		<pubDate>Thu, 27 May 2010 15:31:55 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[xhtml/xml]]></category>
		<category><![CDATA[Брaузеры]]></category>
		<category><![CDATA[Исследования]]></category>
		<category><![CDATA[Статистика]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1835</guid>
		<description><![CDATA[Версия моего выступления на Web Standards Days Riga 2010 вызвавшего неоднозначную реакцию.
Много было регистраций работников различных дизайн студий, компаний занимающихся разносторонней веб-разработкой, банков, министерств, фрилансеров и просто интересующихся. Я не зря добавил в форму регистрации поле для адреса сайта. Те люди, что собрались на конференцию, скромно говоря, флагманы, пионеры латвийской веб-разработки. Поэтому не грех было [...]]]></description>
			<content:encoded><![CDATA[<p><em>Версия моего выступления на Web Standards Days Riga 2010 вызвавшего неоднозначную реакцию.</em></p>
<p>Много было регистраций работников различных дизайн студий, компаний занимающихся разносторонней веб-разработкой, банков, министерств, фрилансеров и просто интересующихся. Я не зря добавил в форму регистрации поле для адреса сайта. Те люди, что собрались на конференцию, скромно говоря, флагманы, пионеры латвийской веб-разработки. Поэтому не грех было покопаться в их работах и попробовать понять, что же всё-таки у нас происходит с текущим использованием технологий?</p>
<p>Статистика вещь интересная, но только если она связанна с интересными темами. Мне было интересно заняться небольшим статистическим анализом, результатами которого я с вами сейчас поделюсь. Конечно в дебри я не полез, из-за большой лени, но то, чего успел накопать хватает достаточно, чтобы составить небольшую рекомендацию, с чего стоит начать осовременивать свою вёрстку.</p>
<h3>Вчера</h3>
<p>Итак, что же можно назвать «вчера»?</p>
<ul>
<li>ASCII кодировка</li>
<li>Не использование DOCTYPE</li>
<li>DOCTYPE с указанием спецификации</li>
<li>Валидация ради валидации</li>
</ul>
<p>Список можно продолжить, но мне лениво.</p>
<h3>Кодировка</h3>
<p>Для начала рассмотрим какие кодировки использовались на проанализированных сайтах.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1836" title="Encoding of latvian web sites: UTF-8 — 93%. Yea, baby, yea!" src="http://seleckis.lv/wp-content/uploads/2010/05/encoding.png" alt="" width="570" height="431" /></p>
<p>Здесь всё замечательно, почти на всех сайтов используется кодировка utf-8. Это проще, чем подбирать для каждого языка свою. Здесь могу только посоветовать, тем 7 %, кто остался переходить на uft-8. Больше говорить не о чем.</p>
<h3>DOCTYPE</h3>
<p>Многие до сих пор не понимают значения доктайпа. Для того, чтобы это понять, нужно сначала обратиться к истории. Ну долго копаться в ней не будем, единственно упомянем, что существует два режима отображения веб-страницы — Standards Mode  и Quirks Mode,  ну так исторически сложилось. Первый — это режим отображения согласно веб-стандартам W3C, второй — режим поддержки старых сайтов, написанных в 90-е годы. Чем конкретно они отличаются читайте на W3C или в Википедии, ищите в Гугле… информации полно, но я на этом зацикливаться не буду. <em>(Ну там ещё есть almost standards, который от standards почти не отличается)</em></p>
<p>Если вы не пишете доктайп, то включается Quirks Mode. Если пишете — Standards Mode. Но есть исключения:</p>
<ul>
<li>Internet Explorer воспринимает декларацию HTML 4.0 и старее как Quirks Mode.</li>
<li>В случае с XHTML по правилам требуется xml-декларация. И её фактически никогда не пишут, поскольку из-за неё IE6 переключается в Quirks Mode.</li>
<li>Опера вообще не поддерживает Quirks Mode. Даже без DOCTYPE страница рендерится в Standards Mode.</li>
</ul>
<p>Более подробные нюансы <a href="http://en.wikipedia.org/wiki/Quirks_mode">о QuirksMode можно почитать в Википедии</a>.</p>
<p><strong>Итог: Чтоб избежать проблем нужно использовать DOCTYPE обязательно.</strong></p>
<h3>DOCTYPE с указанием спецификации или валидация ради валидации</h3>
<p>Теперь посмотрим как у нас обстоят дела с доктайпами на латвийских сайтах.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1837" title="Doctypes of latvian web sites: XHTML 1.0 Transitional — 49%; HTML 4.01 Transitional — 24%; XHTML 1.0 Strict — 15%; XHTML 1.1 — 4 %; HTML 5 — 1%; Quirks Mode + HTML 4.0  — 7 % (Ouch!)" src="http://seleckis.lv/wp-content/uploads/2010/05/doctypes.png" alt="" width="592" height="582" /></p>
<p>Великолепно! 68 % указывают XHTML  декларацию. А теперь проверим, проходят ли они валидацию?</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1838" title="Validation of latvian web sites: Not valid — 78 %; valid — 21 %; damaged — 1 %" src="http://seleckis.lv/wp-content/uploads/2010/05/validation.png" alt="" width="512" height="474" /></p>
<p style="text-align: center;">
<p>Внимание, вопрос! Зачем для сайтов указывать доктайпы со спецификацией, если валидацию они не проходят?</p>
<p>Если почитать спецификацию XHTML, то такой документ по сути должен передаваться в формате application/xhtml+xml. Это можно сказать «чистый» XHTML. Правильный. Мы все любим правильность и я в том числе, поэтому большинство сайтов написаны в формате XHTML. Там и правильные закрывающие теги и правильная вложенность и дубрирующееся написание значения атрибутов-флагов.</p>
<p>А на самом деле все передают такой документ в формате text/html. Почему? Во-первых многие не знают, что он должен передаваться как application, а во-вторых — незачем! Чаще всего модульные технологии расширения, для которых был создан XHTML, не используются. Ни прстранства имён, ни MathML, ни семантическая вёрстка через RDF и другие крутые вещи не нужны для создния веб-сайтов и сервисов.</p>
<p>Так зачем же мы пишем такой сложный Доктайп? И при чём он у всех такой разный. Он вам не нужен такой! Напишите его проще. Вот так:</p>
<p style="text-align: center; font-size: 32px; color: #888;">&lt;!DOCTYPE html&gt;</p>
<p>Дело в том, что именно по этой части DOCTYPE браузер определяет, переходить ли ему в режим Standards Mode или нет. Указание дальнейшей спецификации и соответствующего адреса браузеру не нужно, он прекрасно справится. Спецификация нужна только для валидатора. Тем более что данная декларация, вот именно в таком виде уже включена в стандарт HTML 5 и тупые ошибки вы сможете определить W3C-валидатором.</p>
<p>Хорошо, допустим вы такой упрямый и всё равно считаете, что будете верстать в XHTML и указывать соответствующий доктайп, просто потому, что так правильней и можно проверить в валидаторе ту самую паранойю «disabled=&#8221;disabled&#8221;». Но на какой стадии вы это делаете? На стадии девелопинга! Так на продакшен-сервере, то он вам зачем?! Вот то-то и оно…</p>
<p><em>Холивар про «em vs. px» напишу чуть позже.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/research/vyorstka-v-latvii-vchera-segodnya-zavtra</feedburner:origLink></item>
		<item>
		<title>Восприятие информации по горизонтали и вертикали</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/Zr_dxdqjl20/vospriyatie-informatsii-po-gorizontali-i-vertikali</link>
		<comments>http://seleckis.lv/journal/web-dizayn/vospriyatie-informatsii-po-gorizontali-i-vertikali#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:51:28 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Веб‑дизайн]]></category>
		<category><![CDATA[Разработка сайтов]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1593</guid>
		<description><![CDATA[Почему мы воспринимаем информацию слева направо и сверху вниз (как говорят некоторые «буквой Z»)? Правильно, потому что мы так пишем. Так пишет добрая половина человечества, а создатели компьютеров «навязали» такой стиль и восточным народам (хотя те и сопротивляются). А почему мы так пишем? Да потому что писать справа налево неудобно так же как писать левшам [...]]]></description>
			<content:encoded><![CDATA[<p>Почему мы воспринимаем информацию слева направо и сверху вниз (как говорят некоторые «буквой Z»)? Правильно, потому что мы так пишем. Так пишет добрая половина человечества, а создатели компьютеров «навязали» такой стиль и восточным народам (хотя те и сопротивляются). А почему мы так пишем? Да потому что писать справа налево неудобно так же как писать левшам слева направо. Мы же себе строчку рукой закрывать будем!</p>
<blockquote><p>«Лево-право, право-лево…» © Фунтик</p></blockquote>
<p>Т. е. вывод какой? Виновата физиология, а не мозги (у востока — наоборот).</p>
<p>Посмотрим <span style="text-decoration: line-through;">правде</span> в глаза… человека:</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1737" title="eyes" src="http://seleckis.lv/wp-content/uploads/2010/02/eyes.png" alt="eyes" width="460" height="305" /></p>
<p>Если вы не знали, то глаза находятся на одной горизонтали и угол обзора по горизонтали больше, чем по вертикали. Соответственно в обзор попадает гораздо больше информации располагающейся по горизонтали, а не по вертикали.</p>
<p>В силу опять-таки особенности физиологии человеческого глаза, мышцы двигающие глаза по горизонтали гораздо сильнее (или более развиты, не знаю как правильно), чем те, что двигают глаза по вертикали. Иными словами, нам проще смотреть из стороны в сторону, чем сверху вниз (на самом деле всё ещё сложнее).</p>
<p>Веб-сайт — это прежде всего информация. И её расположение очень важно определить, основываясь на особенностях человеческого зрения. Информация на сайте должна структурироваться согласно логической связи различных объектов, которые эту информацию передают.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1738" title="eyes1" src="http://seleckis.lv/wp-content/uploads/2010/02/eyes1.png" alt="eyes1" width="460" height="305" /></p>
<p>Допустим, имеем четыре колонки, чтобы всех их просмотреть и понять, что мне нужно, нужно сделать несколько резких движений глаз, причём не только горизонтальных, но и вертикальных, поскольку надо ещё и пробежаться в каждом блоке по вертикали.</p>
<p>В случае, если расположение информации у нас организовано не по колонкам, а по широким блокам идущим друг за другом по вертикали, то информация воспринимается более последовательно. Сначала просмотрели первый блок, потом второй, потом третий.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1743" title="сolumns1" src="http://seleckis.lv/wp-content/uploads/2010/02/сolumns1.png" alt="сolumns1" width="600" height="362" /></p>
<p>Это не говорит о том, что не нужно использовать колонки. Речь идёт о том, что в случае расположения разной по смыслу информации в колонках, требуют от пользователя большей концентрации на её поиск и фокусировку. Нам прийдётся совершать гораздо более сложные движения глаз, тем самым всё больше утомляя пользователя. Внимание будет перемещаться от объекта к объекту, согласно иерархии акцентов, расставленных с помощью контраста цвета, формы и размера. Вы наверняка замечали, что на новостных порталах в основном воспринимается только центральная колонка с основной информацией, о от остальных как-то абстрагируешься и не воспринимаешь их.</p>
<p>А если вы в колонках будете располагать связанную друг с другом информацию, то колонки начнут воспринимается как звенья одной цепи, например, перечисление возможностей конкретного продукта, перечисление элементов одного списка картинок, видео или пользователей.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1739" title="columns2" src="http://seleckis.lv/wp-content/uploads/2010/02/columns2.png" alt="columns2" width="578" height="481" /></p>
<p>Таким образом мы уже будем перемещаться по колонкам не в поисках темы, а в поисках предмета на определённую тему, а это гораздо легче.</p>
<p>Ещё использование колонок для разделения контента и инструментов (сервисов, пользовательского меню и т. д.) тоже является хорошей практикой.</p>
<p style="text-align: center;"><img class="size-full wp-image-1746 aligncenter" title="Screen shot 2010-02-09 at 10.42.28" src="http://seleckis.lv/wp-content/uploads/2010/02/Screen-shot-2010-02-09-at-10.42.28-.png" alt="Screen shot 2010-02-09 at 10.42.28" width="570" height="325" /></p>
<p>Некоторые разработчики считают, что колонки справа можно использовать для размещения похожего или связанного контента. Конечно, это верно, но только лишь в том случае, если этот контент является основным на текущем портале и акцент на него нужно делать очень сильный, чтобы пользователь смог оторвать глаза от материала. Но тогда мы ухудшаем восприятие основного материала. А если там будет просто блок со списками статей, то никого он там не зацепит и будет висеть фоновым шумом.</p>
<p style="text-align: center;"><img class="size-full wp-image-1747 aligncenter" title="Screen shot 2010-02-09 at 10.44.55" src="http://seleckis.lv/wp-content/uploads/2010/02/Screen-shot-2010-02-09-at-10.44.55-.png" alt="Screen shot 2010-02-09 at 10.44.55" width="568" height="303" /></p>
<p>В этой статье я прочитаю до конца (она ещё ниже заканчивается), а направо даже не посмотрю.</p>
<p>А что вы думаете по этому поводу?</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/web-dizayn/vospriyatie-informatsii-po-gorizontali-i-vertikali/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/web-dizayn/vospriyatie-informatsii-po-gorizontali-i-vertikali</feedburner:origLink></item>
		<item>
		<title>Всемирная HTML 5 истерия</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/3qhSlLOXlIA/vsemirnaya-html-5-isteriya</link>
		<comments>http://seleckis.lv/journal/vsemirnaya-html-5-isteriya#comments</comments>
		<pubDate>Tue, 25 Aug 2009 10:51:52 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[Журнал]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1686</guid>
		<description><![CDATA[Я не знаю, об этом просто сейчас модно писать или народ действительно в восторге? На самом деле, я бы с удовольствием, присоединился к толпе ликующих, если бы событие произошло год назад, именно тогда я написал статью «HTML должен быть…».
Чему всё-таки радуется человечество? Например, одна из самых распространённых тем в блогах, это новые тэги: header, footer, [...]]]></description>
			<content:encoded><![CDATA[<p>Я не знаю, об этом просто сейчас <a href="http://dimox.name/hello-html5-goodbye-xhtml2/">модно</a> <a href="http://alt-f4.ru/node/60">писать</a> или <a href="http://cssing.org.ua/2009/06/16/html5-wordpress/">народ</a> действительно в восторге? На самом деле, я бы с удовольствием, присоединился к толпе ликующих, если бы событие произошло год назад, именно тогда я написал статью «<a href="http://seleckis.lv/journal/research/vyihlop-html-dolzhen-byit">HTML должен быть…</a>».</p>
<p>Чему всё-таки радуется человечество? Например, одна из самых распространённых тем в блогах, это новые тэги: header, footer, nav, article, aside, section и др. Очнитесь ребята! Эти тэги можно было использовать с тех пор как регламентировали стандарт xhtml! Все бразуеры, кроме IE воспринимали их как строчные элементы, а с помощью CSS их можно сделать блочными.</p>
<p>Ну да, Internet Explorer… Но почему только когда <a href="http://www.w3.org/News/2009#item119">официально консорциум объявил об отказе от XHTML 2.0</a> (кстати, я это <a href="http://seleckis.lv/journal/view/xhtml-umer-v-mladenchestve">пророчил</a>), появился простой и понятный код, решающий эту проблему?</p>
<pre lang="javascript">document.createElement("header");</pre>
<p>Это тоже работа группы WHATWG?</p>
<p>Ах, да! Ещё и Firefox 2, в котором работают эти тэги, но только <a href="http://remysharp.com/2009/04/14/html5-and-firefox2/">в режиме парсинга xhtml+xml</a>. Это большая проблема, которая решилась переходом на FF3, а те два с половиной процента пусть думают, что сайт не работает, когда вы напишите «&amp;nbsp;» вместо «&amp;#160;».</p>
<p>Почему зная решение, всё это не использовалось раньше? Ждали, пока FF3 заменит FF2? Ждали пока выйдет IE8? Ждали, пока дядя Тим во всеуслышание признает, что он как дурак 10 лет копал не в ту сторону? Ждали, когда Гугл официально объявит о поддержке новых тэгов HTML 5 (кстати, дайте источник, почитаю, а то всё слухи, да слухи).</p>
<p>Да, Гугл, позвольте вас спросить, а что будет если я напишу текст примерно так:</p>
<pre lang="html4strict">
<body>
<h1>Название сайта</h1>

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. 
<h2>Заголовок</h2>

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

</body>
</pre>
<p>Это как-то по-другому будет восприниматься, по сравнению с той же структурой вписанной в &lt;article&gt;? Я не сеошник, но мне интересно.</p>
<p>Насчёт всего остального функционала предложенного в HTML 5, начиная от элементов форм, заканчивая «драгэнддропом», пока с мнением не определился. Но определюсь, напишу.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/vsemirnaya-html-5-isteriya/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/vsemirnaya-html-5-isteriya</feedburner:origLink></item>
		<item>
		<title>Seleckis’ method vs Pixy’s method</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/gKDgDKs6nZ8/seleckis-method-vs-pixy-s-method</link>
		<comments>http://seleckis.lv/journal/css/seleckis-method-vs-pixy-s-method#comments</comments>
		<pubDate>Sun, 16 Aug 2009 20:01:41 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1695</guid>
		<description><![CDATA[Честное слово, пытался найти и убедить себя в том, что этот метод уже существует. Не нашёл. Исправьте меня если я не прав.
Pixy’s method отображение картинок с надписями заключался в том, чтобы внутрь блока с текстом поместить пустой &#60;span&#62;, и вставить картинку как фон для этого span-а. Причём, для того чтобы текст показывался в случае если [...]]]></description>
			<content:encoded><![CDATA[<p>Честное слово, пытался найти и убедить себя в том, что этот метод уже существует. Не нашёл. Исправьте меня если я не прав.</p>
<p>Pixy’s method отображение картинок с надписями заключался в том, чтобы внутрь блока с текстом поместить пустой &lt;span&gt;, и вставить картинку как фон для этого span-а. Причём, для того чтобы текст показывался в случае если картинки отключены, необходимо span поместить поверх текста.</p>
<p>В методе Pixy, для того чтобы &lt;span&gt; с картинкой налез на текст используется абсолютное позиционирование. В таких условиях кнопка не может находиться в строке, она может существовать только как блочный элемент. Почему? Потому что Firefox 2 не поддерживает свойство «display: inline-block». Для отображения блока в строке в Firefox-е используется проприетарное свойство «display: -moz-inline-box» или «display: -moz-inline-stack». Но в таком случае браузер не совсем адекватно позиционирует помещённые внутрь элементы. В частности некорректно работает абсолютное позиционирование.</p>
<p>Задачи, с которыми я сталкивался в вёрстке, требуют гораздо более эффективного решения. Вот эти задачи на примере создания ссылки-кнопки:</p>
<ol>
<li>Ссылка должна быть «инлайновая», т. е. чтобы можно было поместить в строке.</li>
<li>При отключенных картинках в браузере вместо кнопки должна быть надпись-ссылка.</li>
<li>У кнопки должен работать «ховер» — при наведении мышкой, картинка должна меняться.</li>
</ol>
<h3>Метод Селецкого (Seleckis’ Method)</h3>
<p>Фактически тот же Pixy’s method, только:</p>
<ol>
<li>используется строчный блок (inline-block),</li>
<li>&lt;span&gt; помещается не после текста, а перед,</li>
<li>не &lt;span&gt; налезает на текст, а текст подлезает под &lt;span&gt;.</li>
</ol>
<p>Ну а в качестве реализации «ховера» выступает обычный CSS-спрайт.</p>
<p>Итак HTML:</p>
<pre lang="html4strict">
<a href="#" class="seleckis"><span></span>Seleckis</a>
</pre>
<p>CSS:</p>
<pre lang="css">
.seleckis {
	/* только для FF2 */
	display: -moz-inline-box;
	-moz-box-orient: vertical;

	/* Для остальных */
	display: inline-block;

	line-height: 20px;
	text-align: center;
}
.seleckis span {
	display: block;
	position: relative;
	margin-bottom: -20px;
}
.seleckis,
.seleckis span {
	height: 20px;
	width: 74px;
	background-image: url(seleckis.gif) no-repeat top left;
}
a.seleckis:hover,
a.seleckis:hover span {
	background-position: bottom left;
}
</pre>
<p>Как видите, в этом коде сам блок становится строчно-блочным, а для FF2 срабатывает свойство «-moz-inline-box», что придаёт ссылке фактически такие же свойства. «-moz-box-orient: vertical» понадобится в том случае, если внутри блока вам нужно поместить содержимое в несколько строк.</p>
<p>Также, хочу отметить, что для элемента <span> мы определяем относительное позиционирование и добавляем отрицательный нижний отступ размером с высоту кнопки, чтобы текст «подлез» под &lt;span&gt; с картинкой. Кстати, картинка спрайта прописывается как ссылке, так и спану. Мало ли что…</p>
<p>Если будут баги, пишите попробуем решить. А так, в моём случае работает в Internet Explorer 6, 7 и 8, Firefox 2 и 3, Opera, Safari, Chrome.</p>
<p><a href='http://seleckis.lv/wp-content/uploads/2009/08/css-seleckis-method.zip'>Качем пример</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/seleckis-method-vs-pixy-s-method/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/css/seleckis-method-vs-pixy-s-method</feedburner:origLink></item>
		<item>
		<title>Min-width и max-width в IE6 с помощью expression</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/i1opO6QvnE8/min-width-i-max-width-v-ie6-s-pomoschyu-expression</link>
		<comments>http://seleckis.lv/journal/browsers/min-width-i-max-width-v-ie6-s-pomoschyu-expression#comments</comments>
		<pubDate>Thu, 06 Aug 2009 08:52:17 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Брaузеры]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1690</guid>
		<description><![CDATA[Уже писали много раз, просто приведу свой код.
В JavaScript-файле размещаем такую функцию:

function width(min,max){
	w = document.documentElement.clientWidth;
	return (w = max) ? max + "px" : "auto");
}

Функция всего лишь принимает значения максимальной и минимальной ширины, проверяет текущую ширину документа и возвращает значение:

Если ширина документа меньше минимальной ширины, то возвращается минимальная ширина;
Если ширина документа больше максимальной ширины, то возвращается [...]]]></description>
			<content:encoded><![CDATA[<p>Уже писали много раз, просто приведу свой код.</p>
<p>В JavaScript-файле размещаем такую функцию:</p>
<pre lang="javascript">
function width(min,max){
	w = document.documentElement.clientWidth;
	return (w <= min) ? min + "px" : ((w >= max) ? max + "px" : "auto");
}
</pre>
<p>Функция всего лишь принимает значения максимальной и минимальной ширины, проверяет текущую ширину документа и возвращает значение:</p>
<ol>
<li>Если ширина документа меньше минимальной ширины, то возвращается минимальная ширина;</li>
<li>Если ширина документа больше максимальной ширины, то возвращается максимальная ширина;</li>
<li>Иначе ширина указывается автоматическая.</li>
</ol>
<p>Функция из CSS вызывается следующим образом:</p>
<pre lang="css">
div {
    width: expression(width(600,1000));

    /* далее для нормальных браузеров */
    min-width: 600px;
    max-width: 1000px;
}
</pre>
<p>600 и 1000 — минимальная и максимальная ширина. Поскольку expression работает только для IE, а min-width и max-width уже работают в IE7 и IE8, то этот CSS нужно изолировать и вынести в отдельный css-файл и подключить его с помощью условных комментариев, либо воспользоваться хакками, поскольку чтобы изменить значение придётся лезть в два файла, а не в один. Ну это уже как кому удобнее.</p>
<p><a href='http://seleckis.lv/wp-content/uploads/2009/08/min-max-width.zip'>Скачайте пример</a> и убедитесь, что всё работает.</p>
<p>Минимальную ширину в IE 6 можно эмулировать с помощью приёма, в котором указывается правый border для контейнера шириной в необходимую минимальную ширину элемента, а элементу задаётся правый отрицательный margin равный той же минимальной ширине. При этом внутренний элемент должен быть либо плавающим (float), либо inline-block. В общем не читайте и не внимайте в эти последние предложения, а просто посмотрите <a href="http://www.cssplay.co.uk/boxes/width.html">пример на cssplay.co.uk</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/browsers/min-width-i-max-width-v-ie6-s-pomoschyu-expression/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/browsers/min-width-i-max-width-v-ie6-s-pomoschyu-expression</feedburner:origLink></item>
		<item>
		<title>«Резиновое» поле ввода в форме</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/anIuwr2AbZ8/rezinovoe-pole-vvoda-v-forme</link>
		<comments>http://seleckis.lv/journal/css/rezinovoe-pole-vvoda-v-forme#comments</comments>
		<pubDate>Fri, 31 Jul 2009 14:48:20 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1669</guid>
		<description><![CDATA[Как известно у полей ввода ширина не может рассчитываться автоматически относительно контейнера, как это работает у блочных элементов. Значение ширины можно задать фиксированное, либо относительное.
Есть сервисы в интернете с полями ввода (например, поиском) у которых ширина задана фиксированно. Соответственно, если шаблон сайта резиновый, то поле ввода растягиваться не будет. Как правило такие сайты имеют фиксированную [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно у полей ввода ширина не может рассчитываться автоматически относительно контейнера, как это работает у блочных элементов. Значение ширины можно задать фиксированное, либо относительное.</p>
<p>Есть сервисы в интернете с полями ввода (например, поиском) у которых ширина задана фиксированно. Соответственно, если шаблон сайта резиновый, то поле ввода растягиваться не будет. Как правило такие сайты имеют фиксированную вёрстку. К примеру, если вы зайдёте на «<a href="http://answers.yahoo.com">Yahoo Answers</a>» и с помощью Firebug (Firefox), Web Inspector (Safari, Chrome) или Developer Tools (Opera, IE8) отключите у элемента &lt;div id=&#8221;y-ks-whole-page&#8221;&gt; свойство «width: 750px;» в стилях, то сайт растянет на всю ширину, а поле поиска вопросов останется той же ширины. Конечно, кроме всего прочего, некоторые другие элементы останутся фиксированными, но мы говорим о полях ввода.</p>
<p>И вспомним работу студии Артемия Лебедева, поисковик «Яндекс» и его страницу <a href="http://ya.ru/">ya.ru</a> — облегчённую версию поисковика или посмотрим на давно забытый (мною) <a href="http://www.rambler.ru/">Рамблер</a>. Вёрстка как видите «резиновая» и соответственно ширина поля ввода для поиска такая же растягивающаяся.</p>
<p>Как же они сделали так, чтобы ширина была динамичной? Очень просто: таблицы. Создаётся таблица из одной строки и нескольких ячеек, в одной из которых помещается поле ввода и растягивается на всю ширину.</p>
<p style="text-align: center"><img title="yandex" src="http://seleckis.lv/wp-content/uploads/2009/07/yandex.gif" alt="yandex" width="600" height="127" /></p>
<p>Это простейший путь. Но не самый лучший.</p>
<h3>Вариант получше</h3>
<p>Начнём со структуры. особо наворачивать не будем. Чем проще, тем лучше.</p>
<pre lang="html4strict">
<div class="form">
<fieldset>
<input class="text-input" type="text" />
<input class="submit" type="submit" value="Continue →" />
	</fieldset>
</div>
</pre>
<p>Проще некуда. на самом деле можно было бы обойтись без лишнего div-а, если бы не Internet Explorer 6 и Firefox 2. Но об этом позже.</p>
<p>Перед описанием внешнего вида в CSS сначала нужно понять как предлагается решать задачу. Лучше всего показать схематически.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2009/08/input-variable.gif" alt="input-variable" title="input-variable" width="600" height="167" /></p>
<p>Из схемы видно, что предлагается контейнеру элементов формы добавить боковую границу шириной примерно равной кнопке отправки формы, а растягиваемое поле ввода предлагается растянуть на 100%. Ну и чтобы кнопка не перенеслась на следующую строку, контейнеру нужно запретить перенос строк.</p>
<pre lang="css">.form fieldset{
	border: none;
	border-right: 90px solid #fff;
	white-space: nowrap;
}
.form fieldset .text-input{
	width: 100%;
}</pre>
<p>Этого достаточно, чтобы форма правильно работала в Firefox 3, Opera, Safari, Chrome и Internet Explorer 8.</p>
<p>Для IE 6 и 7 нужно подправить отображение кнопки:</p>
<pre lang="css">.form fieldset .submit{
	overflow: visible;
}</pre>
<p>А для того, чтобы в IE6 и FF2 контейнер не растягивался так, что появляется горизонтальная прокрутка, нужно внешнему div-у прописать следующие свойства:</p>
<pre lang="css">.form{
	overflow: hidden;
	width: 100%;
}</pre>
<p>Вот и всё, теперь у вас есть бестабличная вёрстка растягивающегося поля ввода.</p>
<p><a href="http://seleckis.lv/wp-content/uploads/2009/07/input-variable.zip">Скачайте и посмотрите пример</a>. Он немного приукрашен.</p>
<p><strong>Пара нюансов:</strong></p>
<ul>
<li>Вам нужно точно знать ширину кнопки.</li>
<li>Для &lt;div class=&#8221;form&#8221;&gt; нельзя добавлять margin и padding по горизонтали, иначе будет сдвиг. Ну это вы и сами знаете.</li>
</ul>
<p>Конечно же, никто не мешает вам добавить и левую границу и с отрицательным отступом поместить что-нибудь перед полем ввода (например логотип Яндекса).</p>
<p>Собственно, это я расписывать не буду, а просто посмотрите <a href='http://seleckis.lv/wp-content/uploads/2009/07/input-variable-yandex.zip'>пример, как я сверстал ya.ru</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/rezinovoe-pole-vvoda-v-forme/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/css/rezinovoe-pole-vvoda-v-forme</feedburner:origLink></item>
		<item>
		<title>Элементы управления в веб-сервисах</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/OQuqqAdcEFg/elementyi-upravleniya-v-veb-servisah</link>
		<comments>http://seleckis.lv/journal/web-dizayn/elementyi-upravleniya-v-veb-servisah#comments</comments>
		<pubDate>Tue, 28 Jul 2009 12:29:41 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Веб‑дизайн]]></category>
		<category><![CDATA[Разработка сайтов]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1604</guid>
		<description><![CDATA[В продолжение предыдущей статьи посвящённой организации навигации в социальных сетях, пройдусь по другим темам.
Существуют следующие виды элементов управления в веб-проектах:

Контент-ссылки
Контролы

Контент-ссылки — это те ссылки которые позволяют перейти на страницу с каким-либо содержимым. Они могут быть следующего вида:

Ссылки
Иконки
Ссылки с иконками
Кнопки
Табы
Навигационное меню


Контролы — это те ссылки, которые подразумевают какие-либо действия: добавить, удалить, изменить, искать, отправить и т. д. Внешний вид [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение предыдущей статьи посвящённой <a href="http://seleckis.lv/journal/research/navigatsiya-veb-servisov-i-sotsialnyih-setey">организации навигации в социальных сетях</a>, пройдусь по другим темам.</p>
<p>Существуют следующие виды элементов управления в веб-проектах:</p>
<ol>
<li>Контент-ссылки</li>
<li>Контролы</li>
</ol>
<p>Контент-ссылки — это те ссылки которые позволяют перейти на страницу с каким-либо содержимым. Они могут быть следующего вида:</p>
<ol>
<li>Ссылки</li>
<li>Иконки</li>
<li>Ссылки с иконками</li>
<li>Кнопки</li>
<li>Табы</li>
<li>Навигационное меню</li>
</ol>
<p style="text-align: center;"><img class="size-full wp-image-1658 aligncenter" title="content-links" src="http://seleckis.lv/wp-content/uploads/2009/07/content-links.png" alt="" width="500" height="666" /></p>
<p>Контролы — это те ссылки, которые подразумевают какие-либо действия: добавить, удалить, изменить, искать, отправить и т. д. Внешний вид может быть:</p>
<ol>
<li>Ссылки</li>
<li>Иконки</li>
<li>Ссылки с иконками</li>
<li>Кнопки</li>
</ol>
<p>И кстати говоря, кнопки могут быть тоже разные:</p>
<ol>
<li>С текстом</li>
<li>С иконкой</li>
<li>С текстом и иконкой
<ol>
<li>Иконка сверху</li>
<li>Иконка слева</li>
<li>Иконка справа</li>
</ol>
</li>
</ol>
<p style="text-align: center;"><img class="size-full wp-image-1651 aligncenter" title="buttons5" src="http://seleckis.lv/wp-content/uploads/2009/07/buttons5.png" alt="" width="500" height="375" /></p>
<p>Также контролы можно классифицировать по эмоциональному признаку:</p>
<ol>
<li>Позитивные</li>
<li>Негативные</li>
<li>Нейтральные</li>
<li>Бонусы</li>
</ol>
<p>Их может быть и больше, но эти основные. Следующим примером иллюстрируются различия этих контролов по эмоциям:</p>
<p style="text-align: center;"><img class="aligncenter" title="world-buttons4" src="http://seleckis.lv/wp-content/uploads/2009/07/world-buttons4.png" alt="" width="500" height="375" /></p>
<p>Конечно пример утрированный, но это сделано для наглядности. Иконки, кстати, могут и не быть.</p>
<p>И конечно же, нельзя контент-ссылки и контролы оформлять одинаково.</p>
<p>Примеры того, как не надо делать:</p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1655" title="picture-1" src="http://seleckis.lv/wp-content/uploads/2009/07/picture-1.jpg" alt="" width="485" height="139" /></p>
<p style="text-align: center;">Раз</p>
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1656" title="picture-2" src="http://seleckis.lv/wp-content/uploads/2009/07/picture-2.jpg" alt="" width="399" height="181" /></p>
<p style="text-align: center;">Два</p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1657" title="picture-3" src="http://seleckis.lv/wp-content/uploads/2009/07/picture-3.jpg" alt="" width="500" height="189" /></p>
<p style="text-align: center;">Три</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/web-dizayn/elementyi-upravleniya-v-veb-servisah/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/web-dizayn/elementyi-upravleniya-v-veb-servisah</feedburner:origLink></item>
		<item>
		<title>Навигация веб-сервисов и социальных сетей</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/E5zBA1NPpDQ/navigatsiya-veb-servisov-i-sotsialnyih-setey</link>
		<comments>http://seleckis.lv/journal/research/navigatsiya-veb-servisov-i-sotsialnyih-setey#comments</comments>
		<pubDate>Tue, 17 Mar 2009 10:10:01 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Исследования]]></category>
		<category><![CDATA[Разработка сайтов]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1594</guid>
		<description><![CDATA[Меня удивляет непоследовательность разработчиков интерфейсов различных социальных сетей и веб-сервисов в организации навигации. Простая и понятная навигация встречается на очень редких сайтах. Это свидетельствует о том, что в разработке не участвуют специалисты по юзабилити, либо по каким-то техническим, экономическим, амибициозависимым соображениям их рекомендации не берутся во внимание.
Конечно я допускаю мысль о том, что часто изначально разработчики [...]]]></description>
			<content:encoded><![CDATA[<p>Меня удивляет непоследовательность разработчиков интерфейсов различных социальных сетей и веб-сервисов в организации навигации. Простая и понятная навигация встречается на очень редких сайтах. Это свидетельствует о том, что в разработке не участвуют специалисты по юзабилити, либо по каким-то техническим, экономическим, амибициозависимым соображениям их рекомендации не берутся во внимание.</p>
<p>Конечно я допускаю мысль о том, что часто изначально разработчики сами не знают какие функции будут доступны в их детище. Разработка циклична и возможно некоторые функциональные особенности будут со временем убраны или реорганизованны.</p>
<p>В любом случае в такого рода разработке нужен системный подход. В этой статье я расскажу, как я вижу сложную навигацию веб-сервиса (на примере социальной сети).</p>
<p>Как правило, социальная сеть состоит из пользователей, и содержимого, которое эти пользователи создают. Поэтому мы можем представить их взаимоотношение такой схемой:</p>
<p style="text-align: center;"><img class="size-full wp-image-1596 aligncenter" title="who-what" src="http://seleckis.lv/wp-content/uploads/2009/03/who-what.png" alt="" width="600" height="333" /></p>
<p>Если раскрыть значение этих блоков, то схема приобретает такой вид:</p>
<p style="text-align: center;"><img class="size-full wp-image-1597 aligncenter" title="who-what2" src="http://seleckis.lv/wp-content/uploads/2009/03/who-what2.png" alt="" width="600" height="333" /></p>
<p>Фактически мы говорим о том, что изначально пользователь выбирает, чей контент он хочет посмотреть: свой, своих друзей, групп в которых он состоит, или вообще публичный контент (это не всегда бывает). Причём здесь речь идёт только о контенте, который совпадает у всех «Кто?» есть на веб-сервисе.</p>
<p>Ну «со мной» всё понятно: я один и контент будет один. При просмотре контента друзей нужно сначала выбрать друга. Вариант классической «сборной солянки я не рассматриваю», поскольку это фактически является не частью костяка навигации, а всего лишь надстройкой. В группах то же самое — нужно выбрать группу, а потом её контент.</p>
<p>С «публикой» не всё так прозрачно, поскольку не существует универсальных механизмов выбора того пользователя, который нужен. Методов много, от банального поиска, до рейтингов, пузомеров, продвигаемых спонсорских групп и других. Поэтому метод выбора оставим абстрактным.</p>
<p style="text-align: center;"><img class="size-full wp-image-1599 aligncenter" title="who-what3" src="http://seleckis.lv/wp-content/uploads/2009/03/who-what3.png" alt="" width="600" height="480" /></p>
<p>Что же происходит в различных социальных сетях? А сами посмотрите. Это вам всё для затравочки. Продолжение будет о том, как организована навигация, а в особенности контролы.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/research/navigatsiya-veb-servisov-i-sotsialnyih-setey/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/research/navigatsiya-veb-servisov-i-sotsialnyih-setey</feedburner:origLink></item>
		<item>
		<title>Строчная кнопка как кнопка submit</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/rFs8KfPownY/strochnaya-knopka-kak-knopka-submit</link>
		<comments>http://seleckis.lv/journal/css/strochnaya-knopka-kak-knopka-submit#comments</comments>
		<pubDate>Sat, 28 Feb 2009 11:17:50 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1577</guid>
		<description><![CDATA[Требуется создать строчную кнопку submit неопределённой ширины  с фоновой картинкой.
Почему это нельзя сделать стандартными средствами? Т. е. мы конечно можем поместить на страницу кнопку



и спокойно её использовать. Но нет, нам же этого мало. Нужно чтобы кнопочка была красивая, градиентная, с закруглёнными уголками.
Стандартным способом мы можем указать фон для кнопки, добавить рамочку и в браузерах [...]]]></description>
			<content:encoded><![CDATA[<p>Требуется создать строчную кнопку submit неопределённой ширины  с фоновой картинкой.</p>
<p>Почему это нельзя сделать стандартными средствами? Т. е. мы конечно можем поместить на страницу кнопку</p>
<pre lang="html4strict">
<input type="submit" value="Нажми меня" />
</pre>
<p>и спокойно её использовать. Но нет, нам же этого мало. Нужно чтобы кнопочка была красивая, градиентная, с закруглёнными уголками.</p>
<p>Стандартным способом мы можем указать фон для кнопки, добавить рамочку и в браузерах FF и Safari добавить закругления. Но проблема в том, что это во-первых не будет работать в IE и Opera, а во вторых, размеры кнопочек, положение текста и отступы везде будут разные.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2009/02/input-test1.png" alt="" title="input-test1" width="480" height="521" /></p>
<p>В FF2 вообще фон вылез за край закруглений.</p>
<p>Можно попробовать поместить кнопку submit в элемент span, чтобы использовать метод Sliding Doors. В этом случае можно будет без проблем поставить в качестве фона картинки как для элемента «span», так и для элемента «input». Но к сожалению и этот способ не подойдёт, поскольку нет возможности адекватно выровнять текст по вертикали.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2009/02/input-test2.png" alt="" title="input-test2" width="480" height="521" /></p>
<p>Поэтому если визуальное представление гораздо важнее чистоты html-кода, то можно воспользоваться следующим методом.</p>
<h3>Двойной «span» и элемент «input»</h3>
<p>За основу возьмём <a href="http://seleckis.lv/journal/ctrochnaya-knopka-kak-ssyilka">статью о создании кнопки как ссылки</a>. Поскольку в данном случае ссылка нам не нужна, то мы её заменяем на span, а внутрь второго span-а помещаем кнопку submit:</p>
<pre lang="html4strict">
<span class="input-button"><span>Кнопка как кнопка
<input type="submit" value="Кнопка как кнопка" /></span></span>
</pre>
<p>Принцип Sliding Doors сохраняется и картинки кнопки помещаются в эти два span-а. Не забываем и про то, что кнопка должна быть уровня inline-block.</p>
<pre lang="css">
.input-button {
	display: -moz-inline-box; /* только для FF2 */
	display: inline-block;
	height: 20px;
	vertical-align: bottom;
	*vertical-align: middle;	/* только для IE */
	background: #83af31 url(button-r.gif) no-repeat right top;
	cursor: pointer;
}
.input-button span {
	display: block;
	_display: inline-block; /* только для IE6 */
	line-height: 20px;
	padding: 0 10px;
	height: 100%;
	color: #fff;
	background: url(button-l.gif) no-repeat left top;
	overflow: hidden;
	position: relative;
}
</pre>
<p>С кнопкой submit мы сделаем хитро. Разместим кнопку с абсолютным позиционированием относительно span-а поверх текста и сделаем её прозрачной. В итоге мы получим красивую кнопку с возможностями элемента «submit», ширина которой варьируется относительно текста помещённого внутрь.</p>
<p style="text-align: center"><img src="http://seleckis.lv/wp-content/uploads/2009/02/button-scheme.png" alt="" title="button-scheme" width="410" height="138" /></p>
<p>Можно сделать размер больше, как изображено на картинке, но можно и 100% высоту и ширину. Код следующий:</p>
<pre lang="css">
.input-button input {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	width: 100%;
	cursor: pointer;
	opacity: 0;
	-moz-opacity: 0; /* видимо для старых версий FF */
	filter: alpha(opacity=0); /* только для IE */
}
</pre>
<p>Все методы представлены в этом <a href='http://seleckis.lv/wp-content/uploads/2009/02/css-inline-button.zip'>архиве</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/strochnaya-knopka-kak-knopka-submit/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/css/strochnaya-knopka-kak-knopka-submit</feedburner:origLink></item>
		<item>
		<title>Cтрочная кнопка как ссылка</title>
		<link>http://feedproxy.google.com/~r/seleckis_lv/~3/lWkvoZqOshg/ctrochnaya-knopka-kak-ssyilka</link>
		<comments>http://seleckis.lv/journal/css/ctrochnaya-knopka-kak-ssyilka#comments</comments>
		<pubDate>Mon, 02 Feb 2009 09:08:22 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1535</guid>
		<description><![CDATA[Урок-инструкция о том, как следует делать кнопки предназначенные для расположения внутри текста. Имеется в виду, что кнопка будет располагаться на базовой линии строки между словами. Вот так:

Если мы располагаем кнопку внутри текста значит это кому-нибудь нужно мы хотим на неё нажать. А для нажатия обычно используются такие виды элементов, как ссылка и кнопки формы.
В случае [...]]]></description>
			<content:encoded><![CDATA[<p>Урок-инструкция о том, как следует делать кнопки предназначенные для расположения внутри текста. Имеется в виду, что кнопка будет располагаться на базовой линии строки между словами. Вот так:</p>
<p style="text-align: center;"><img title="inline-button" src="http://seleckis.lv/wp-content/uploads/2009/01/inline-button.png" alt="" width="503" height="124" /></p>
<p>Если мы располагаем кнопку внутри текста значит <del datetime="2009-01-30T08:36:17+00:00">это кому-нибудь нужно</del> мы хотим на неё нажать. А для нажатия обычно используются такие виды элементов, как ссылка и кнопки формы.</p>
<p>В случае со ссылкой всё просто: помещаем среди текста ссылку и задаем ей фон. Но чтобы фон отображался и выравнивался корректно, ссылке следует добавить свойство:</p>
<pre lang="css">
.button {
	display: -moz-inline-box; /* только для FF 2 */
	display: inline-block;
}
</pre>
<p>Т. е. мы превращаем наш строчный элемент в строчно-блочный. Firefox 2 это свойство не поддерживает, поэтому указываем специальное специфичное свойство имитирующее строчный блок. Следующее за ним свойство предназначено для всех остальных браузеров. После этого можно задать фон для кнопки.</p>
<p>Что делать если нужно в качестве фона задать две картинки: левую и правую? Для так называемого эффекта «Sliding Doors», нужно как минимум два элемента.</p>
<p>Сначала я попробовал обойтись без лишнего элемента:</p>
<ul>
<li>:first-line — не подходит, поскольку предназначен для элементов заведомо блочного уровня, и Опера сразу же переносит все слова в несколько строк и у ссылки пропадает фон.</li>
<li>:first-letter — не подходит, поскольку в Опере работает только для элементов заведомо блочного уровня</li>
<li>:before или :after вместе с content: &#8221; &#8221; — не подходят поскольку внутренний отступ (padding) у строчных элементов по вертикали в браузере Firefox отличается от Opera и Safari, а если превращать вставленный контент в элемент блочного уровня, то Firefox не поддерживает для него плавающий режим (float), а inline-block в Firefox позиционируется со сдвигами по вертикали.</li>
</ul>
<p>Можно было бы использовать хаки, но кто гарантирует, что в других версиях браузеров они будут доступны? Единственное в чём я уверен, так это в необратимости работы хаков для IE 6 и 7 (Хотя мне недавно приснился сон, что IE 6 обновили, исправили ошибки и добавили табы…)</p>
<p>Псевдо-классы и псевдо-элементы я проверял только в браузерах Safari, Opera и Firefox 3. Если в них не удается правильно спозиционировать всё что я хочу, то в другие браузеры я даже не смотрю.</p>
<p>Итог: придется использовать дополнительный элемент.</p>
<pre lang="html4strict">

…laboris nisi ut aliquip
	<a href="#" title="Нажмите кнопку" class="button"><span>Кнопка как ссылка</span></a>
ex ea commodo consequat…
</pre>
<p>Решение в CSS:</p>
<pre lang="css">
p{
	line-height: 20px;
}
.button {
	display: -moz-inline-box; /* только для FF 2 */
	display: inline-block;
	background: #83af31 url(button-r.gif) no-repeat right top;
}
.button span {
	display: block; /* нужно для FF 2 */
	display: inline-block; /* для всех кроме FF 2 */
	padding: 0 10px;
	height: 100%;
	background: url(button-l.gif) no-repeat left top;
	cursor: pointer;
}
.button:link span, .button:visited span {
	color: #fff;
	text-decoration: none;
}
.button:hover span, .button:active span {
	color: #dfd;
	text-decoration: none;
}
</pre>
<p>Некоторые пояснения:</p>
<ul>
<li>Высота кнопки должна равняться высоте строки в этом тексте. Это обязательно, иначе будут проблемы с позиционированием картинок на фоне. Опять же, для корректного отображения фона в IE 7 следует для span тоже добавить высоту, можно равной высоте кнопки, а можно просто — 100% <em>(Примечание: это не связано с hasLayout)</em></li>
<li>Для внутреннего элемента, сначала во всех браузерах применится «display: block», а потом, во всех кроме FF 2 сработает свойство «display: inline-block». Первое свойство будет корректно работать в FF 2, а второе — в IE 6, остальным браузерам всё равно.</li>
<li>Добавлено свойство «cursor:pointer», чтобы в IE при наведении на кнопку курсор стал «указующим перстом».</li>
</ul>
<p>Развиваем тему…</p>
<p>Что если кнопке нужно добавить что-то вроде стрелочки, указующей куда-либо. Например вот так:</p>
<p style="text-align: center;"><img title="inline-button-active" src="http://seleckis.lv/wp-content/uploads/2009/01/inline-button-active.png" alt="" width="508" height="121" /></p>
<p>Во-первых, если делать для всех браузеров кроме IE, то лишний элемент добавлять не нужно, можно воспользоваться «:after» и вставить стрелочку таким образом:</p>
<pre lang="css">
.button span:after {
	content: " ";
	display: block;
	margin-top: -2px;
	width: 100%;
	height: 8px;
	background: url(button-arrow.png) no-repeat top;
}
</pre>
<p>Т. е. внутри элемента span, после текста вставляется абстрактный строчный элемент с пробелом в качестве содержимого, превращается в блочный элемент и чуть чуть поднимается вверх.</p>
<p>Схематически это можно изобразить так:</p>
<p style="text-align: center;"><img src="http://seleckis.lv/wp-content/uploads/2009/01/inline-button-after.png" alt="" title="inline-button-after" width="294" height="132" /></p>
<p>Но поскольку надо сделать так, чтоб работало и в IE тоже, то придется добавить ещё один лишний элемент, а кнопке стоит добавить дополнительный класс:</p>
<pre lang="html4strict">

…laboris nisi ut aliquip
	<a href="#" title="Нажмите кнопку" class="button active"><span>Кнопка как ссылка<b></b></span></a>
ex ea commodo consequat…
</pre>
<p>Позиционирование для добавленного элемента уже будет абсолютное и в CSS добавится следующий код:</p>
<pre lang="css">
.button.active {
	height: 20px;
	vertical-align: bottom; /* нужно для Opera */
	*vertical-align: baseline;	/* только для IE */
}
.button.active span {
	position: relative;
}
.button.active span b {
	display: block;
	position: absolute;
	left: 50%;
	top: 18px;
	margin-left: -7.5px;
	width: 13px;
	height: 8px;
	background: url(button-arrow.png) no-repeat top;
}
</pre>
<p>Итак, что же мы сделали:</p>
<ul>
<li>Для класса «active» добавили высоту, чтобы высота кнопки не увеличилась за счёт добавленного элемента.</li>
<li>Туда же добавили вертикальное выравнивание по низу, чтобы в Opera из-за дополнительного элемента не возникло сдвигов. Отменили выравнивание по низу для IE с помощью хака. Другим браузерам по барабану.</li>
<li>Для элемента span добавили «position: relative», чтобы абсолютное позиционирование стрелочки было относительно элемента «span».</li>
</ul>
<p>В <a href='http://seleckis.lv/wp-content/uploads/2009/01/inline-button1.zip'>готовом примере</a> описание элемента «b» и хаки для IE были вынесены в Conditional Comments. Т. е. код почти валидный, не считая свойства «-moz-inline-box» для Firefox 2.</p>
<p>Вариант с кнопкой «submit» и «button», ждите в следующей статье.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/css/ctrochnaya-knopka-kak-ssyilka/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://seleckis.lv/journal/css/ctrochnaya-knopka-kak-ssyilka</feedburner:origLink></item>
	</channel>
</rss>

