<?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; HTML</title>
	<atom:link href="http://cascadi.ca/category/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://cascadi.ca</link>
	<description>Парад тегов</description>
	<lastBuildDate>Wed, 30 Nov 2011 15:59:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-alpha</generator>
		<item>
		<title>Дрессируем IE</title>
		<link>http://cascadi.ca/css/html5-css3-ie/</link>
		<comments>http://cascadi.ca/css/html5-css3-ie/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 14:17:23 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://cascadi.ca/?p=377</guid>
		<description><![CDATA[В последнее время появляется все больше и больше скриптов, эмулирующих работу CSS3 правил в IE, и скриптов, создающих элементы и атрибуты HTML5. Я вижу в этом только позитивные моменты: 

разметка страниц становится более чистой и семантичной
отпадает необходимость использовать изображения для&#160;&#8230; <a href="http://cascadi.ca/css/html5-css3-ie/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В последнее время появляется все больше и больше скриптов, эмулирующих работу CSS3 правил в IE, и скриптов, создающих элементы и атрибуты HTML5. Я вижу в этом только позитивные моменты: </p>
<ul>
<li>разметка страниц становится более чистой и семантичной</li>
<li>отпадает необходимость использовать изображения для теней, закругленных уголков и бордеров</li>
<li>inline-валидация форм</li>
<li>продвижение веб-стандартов</li>
<li>сохранение существующей разметки после того, как использование скриптов будет не нужно</li>
</ul>
<p>Как вы наверняка знаете, для интернет эксплорера нужно &#8220;включить&#8221; все новые элементы и атрибуты из HTML5, чтобы работать с ними. <a href="http://remysharp.com">Remy Sharp</a> написал <a href="http://html5shim.googlecode.com/svn/trunk/html5.js">скрипт</a>, включающий все элементы HTML5 в IE. Все что нужно, это вызвать скрипт в <code>head</code>&#8216;e, так как IE должен знать о элементе до того, как отрисовать его.</p>
<p>Для эмуляции некоторых CSS3 правил можно использовать <a href="http://css3pie.com/">CSS3 PIE</a>. На данный момент поддерживаются, либо частично поддерживаются следующие <a href="http://css3pie.com/documentation/supported-css3-features/">правила</a>:<br />
<img src="/images/posts/pie.png" style="float: right; margin: 18px 0 0 5px;" alt="CSS3 PIE" /></p>
<ul>
<li>border-radius</li>
<li>box-shadow</li>
<li>border-image</li>
<li>multiple background images</li>
<li>linear-gradient как background image</li>
<li>rgba</li>
</ul>
<p>CSS3 PIE использует <a href="http://msdn.microsoft.com/en-us/library/ms531078%28VS.85%29.aspx">Behaviors</a> для эмуляции, что накладывает некоторые ограничения и возможные неудобства:</p>
<ul>
<li>Вы должны будете подключать PIE Behavior в каждом правиле, со свойствами CSS3<br />
(<code>behavior: url(PIE.htc);</code>)</li>
<li>У всех элементов, в которых используется PIE должен быть выставлен <code>position:relative</code></li>
<li>Возможны проблемы с производельностью в интерактивных элементах</li>
</ul>
<p>В общем, в некоторых случаях PIE будет адекватной заменой существующим &#8220;костылям&#8221;, а в некоторых — нет. </p>
<p>Удачных опытов!</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/css/html5-css3-ie/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Разметка. Transitional vs Strict</title>
		<link>http://cascadi.ca/html/transitional-vs-strict-markup/</link>
		<comments>http://cascadi.ca/html/transitional-vs-strict-markup/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 08:18:45 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/?p=147</guid>
		<description><![CDATA[

Речь в статье пойдет о такой, казалось бы изжеваной и изъезженой теме, как валидация веб-документа по одной из DTD-схем, которые в свою очередь определяются с помощью DOCTYPE.
Тема эта нетривиальна; преимущества и недостатки того или иного способа валидации на первый взгляд&#160;&#8230; <a href="http://cascadi.ca/html/transitional-vs-strict-markup/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img alt="XHTML Strict" src="/images/posts/valid-xhtml-robot.png" title="XHTML Strict" class="alignright" width="300" height="285" />
</p>
<p>Речь в статье пойдет о такой, казалось бы изжеваной и изъезженой теме, как валидация веб-документа по одной из DTD-схем, которые в свою очередь определяются с помощью <a href="http://www.webmakerslounge.com/html/pravilnyiy-doctype/">DOCTYPE</a>.</p>
<p>Тема эта нетривиальна; преимущества и недостатки того или иного способа валидации на первый взгляд не всегда являются явными. Поэтому я решил что упомянуть о них еще раз будет не лишним.</p>
<p>В последнее время, многие редакторы и CMS&#8217;ки автоматически проставляют DOCTYPE для документа, что само по себе является прорывом, но к сожалению этого недостаточно, так как зачастую это именно Transitional схема. Начинающие разработчики не уделяют этому должного внимания, а зачастую вобще не подозревают что у них есть выбор.</p>
<p>Перед тем как перейти к самой сути вопроса давайте вспомним что такое Transitional схема. Она была создана как переходная, для облегчения перехода от HTML3.2 к HTML4, сохраняя унаследованые элементы и атрибуты.</p>
<p><span id="more-147"></span></p>
<p>Абстрагируясь от конкретного языка, не важно то ли это HTML или XHTML, основной недостаток Transitional заключается в том, что переходная схема валидации допускает присутствие в разметке элементов, отвечающих за презентативное, визуальное отображение.</p>
<p>Современная веб-разработка зиждется на трех китах &#8211; разметка (html/xhtml/xml), оформление (css) и функционал с эффектами (javascript). Причем акцент здесь приходится на четкое разделение между ними. Разметка является логическим разделением документа на семантические, смысловые составляющие. Стилевые правила, вынесеные в отдельный файл(ы), отвечают за оформление документа относительно устройств отображения.  Скрипты, отвечающие за взаимодействие между документом и пользователем, а так же за эффекты, также вынесены в отдельные файлы. Смешение всех этих компонентов в одном документе считается моветоном и заметно усложняет жизнь веб-разработчика и порядочно увеличивает время загрузки и отображения документа браузером.</p>
<p>К сожалению все мы далеки от идеала и все вышеописаные проблемы присутствовали всегда. Но время не стоит на месте, языки разметки развиваются. Разработчики движутся вместе с ними вперед, но и о наследии забывать не стоит. Поэтому и была придумана переходная схема, позволяющая отвалидировать документ, содержащий кашу из элементов, стилей, атрибутов и скриптов.</p>
<p>Все это делалось в надежде на то, что сознательные разработчики перейдут на новый стандарт, а затем подтянут и свои проекты. Но в данном случае, к сожалению, очень хорошо подходит выражение &#8220;<em>нет ничего более постоянного, чем временное</em>&#8220;.</p>
<p><strong>А что же собственно делать?</strong>Использовать Strict DTD — строгую, однозначную схему валидации документа, которая как раз создана для того чтобы отделить содержимое от стилей и скриптов. Как это сделать? Очень просто. В следующем вашем проекте просто поменяйте DOCTYPE на один из этих:</p>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;</code></pre>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</code></pre>
<p>Кстати, W3C однозначно рекомендует использовать Strict.</p>
<blockquote><p>&#8220;This is the HTML 4.01 Transitional DTD, which includes presentation attributes and elements that W3C expects to phase out as support for style sheets matures. Authors should use the Strict DTD when possible, but may use the Transitional DTD when support for presentation attribute and elements is required.&#8221;</p>
</blockquote>
<p>Чего вы лишаетесь, переходя на строгую схему валидации:</p>
<p><strong>Список запрещеных элементов</strong>: <em>applet, basefont, center, dir, font, iframe, isindex, menu, noframes, s, strike, u</em></p>
<p><strong>Список запрещеных атрибутов</strong>: </p>
<ul>
<li>Атрибут <em>alink</em> запрещен для <em>body</em></li>
<li>Атрибут <em>background</em> запрещен для <em>body</em></li>
<li>Атрибут <em>bgcolor</em> запрещен для <em>body, table, td, th, tr</em></li>
<li>Атрибут <em>border</em> запрещен для <em>img, object</em>, но может быть использован в < em>table</li>
<li>Атрибут <em>clear</em> запрещен для <em>br</em></li>
<li>Атрибут <em>language</em> запрещен для <em>script</em></li>
<li>Атрибут <em>link</em> запрещен для <em>body</em></li>
<li>Атрибут <em>name</em> запрещен для <em>form, img</em>, но может быть использован в <em>a, button, input, map, meta, object, param, select, textarea</em></li>
<li>Атрибут <em>noshade</em> запрещен для <em>hr</em></li>
<li>Атрибут <em>nowrap</em> запрещен для <em>td, th</em></li>
<li>Атрибут <em>start</em> запрещен для <em>ol</em></li>
<li>Атрибут <em>target</em> запрещен для <em>a, area, base, form, link</em></li>
<li>Атрибут <em>text</em> запрещен для <em>body</em></li>
<li>Атрибут <em>type</em> запрещен для <em>li, ol, ul</em>, но может быть использован в <em>a, button, input, link, object, param, script, style</em></li>
<li>Атрибут <em>value</em> запрещен для <em>li</em>, но может быть использован в <em>button, input, option, param</em></li>
<li>Атрибут <em>vlink</em> запрещен для <em>body</em></li>
</ul>
<p><strong>Структурные изменения</strong>: элементы <em>a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var</em> и текст не могут быть дочерними для <em>blockquote, body, form, noscript</em>. Другими словами &#8211; элементы <em>blockquote, body, form, noscript</em> могут иметь только блочные элементы в дочерних элементах первого уровня.</p>
<p>Отказ от атрибута <em>target=&#8221;_blank&#8221;</em> для ссылок. Во-первых, указывать пользователю на то, как и где открывать ссылку — не красиво. Во-вторых, если необходимо, это можно сделать <a href="http://www.webmakerslounge.com/html/forget-about-target-attribute/">простым</a> способом и <a href="http://www.456bereastreet.com/archive/200610/opening_new_windows_with_javascript_version_12/" class="out">продвинутым</a>. </p>
<p>Что вы приобретаете?</p>
<ul>
<li>Хорошо структурированую разметку</li>
<li>Четкое отделение содержимого от оформления</li>
<li>Возможность более быстрой и легкой работы и поддержки кода</li>
<li>Дисциплину в написании кода</li>
<li>Респект и уважуху ;)</li>
</ul>
<p><strong>Когда стоит использвать Transitional?</strong> Тут есть два основных момента. Переходная схема хороша, когда вы работаете с большим количеством чужого кода, поменять который не представляется возможным. Хороший пример — большинство CMS. В большинстве случаев невозможно изменить их код, не залезая в ядро, что автоматически исключает возможность обновлений.</p>
<p>Второй момент — использование iframe. Если вы используете в своих проектах iframe, то он не оставляет вам выбора. Используте Transitional.</p>
<p>Дабы облегчить себе переход от переходной схемы к строгой во время разметки документа думайте о том, для чего нужен тот или иной элемент, а не о том как он будет выглядеть.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/html/transitional-vs-strict-markup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>(X)HTML &#8211; структура и семантика кода</title>
		<link>http://cascadi.ca/html/xhtml-semantics-structure/</link>
		<comments>http://cascadi.ca/html/xhtml-semantics-structure/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 12:52:30 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/html/xhtml-semantics-structure/</guid>
		<description><![CDATA[Структура правильного HTML-документа базируется на логике, порядке и использовании семантически корректной верстки. Если у вас есть заголовок &#8211; используйте для него елементы Heading(h1-h6), если абзац/параграф &#8211; paragraph(p). Если у вас есть список &#8211; используйте элементы списков (ul/ol), если вы цитируете&#160;&#8230; <a href="http://cascadi.ca/html/xhtml-semantics-structure/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Структура правильного HTML-документа базируется на логике, порядке и использовании семантически корректной верстки. Если у вас есть заголовок &#8211; используйте для него елементы Heading(<strong>h1</strong>-<strong>h6</strong>), если абзац/параграф &#8211; paragraph(<strong>p</strong>). Если у вас есть список &#8211; используйте элементы списков (<strong>ul</strong>/<strong>ol</strong>), если вы цитируете &#8211; используте <strong>blockquote</strong> или <strong>cite</strong>. Эти элементы придают смысловое значение разметке, делая ее семантически корректной, в дополнение к правильной структуре.</p>
<p>После составления корректного HTML-макета, используйте CSS для визуального оформления. (Тут уже дело вкуса, некоторые верстают CSS &#8220;с лету&#8221;, а некоторые только после создания HTML-макета)</p>
<p>Стандарт XHTML более строг к синтаксису чем HTML, он не допускает наличия незакрытых тегов, одинарные теги тоже должны быть закрыты (self-closing). Элементы в XHTML прописываются строчными, а не заглавными буквами. Значения атрибутов элементов должны быть указаны в кавычках. Есть и другие отличия, но более подробно я описывать их здесь не буду. <span id="more-116"></span><br />
Есть два момента, которые нужно помнить всегда:</p>
<ul>
<li>(X)HTML предназначен для разметки содержимого и только</li>
<li>CSS предназначен для визуального оформления содержимого</li>
</ul>
<p>Почему семантика? Я приведу важные на мой взгляд аспекты:</p>
<ul>
<li>Структурированый код гораздо лучше читается поисковиками</li>
<li>Код будет понятен не только автору, но и тем, кто будет работать с ним после него</li>
<li>Работа с DOM&#8217;ом становится проще и доступнее.</li>
</ul>
<p>Не стоит путать семантику и валидность. Если документ валиден, это еще не значит что он семантически корректен. Валидатор не знает, к примеру, что вы вместо заголовков использовали жирный шрифт, оформленный в CSS, или же что ваш список ссылок, совсем не список, а параграфы через перенос строки.</p>
<p>Кстати валидность, по моему мнению, относится к минимальным требованиям к коду и является обязательной. И это не дань моде, а порядок и инструмент самопроверки. Но это отдельная тема.</p>
<p><strong>Некоторые основные элементы разметки</strong></p>
<p><strong>Заголовки</strong><br />
Используте элементы <strong>h1</strong> &#8211; <strong>h6</strong> для оформления заголовков документа. Не пытайтесь &#8220;подделать&#8221; заголовки визуально с помощью CSS, это черевато проблемами с поисковиками.</p>
<pre><code>&lt;h1&gt;Заголовок&lt;/h1&gt;
&lt;h2&gt;Подзаголовок&lt;/h2&gt;</code></pre>
<p><strong>Абзац/Параграф</strong></p>
<p>Пользуйтесь элементом p для создания абзацев в тексте, не обрывайте строку с помощью br. (И помните, в HTML-документе, не может быть текста, не &#8220;обернутого&#8221; в теги). Элемент br можно использовать, но надо делать это с умом.Неверно:</p>
<pre><code>Мама мыла раму&lt;br /&gt;
Папа курил Приму </code></pre>
<p>Верно:</p>
<pre><code>&lt;p&gt;Мама мыла раму&lt;/p&gt;
&lt;p&gt;Папа курил приму&lt;/p&gt;</code></pre>
<p><strong>Выделение текста</strong></p>
<p><strong>em</strong><br />
Используйте элемент em для выделения текста из общего контекста. Если раньше вы использовали для этого элемент <strong>i</strong>, делающий текст наклонным, то прекратите это, так как в данном случае выделение будет сугубо визуальным, а в случае использования <strong>em</strong>, еще и логическим.</p>
<p><strong>strong</strong><br />
Элемент <strong>strong</strong> пришел на замену элементу <strong>b</strong>. Логика использования примерно та же, что и в <strong>em</strong>/<strong>i</strong>, с той лишь разницей, что в данном случае выделение текста будет жирным шрифтом.</p>
<p>Неверно:</p>
<pre><code>Здесь есть &lt;i&gt;выделеное&lt;/i&gt; слово </code></pre>
<p>Верно:</p>
<pre><code>Здесь есть &lt;em&gt;выделеное&lt;/em&gt; слово </code></pre>
<p><strong>Цитирование</strong><br />
Элемент <strong>cite</strong> хорош для выделения коротких цитат внутри текста, и является строчным элементом.<br />
Элемент <strong>blockquote</strong> также используется для цитирования, но будет полезен для больших цитат, вынесеных в отдельные блоки. Является блочным элементом.</p>
<p>Примеры:</p>
<pre><code>&lt;p&gt;&lt;cite&gt;Девелопер предлагающий крэки, подобен корове, рекламирующей говядину&lt;/cite&gt; - Paradigm.ru&lt;/p&gt;</code></pre>
<p>Дополнительно, можно использовать атрибут <strong>cite</strong> элемента <strong>blockquote</strong> для указания источника цитаты:</p>
<pre><code>&lt;blockquote cite="http://www.w3c.org"&gt;The value of this attribute is a URI that designates a source document or message. This attribute is intended to give information about the source from which the quotation was borrowed.&lt;/blockquote&gt;</code></pre>
<p><strong>Списки</strong></p>
<p>Если у вас есть списки (к примеру меню &#8211; это ничто иное как список ссылок) &#8211; используйте элементы списков <strong>ul</strong>/<strong>ol</strong>, ненумерованый и нумерованый список соответственно. Оформление списков в CSS позволяет добиться очень впечатлающих результатов.</p>
<p>Неправильно:</p>
<pre><code>&lt;a hrеf="about.html"&gt;Обо мне&lt;/a&gt;&lt;br/&gt;
&lt;а hrеf="services.html"&gt;Услуги&lt;/a&gt;&lt;br/&lt;
&lt;а hrеf="notes.html"&gt;Заметки&lt;/a&gt;&lt;br/&gt;
&lt;а hrеf="grandma.html"&gt;Бабушка&lt;/a&gt;</code></pre>
<p>Правильно:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;&lt;а hrеf="about.html"&gt;Обо мне&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="services.html"&gt;Услуги&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="notes.html"&gt;Заметки&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="grandma.html"&gt;Бабушка&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>
<p>Определяющие списки</p>
<p>Определяющие списки (<strong>dl</strong>) созданы для определения чего-либо и его описания. В отличии от обычных списков, в <strong>dl</strong> изначально указывается <strong>dt</strong>(definition term) &#8211; термин, а затем его описание/я <strong>dd</strong>(definition description). Определяющие списки подходят для разметки диалогов, страниц ЧаВо, технической документации.</p>
<p>Пример:</p>
<pre><code>&lt;dl&gt;
&lt;dt&gt;Вася:&lt;/dt&gt;
&lt;dd&gt;А я все равно буду верстать таблицами!&lt;/dd&gt;
&lt;dt&gt;Петя:&lt;/dt&gt;
&lt;dd&gt;Ну и дурак!&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>Данная статья не претендует на полноту раскрытия темы, а лишь приоткрывает некоторые ее аспекты. Надеюсь что она будет полезна начинающим и колеблющимся.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/html/xhtml-semantics-structure/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Блокируем нежелательные HTML-элементы с помощью CSS</title>
		<link>http://cascadi.ca/css/disabling-deprecated-html-with-css/</link>
		<comments>http://cascadi.ca/css/disabling-deprecated-html-with-css/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 00:11:33 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/css/disabling-deprecated-html-with-css/</guid>
		<description><![CDATA[Часто, когда мы сдаем проект клиенту, мы теряем контроль над HTML-кодом. Иногда клиент использует CMS (Системы Управления Контентом), которые дают ему полный контроль над теми или иными частями HTML-кода. Иногда клиент просто использует наши темплейты для вывода своего кода в&#160;&#8230; <a href="http://cascadi.ca/css/disabling-deprecated-html-with-css/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Часто, когда мы сдаем проект клиенту, мы теряем контроль над HTML-кодом. Иногда клиент использует CMS (Системы Управления Контентом), которые дают ему полный контроль над теми или иными частями HTML-кода. Иногда клиент просто использует наши темплейты для вывода своего кода в документ.</p>
<p>В большинстве случаев довольно тяжело проинформировать клиента о том, как использовать темплейты или CMS, которые вы ему предоставляете, а иногда просто неприемлемо толкать пламенные речи о семантической верстке и веб-стандартах. Клиент может/будет использовать &#8220;старую, добрую разметку&#8221;, ту, которую он знает, просто потому что она работает и выглядит так как он привык. Скорее всего в ней будут присутствовать нежелательные (deprecated) тэги и атрибуты, такие как <em>bgcolor, align</em> и &#8220;вечный&#8221; <em>font</em>. Эта статья о том, как блокировать нежелательные HTML-тэги с помощью CSS, тем самым аккуратно направляя клиента в правильном направлении.</p>
<p><span id="more-112"></span>Есть несколько решений проблемы. Одно из них &#8211; вывод предупреждающего изображения с помощью CSS, когда изпользуются нежелательные тэги. Подробные обьяснения этого способа есть <a class="out" href="http://www.456bereastreet.com/archive/200710/helping_your_client_maintain_markup_quality/">здесь</a> и <a class="out" href="http://accessites.org/site/2006/07/big-red-angry-text/">здесь</a>. Второе решение &#8211; &#8220;вырезание&#8221; нежелательных тегов и атрибутов на стороне сервера. Этот способ является наиболее эффективным, другое дело что не всегда есть контроль за сервером где расположен сайт.</p>
<p><strong>Идея состоит в том, чтобы сохранить естественный каскад и наследие стилей во всех браузерах, элегантно &#8220;отключая&#8221; HTML, нежелательный к использованию клиентом.</strong> И тогда клиент перестанет использовать его, потому что нежелательные тэги просто перестанут &#8220;работать&#8221;. Элегантный и ненапрягающий клиента способ, который направит его по верному пути.</p>
<p>Нежелательные HTML-тэги и атрибуты:</p>
<pre><code> &lt;font&gt;
&lt;basefont&gt;
&lt;center&gt;
&lt;strike&gt;
&lt;s&gt;
&lt;u&gt;
bgcolor
border
align
vspace
hspace
valign
width
height
</code></pre>
<p><strong>Решение</strong></p>
<p>В идеале мы могли бы просто откорректировать некоторые HTML-тэги, вставив значение <em>inherit</em> для эквивалентного CSS-свойства. Браузеры, работающие по стандартам, просто проигнорируют заданные в коде нежелательные атрибуты и будут использовать вместо них наследуемые значения в каскаде.</p>
<p>На пример этот CSS:</p>
<pre><code> font { color:inherit; } </code></pre>
<p>будет превалировать над этим кодом:</p>
<pre><code> &lt;font color="blue"&gt;blue&lt;/font&gt; </code></pre>
<p>Соответственно цвет текста внутри тэга <em>font</em> будет цветом, наследуемым по каскаду, а не синим, как задано в коде. То что надо. Но как вы наверняка знаете &#8211; у Internet Explorer есть проблемы с наследуемыми значениями. И в седьмой версии тоже. Так что за работу:</p>
<p><strong> Expressions и currentStyle в помощь:</strong></p>
<pre><code> font {
color:inherit; /* Нормальные браузеры */
color:expression(this.parentNode.currentStyle["color"]); /* IE */ }</code></pre>
<p>Работает? Отлично, поехали дальше:</p>
<pre><code> font {
font-family:inherit; /* Нормальные браузеры */
font-family:expression(this.parentNode.currentStyle["fontFamily"]); /* IE */
} </code></pre>
<p>Все чудесно, кроме того что Opera 9 не наследует значение для <em>font-family</em>. К счастью <em>font</em> нас тоже устроит:</p>
<pre><code> font {
font:inherit; /* Нормальные браузеры */
font-family:expression(this.parentNode.currentStyle["fontFamily"]); /* IE */
}</code></pre>
<p>С этим разобрались. Перейдем к свойству <em>font-size</em>. Здесь нужна деликатность, так как значение размера шрифта наследуется по отношению к вычисляемому (computed) значению. Предыдушие <em>expression</em>&#8216;ы здесь не сработают, так как если для <em>body</em> выставлено значение свойства <em>font-size</em>, равное 2em, то вычисление значения размера шрифта начнется от этой точки. Браузер проверит значение <em>font-size</em> для родительского элемента тэга <em>font</em>, которое равняется 2em и представит вычисляемое значение, равное 4em (2em от 2em). А это не то что нам нужно. Решение простое. Нужно использовать начальное значение <em>font-size</em>, равное 100% для всех браузеров. Давайте добавим несколько свойств нежелательному тэгу <em>basefont</em>, чтобы и его утихомирить. Вот полный список правил для &#8220;укрощения&#8221; тэгов <em>font</em> и <em>basefont</em>:</p>
<pre><code> font,basefont {
color:inherit; /* Нормальные браузеры */
color:expression(this.parentNode.currentStyle["color"]); /* IE */
font:inherit; /* Нормальные браузеры. Font вместо font-size для Оперы */
font-family:expression(this.parentNode.currentStyle["fontFamily"]); /* IE */
font-size:100%; /* Все браузеры. Размеры наследуются */
}</code></pre>
<p>Двигаемся дальше. Давайте воспользуемся базовой техникой, чтобы отменить тэги <em>center, s, strike</em> и <em>u</em>:</p>
<pre><code>center {
text-align:inherit; /* Нормальные браузеры */
text-align:expression(this.parentNode.currentStyle["textAlign"]); /* IE */
}
s,strike,u {
text-decoration:inherit; /* Нормальные браузеры */
text-decoration:expression(this.parentNode.currentStyle["textDecoration"]); /* IE */
}</code></pre>
<p>Свершилось! Мы &#8220;отключили&#8221; большинство нежелательных тэгов, используя только CSS и expression&#8217;ы.</p>
<p>А как же атрибуты? HTML4 включает в себя некоторое количество нежелательных атрибутов, которые могут изрядно попортить нервы. Давайте их тоже &#8220;повыключаем&#8221;. Начнем с <em>align</em>:</p>
<pre><code>*[align] { text-align:inherit; } /* Нормальные браузеры */</code></pre>
<p>Все бы хорошо, но IE6 не поддерживает селекторы атрибутов. Посему, нам надо модифицировать <em>expression</em>, для того чтобы он проверял наличие атрибута <em>align</em> у тэга. Вот что получилось:</p>
<pre><code>*[align] { text-align:inherit; } /* Нормальные браузеры */
* { text-align:expression(this.align ? this.parentNode.currentStyle["textAlign"] : ''); } /* IE */</code></pre>
<p>Далее на очереди атрибуты тэга <em>img</em>. Помимо атрибута <em>align</em>, мы хотим отключить атрибуты <em>border, vspace</em> и <em>hspace</em>. Так как значения <em>margin</em> и <em>border</em> не наследуются, то здесь применимо простое правило:</p>
<pre><code>img { margin:0; border:none; } /* Все браузеры */ </code></pre>
<p>Вот здесь мы как раз сталкиваемся с неразрешимой проблемой для IE6. <em>vspace</em> и <em>hspace</em> не равнозначны свойству<em> margin</em> в нем, поэтому IE6 будет продолжать отображать их. Единственное решение, которое пришло мне в голову это написать маленький скриптик, который будет просто удалять эти атрибуты при загрузке документа:</p>
<pre><code>window.onload = function() {
for (i=0;i
document.getElementsByTagName("img")[i].removeAttribute("vspace");
document.getElementsByTagName("img")[i].removeAttribute("hspace");
}
}</code></pre>
<p>Я бы предпочел не использовать<em> javascript</em>, но в данном случае я просто не вижу другой альтернативы. Так что пусть будет. Теперь добьем атрибут <em>type</em> в тэге <em>ol</em>:</p>
<pre><code>ol { list-style-type:decimal; } /* Все браузеры */</code></pre>
<p>А теперь атрибут <em>bgcolor</em> для<em> body</em>:</p>
<pre><code>body { background-color:transparent; } /* Все браузеры */</code></pre>
<p>Таблицы. Финальный шаг. В таблицах, в HTML4/4.01, есть ряд нежелательных атрибутов, которые активно использовались для верстки страниц. Но мы же не хотим, чтобы клиент использовал таблицы для верстки? Поэтому давайте отключим атрибуты <em>width, height, bgcolor, valign</em> и <em>border</em>:</p>
<pre><code>table,tr,th,td {
width:auto; /* Все браузеры */
height:auto; /* Все браузеры */
background-color:transparent; /* Все браузеры */
vertical-align:inherit; /* Все браузеры (включая IE) */
border:none; /* Все браузеры */
}</code></pre>
<p>Подведем итоги:</p>
<p>Используя CSS-правила и минимальный javascript, нам удалось &#8220;отключить&#8221; большинство нежелательных тэгов и атрибутов, элегантно сохраняя естественное наследование. Нам не нужно &#8220;учить&#8221; клиента, он в любом случае должен будет использовать правильную разметку. С учетом одной, очень важной ремарки &#8211; очень важно предоставить клиенту достаточное количество описаных CSS-классов, чтобы он не был ограничен в работе с разметкой.</p>
<p>Все стили вместе:</p>
<pre><code>font,basefont {
color:inherit; /* Нормальные браузеры */
color:expression(this.parentNode.currentStyle["color"]); /* IE */
font:inherit; /* Нормальные браузеры. Font вместо font-size для Оперы */
font-family:expression(this.parentNode.currentStyle["fontFamily"]); /* IE */
font-size:100%; /* Все браузеры */
}
center {
text-align:inherit; /* Нормальные браузеры */
text-align:expression(this.parentNode.currentStyle["textAlign"]); /* IE */
}
s,strike,u {
text-decoration:inherit; /* Нормальные браузеры */
text-decoration:expression(this.parentNode.currentStyle["textDecoration"]); /* IE */
}
*[align] { text-align:inherit; }  /* Нормальные браузеры */
* { text-align:expression(this.align ? this.parentNode.currentStyle["textAlign"] : ''); }  /* IE */
img { margin:0; border:none; }  /* Все браузеры */
ol { list-style-type:decimal; }  /* Все браузеры */
body { background-color:transparent; /* Все браузеры */ }
table,tr,th,td {
width:auto; /* Все браузеры */
height:auto; /* Все браузеры */
background-color:transparent; /* Все браузеры */
vertical-align:inherit; /* Все браузеры (включая IE) */
border:none; /* Все браузеры */
}</code></pre>
<p>По материалам <a href="http://monc.se/kitchen/140/disabling-deprecated-html-using-css" class="out">monc.se</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/css/disabling-deprecated-html-with-css/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Забыть о target</title>
		<link>http://cascadi.ca/html/forget-about-target-attribute/</link>
		<comments>http://cascadi.ca/html/forget-about-target-attribute/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 09:57:17 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/html/forget-about-target-attribute/</guid>
		<description><![CDATA[Гениальный в своей простоте способ заставить ссылку открыться в новом табе/окне, не используя deprecated атрибут target:
< а onclick="return !window.open(this.href)" hrеf="http://www.google.com">
Преимущества этого способа перед обычным open.window(url) в том, что если javascript отключен, то ссылка все равно сработает. Кроме того, ссылка будет&#160;&#8230; <a href="http://cascadi.ca/html/forget-about-target-attribute/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Гениальный в своей простоте способ заставить ссылку открыться в новом табе/окне, не используя <acronym style="border-bottom: 1px dotted #333333; cursor: help" title="нежелательный по схеме XHTML 1 Strict">deprecated</acronym> атрибут <strong>target</strong>:</p>
<pre><code>< а onclick="return !window.open(this.href)" hrеf="http://www.google.com"></code></pre>
<p>Преимущества этого способа перед обычным <strong>open.window(url)</strong> в том, что если javascript отключен, то ссылка все равно сработает. Кроме того, ссылка будет проиндексирована поисковиками.</p>
<p>Проверено в FF2, IE6/7, Opera 9.20, Safari/Win.</p>
<p><strong>Поведение браузеров при нажатии Ctrl+Click / Shift+Click:</strong><br />
В IE6 &#8211; в обоих случаях новое окно.<br />
В IE7 &#8211; в обоих случаях новый таб (подозреваю что зависит от настроек браузера)<br />
В FF2 &#8211; неадекват. ctrl+click открывает две вкладки, shift+click вкладку и окно<br />
Opera &#8211; в обоих случаях новый таб<br />
Safari/Win &#8211; в обоих случаях новое окно</p>
<p>При нажатии колесиком мышки ссылка срабатывает как обычно везде, кроме IE6, естественно.</p>
<p>In general, не стоит принуждать посетителей к чему-либо, предпочтительнее дать посетителю знать какого рода сама ссылка (файл [включая тип], внешняя/окно) с помощью иконок, которые можно легко прикрутить с помощью CSS, на пример <a class="out" href="http://www.hunlock.com/blogs/Attach_icons_to_anything_with_CSS">вот так</a>, тем самым давая ему возможность выбрать самому, где ее открыть.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/html/forget-about-target-attribute/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Верстаем HTML/CSS календарь</title>
		<link>http://cascadi.ca/css/dl-calendar/</link>
		<comments>http://cascadi.ca/css/dl-calendar/#comments</comments>
		<pubDate>Wed, 16 May 2007 06:37:23 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/news/dl-calendar/</guid>
		<description><![CDATA[Понадобилось мне вчера сделать календарь, чтобы при наведении мышки на любое число появлялась подсказка в специальном окошке и чтобы само число было ссылкой на произвольную страницу.
Готовых скриптов в Сети много, разной степени навороченности и крутизны, но мне нужно было что-то&#160;&#8230; <a href="http://cascadi.ca/css/dl-calendar/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне вчера сделать календарь, чтобы при наведении мышки на любое число появлялась подсказка в специальном окошке и чтобы само число было ссылкой на произвольную страницу.</p>
<p>Готовых скриптов в Сети много, разной степени навороченности и крутизны, но мне нужно было что-то простое и я не хотел использовать javascript, поэтому решил сделать сам. И вот что у меня получилось:</p>
<div style="text-align: center"><img alt="HTML/CSS календарь" title="HTML/CSS календарь" src="/images/posts/calendar_dl.gif" /></div>
<p>Давайте посмотрим как делается симпатичный календарь с помощью HTML/CSS. <span id="more-95"></span><br />
Как видно из скриншота, было довольно много ограничений, в основном по размерам. Фактически пришлось втиснуть весь месяц в кубик размерами 200х150 пикселей. Так как календарь верстался для уже готового сайта, то простора для творчества было совсем мало.</p>
<p>Начнем с кода. Мне показалось логичным сделать календарную структуру с помощью <strong>definition list</strong>.</p>
<p><strong>Definition term</strong> я оставил пустым, так как заголовок был задан в бэкграунде. Месяц, названия дней недели и числа я описал списками, вложеными в <strong>definition description</strong>.</p>
<p>Собственно весь HTML:</p>
<pre><code>&lt;dl&gt;
&lt;dt&gt; &lt;/dt&gt;
&lt;dd&gt;
&lt;p class="month"&gt;May 07&lt;/p&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;ul class="week"&gt;
&lt;li&gt;S&lt;/li&gt;
&lt;li&gt;M&lt;/li&gt;
&lt;li&gt;T&lt;/li&gt;
&lt;li&gt;W&lt;/li&gt;
&lt;li&gt;T&lt;/li&gt;
&lt;li&gt;F&lt;/li&gt;
&lt;li&gt;S&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;ul class="days"&gt;
&lt;li&gt;&lt;а hrеf="#"&gt; &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt; &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;1&lt;span&gt;Content 1&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;2&lt;span&gt;Content 2&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;3&lt;span&gt;Content 3&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;4&lt;span&gt;Content 4&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;5&lt;span&gt;Content 5&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;6&lt;span&gt;Content 6&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;7&lt;span&gt;Content 7&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;8&lt;span&gt;Content 8&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;9&lt;span&gt;Content 9&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;10&lt;span&gt;Content 10&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;11&lt;span&gt;Content 11&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;12&lt;span&gt;Content 12&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;13&lt;span&gt;Content 13&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;14&lt;span&gt;Content 14&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;15&lt;span&gt;Content 15&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;16&lt;span&gt;Content 16&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;17&lt;span&gt;Content 17&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;18&lt;span&gt;Content 18&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;19&lt;span&gt;Content 19&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;20&lt;span&gt;Content 20&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;21&lt;span&gt;Content 21&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#"&gt;22&lt;span&gt;Content 22 Blah blah many content much more content&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;23&lt;/li&gt;
&lt;li&gt;24&lt;/li&gt;
&lt;li&gt;25&lt;/li&gt;
&lt;li&gt;26&lt;/li&gt;
&lt;li&gt;27&lt;/li&gt;
&lt;li&gt;28&lt;/li&gt;
&lt;li&gt;29&lt;/li&gt;
&lt;li&gt;30&lt;/li&gt;
&lt;li&gt;31&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dd id="descr"&gt;Point cursor to some date&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>Здесь я думаю стоти прояснить один момент. Внутри каждого элемента списка есть ссылка, текстом которой является само число и там же находится <em>span</em>, внутри которого находится текст подсказки, которая нужна нам при наведении мышки. У <em>span</em>&#8216;а изначально прописано свойство <strong>display:none</strong>, чтобы его не было видно.</p>
<p>Так как <em>span</em> находится  в ссылке (как Ленин в свое время :) ), то мы можем поменять ему свойства на событии <strong>hover</strong>. Все что нам нужно это поменять свойство <strong>display</strong> на <strong>block</strong>. Ну почти все. Этот способ называется <a class="out" href="http://meyerweb.com/eric/css/edge/popups/demo.html">Pure CSS Popups</a>, который описал небезызвестный <a class="out" href="http://meyerweb.com/">Eric Meyer</a>.</p>
<p>Но рыжий Эрик схитрил(?) и не описал у себя баг, из-за которого способ не работает в IE6&#8230; Но Гугль как всегда рулит и я нашел <a class="out" href="http://www.tanfa.co.uk/css/articles/pure-css-popups-bug.asp">решение</a> этой проблемы.  Суть его сводится к тому, что в a:hover ОБЯЗАТЕЛЬНО нужно указать какое-либо свойство, которое не присутствует в <strong>a:link</strong>, <strong>a:visited</strong> и <strong>a:active</strong>. Любое кроме <em>color</em>. Я выбрал <strong>text-indent: 0</strong>. Ура, заработало!<br />
Есть еще один момент. Так как мне нужно было абсолютно позиционировать текст подсказки внутри блока, то для <em>definition list</em> я задал <strong>position:relative</strong>, не указывая явно <em>top</em> и <em>left</em>,  а для <em>span</em> с подсказкой <strong>position:absolute</strong> и координаты.</p>
<p>Всем элементам списка я задал фиксированую ширину и высоту и <strong>float:left</strong>. С размерами подогнал так, чтобы в одну строку влезали только 7 чисел.</p>
<p>Смотрим на стили:</p>
<pre><code>dl{
width: 214px;
height: 182px;
background: url("schedule-bg.gif") left top no-repeat;
margin: 0 auto;
position:relative;
}
dt{
height: 34px;
}

dd ul{
margin: 0;
}

dd ul li{
list-style: none;
margin: 3px 1px 1px 1px;
width: 26px;
height: 12px;
line-height: 12px;
float: left;
text-align: right;
cursor: pointer;
font-size: 12px;
}
dd ul li a{
display:block;
width: 26px;
height: 12px;
text-decoration: none;
color: #0000FF;
}

dd ul li a span{
display:none;
}

ul.days li a:hover{
color: #FBC500;
text-indent: 0; /*DO NOT REMOVE THIS OTHERWISE HOVER WILL NOT WORK IN IE6!*/
}

ul.days li a:hover span{
display: block;
position: absolute;
left: 5px;
top: 150px;
width: 200px;
height: 23px;
overflow: hidden;
text-align: center;
background: #5c68ba;
color: #FFFFFF;
text-decoration: none!important;
}
.month{
font-size: 12px;
font-weight: bold;
text-align: center;
}

.week li{
border: none;
font-weight: bold;
margin-left: 1px;
margin-right: 2px;
}

.days{
margin-left: 5px;
height: 98px;
*height: 85px;
width: 205px;
}

#descr{
clear: both;
color: #FFFFFF;
font-size: 12px;
text-align: center;
padding-top: 3px;
height: 23px;
}</code></pre>
<p>Остался только один нерешенный момент. Приходится в ручную передвигать первое число месяца между днями недели, добавляя пустые элементы списка. Не придумал нормального решения.</p>
<p>Все, вроде бы ничего не упустил. Рабочий пример можно <a href="http://www.webmakerslounge.com/files/calendar.html">посмотреть</a> и <a href="/files/calendar.zip">забрать</a>.</p>
<p>Верстал я все это дело в XML/XSL, вот так выглядит тэмплэйт:</p>
<pre><code>&lt;dl&gt;
&lt;dt&gt; &lt;/dt&gt;
&lt;dd&gt;
&lt;p class="month"&gt;
&lt;xsl:value-of select="$SHARED/MONTHS/LIST[@ID= $month]/@NAME"/&gt;
&lt;/p&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;ol class="week"&gt;
&lt;xsl:for-each select="$SHARED/WEEK/ITEM"&gt;
&lt;li&gt;&lt;xsl:value-of select="text()"/&gt;&lt;/li&gt;
&lt;/xsl:for-each&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;dd&gt;
&lt;ol class="days"&gt;
&lt;xsl:for-each select="$SHARED/MONTHS/LIST[@ID= $month]/ITEM"&gt;
&lt;li&gt;
&lt;a&gt;
&lt;xsl:if test="@NUM = $date"&gt;
&lt;xsl:attribute name="class"&gt;currentday&lt;/xsl:attribute&gt;
&lt;/xsl:if&gt;
&lt;xsl:attribute name="hrеf"&gt;&lt;xsl:value-of select="@HREF"/&gt;&lt;/xsl:attribute&gt;
&lt;xsl:value-of select="@NUM"/&gt;
&lt;span&gt;&lt;xsl:value-of select="text()"/&gt;&lt;/span&gt;
&lt;/a&gt;
&lt;/li&gt;
&lt;/xsl:for-each&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;dd id="descr"&gt;&lt;xsl:value-of select="$SHARED/MONTHS/DESCR"/&gt;&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>На пути к XML нодам не обращайте внимания, особенности платформы.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/css/dl-calendar/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Подсветка навигации</title>
		<link>http://cascadi.ca/css/navigation-highlight/</link>
		<comments>http://cascadi.ca/css/navigation-highlight/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 08:50:14 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/css/navigation-highlight/</guid>
		<description><![CDATA[Каждому из нас свойственно знать где мы в данный момент находимся. И определяем мы это с помощью внешних &#8220;маркеров&#8221;, которые сигнализируют о нашем местоположении. Так же и в интернете. Когда мы заходим на тот или иной сайт и переходим со&#160;&#8230; <a href="http://cascadi.ca/css/navigation-highlight/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Каждому из нас свойственно знать где мы в данный момент находимся. И определяем мы это с помощью внешних &#8220;маркеров&#8221;, которые сигнализируют о нашем местоположении. Так же и в интернете. Когда мы заходим на тот или иной сайт и переходим со страницы на страницу, то не плохо было бы видеть на какой именно странице мы сейчас.</p>
<p align="center"><img alt="Navigation highlight" title="Navigation highlight" src="/images/posts/highlight.gif" /></p>
<p>Многие вэб-разработчики уделяют этому аспекту юзабилити не достаточно внимания или совсем не уделяют, не смотря на то что существует достаточно много способов для реализации &#8220;подсветки&#8221;.</p>
<p>Давайте рассмотрим несколько сравнительно не сложных примеров.<span id="more-92"></span></p>
<p><strong>Первый пример</strong>, который я хотел бы вам показать, основывается на том факте, что навигационное меню сайта как правило одинаковое на всех страницах. Соответственно, задав ему определенные параметры один раз, не нужно в дальнейшем изменять их на каждой новой странице.</p>
<p>Пример HTML кода меню:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;&lt;а hrеf="#" class="home"&gt;Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#" class="about"&gt;About us&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;а hrеf="#" class="contact"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>
<p>Хитрость и простота одновременно в этом примере заключаются в том, чтобы задать уникальный <strong>id </strong>в тэге<strong> body</strong>, для каждой страницы сайта. <strong>Id</strong> страницы должен совпадать с названием класса элемента меню и тогда стили к этим элементам можно применять постранично:</p>
<pre><code>#home .home, #about .about, #about .about, #contact .contact{
color:red;  font-weight: bold; /*Стили на ваше усмотрение*/
}</code></pre>
<p>Получается что когда <strong>id</strong> страницы это &#8220;home&#8221;, то к элементу меню с классом <strong>.home</strong> применяются стили описанные выше. И так далее. Просто, правда?</p>
<p>Меня этот способ привлек тем, что в своей работе я использую <strong>id</strong> для тэга <strong>body</strong> очень часто и для меня реализация такой подсветки &#8211; описание одного стиля.</p>
<p><strong>Второй способ</strong>, который я хотел бы показать, использует JS для того чтобы найти на странице все ссылки с заданным класом, сравнивает <em>document.location</em> с аттрибутом <em>href</em> самой ссылки и если они совпадают &#8211; добавляет к ней класс, для которого описывается стиль.</p>
<p>Соответственно, нужно создать <strong>.js</strong> файл в котором будет описана функция:</p>
<pre><code>function highlight(){
var atags=document.getElementsByTagName("a");
for(var i=0;i
if(atags[i].className=="nav"){
if(document.location.href.indexOf(atags[i].href)!=-1){
atags[i].className="active";
}
}
}
}

</code></pre>
<p>Приаттачить файл к странице</p>
<pre><code>&lt;script type="text/javascript" srс="/js/highlight.js"&gt;&lt;/script&gt;</code></pre>
<p>и вызвать функцию при загрузке:</p>
<pre><code>&lt;body onload="highlight()"&gt;</code></pre>
<p>В самом меню у всех ссылок должен быть один и тот же класс <strong>nav</strong>, а стиль описывается для класса <strong>.active</strong>.</p>
<pre><code>&lt;a class="nav" hrеf="/about/"&gt;О проекте&lt;/a&gt;</code></pre>
<p>У каждого способа есть преимущества и недостатки. О том как &#8220;включить&#8221; подсветку навигации в Wordpress можно почитать в давней, но не потерявшей актуальность, статье Юры Артюха &#8220;<a class="out" title="Wordpress и подсветка навигации" href="http://cssing.org.ua/2005/03/28/highlight-navigation-wordpress/">Wordpress и подсветка навигации</a>&#8221; или в Кодексе WP <a class="out" href="http://codex.wordpress.org/Dynamic_Menu_Highlighting">по-английски</a>.</p>
<p align="center"><em>А какое решение используете вы? </em></p>
<p align="left">З.Ы. В попытке предвосхитить комментарии на тему того что у меня, мол, самого подсветки нет, скажу что работаю над этим :)</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/css/navigation-highlight/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Выпадающее меню</title>
		<link>http://cascadi.ca/css/vyipadayuschee-menyu/</link>
		<comments>http://cascadi.ca/css/vyipadayuschee-menyu/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 08:07:39 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/css/vyipadayuschee-menyu/</guid>
		<description><![CDATA[Создание многоуровнего выпадающего меню с помощью CSS, пары строчек Javascript, работающего корректно в Файрфоксе, Опере, Интернет Эксплорере и Сафари кажется вам непосильной задачей? Да ничего подобного!
Давайте развеем это заблуждение.
И так, для начала нам нужен список. Ведь большинство всех меню это&#160;&#8230; <a href="http://cascadi.ca/css/vyipadayuschee-menyu/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img align="right" style="margin-left: 10px" alt="Пример выпадающего меню" title="Пример выпадающего меню" src="/images/posts/drop-down.jpg" />Создание многоуровнего выпадающего меню с помощью CSS, пары строчек Javascript, работающего корректно в Файрфоксе, Опере, Интернет Эксплорере и Сафари кажется вам непосильной задачей? Да ничего подобного!</p>
<p>Давайте развеем это заблуждение.</p>
<p>И так, для начала нам нужен список. Ведь большинство всех меню это ни что иное как список ссылок.</p>
<p><span id="more-48"></span></p>
<pre><code>&lt;ul id="nav"&gt;
    &lt;li&gt;
    &lt;а hrеf="#"&gt;Percoidei&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;а hrеf="#"&gt;Remoras&lt;/a&gt;
                &lt;ul&gt;
                    &lt;li&gt;&lt;а hrеf="#"&gt;Echeneis&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;а hrеf="#"&gt;Phtheirichthys&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;а hrеf="#"&gt;Remora&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;а hrеf="#"&gt;Remorina&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;а hrеf="#"&gt;Rhombochirus&lt;/a&gt;&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;а hrеf="#"&gt;Tilefishes&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;а hrеf="#"&gt;Bluefishes&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;а hrеf="#"&gt;Tigerfishes&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
    &lt;li&gt;&lt;а hrеf="#"&gt;Anabantoidei&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>
<p>Теперь у нас есть хорошо структурированый список. Добавим к нему немного стилей:</p>
<pre><code>#nav, #nav ul {
    padding: 0;
    margin: 0;
    list-style: none;
}

#nav a {
    display: block;
    width: 10em;
}

#nav li {
    float: left;
    width: 10em;
}</code></pre>
<p>Для селектора   <code>#nav li</code> необходимо указать ширину, чтобы это корректно отображалось в Опере. Так же не забудьте указать <code>clear:left</code> для блока, который последует <u>за</u> меню, так как мы используем <code>float</code>.</p>
<p>Теперь нам необходимо само &#8220;выпадание&#8221;.  добавляем следующие стили:</p>
<pre><code>#nav li ul {
    position: absolute;
    width: 10em;
    left: -999em;
}

#nav li:hover ul {
    left: auto;
}</code></pre>
<p>Обратите внимание что здесь не используется <code>display:none</code>, для того чтобы сохранить максимальную доступность. Вместо него мы используем <code>left: -999em</code>. Это не обязательно и может быть легко заменено на <code>display:none</code>.</p>
<p>Вы конечно же обратили внимание на то, что у селектора <code>li</code>  описан псевдо класс <code>:hover</code>, который конечно же не будет работать в Интернет Эксплорере. Для того, чтобы заставить наше выпадающее меню работать в Интернет Эксплорере мы используем этот маленький скриптик:</p>
<pre><code>sfHover = function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i&lt;sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);</code></pre>
<p>Что делает этот скрипт? Он подменяет псевдо класс <code>:hover</code> для Интернет Эксплорера следующим способом. При событии <code>mouseOver</code> для элемента <code>li</code> скрипт добавляет ему класс <code>sfhover</code> для которого в свою очередь мы тоже должны прописать стиль. При событии <code>mouseOut</code> класс обнуляется.</p>
<pre><code>#nav li.sfhover ul{
    left: auto;
}</code></pre>
<p>Вот по большому счету и все. Теперь меню можно украсить и использовать.</p>
<p>Рабочий пример можно <a title="Выпадающее меню" href="/files/drop-down.html">скачать</a>.</p>
<p align="right" style="font-size: 0.7em">По материалам <a target="_blank" title="HTML Dog" href="http://www.htmldog.com">HTML dog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/css/vyipadayuschee-menyu/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>XHTML 2.0</title>
		<link>http://cascadi.ca/html/xhtml-2/</link>
		<comments>http://cascadi.ca/html/xhtml-2/#comments</comments>
		<pubDate>Tue, 26 Dec 2006 08:30:19 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/html/xhtml-20/</guid>
		<description><![CDATA[Нужда в более строгих или если будет угодно, требовательных версиях HTML возникла во-первых из-за того что сейчас все более часто речь идет не только о создании &#8220;формальных&#8221; документов для привычных нам компьютеров, но и для всевозможных переносных устройств, таких как&#160;&#8230; <a href="http://cascadi.ca/html/xhtml-2/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img align="left" title="XHTML 2.0 Valid" alt="XHTML 2.0 Valid" src="/images/posts/xhtml2.jpg" />Нужда в более строгих или если будет угодно, требовательных версиях HTML возникла во-первых из-за того что сейчас все более часто речь идет не только о создании &#8220;формальных&#8221; документов для привычных нам компьютеров, но и для всевозможных переносных устройств, таких как коммуникаторы, наладонники и прочих, в которых отсутствует или почти отсутствует возможность подгружать дополнительные ресурсы, которые бы обеспечивали более полную комплексность HTML синтаксиса.<br />
Дополнительной целью более строгих стандартов является ускорение вывода страницы пользователю. Если в случае с HTML, браузер пытается &#8220;подстроиться&#8221; под код и вывести его максимально корректно в независимости от ошибок, то с XML такое не пройдет. Браузер просто не будет его парсить. Соответственно, user-agent затрачивает время на интерпретацию вольной мысли верстальщика и пока стандарты не ужесточатся на столько, что документы с ошибками просто перестанут отображаться, такая ситуация останется неизменной. А страдает от этого пользователь.<br />
В теории, как только код станет соответсвовать жестким требованиям, браузеры будут затрачивать гораздо меньше времени на его отображение. Все счастливы.<br />
Вот здесь и должен вступить в силу XHTML 2.0, который все еще находится в разработке, в основном из-за того что переход на него будет обозначать отказ от поддержки всех предыдущих стандартов.<br />
Немного о грядущих изменениях:</p>
<p><span id="more-35"></span></p>
<ul>
<li>HTML формы будут заменены на XForms, основанные на XML и корректно транспортирующиеся на переносные устройства.</li>
<li>HTML фрэймы будут заменены на XFrames.</li>
<li>DOM события будут заменены XML события, которые используют XML Document Object Model.</li>
<li>Новый тип элемента list,  &lt;nl&gt;элемент, разработанный для отображения навигации в странице &#8211;  navigation list. Призван для того чтобы заменить повсеместно использующиеся &lt;ul&gt;и &lt;dl&gt;.</li>
<li>Любой элемент может выполнять функции гиперссылки, например &lt;li href=&#8221;http://google.com&#8221;      &gt;Статьи&lt;/li&gt;</li>
<li>Любой элемент может обращаться к альтернативному источнику через аттрибут src</li>
<li>Атрибут alt у элемента img будет удален: альтернативное описание элемента будет вставляться как содержимое самого элемента.</li>
<li>Будут добавлены элементы Одиночный заголовок &lt;h&gt;и секция &lt;section&gt;. Уровень заголовка будет определяться вложенными элементами section, у каждого из которых будет собственный  заголовок.</li>
<li>Существующие, но нежелательные элементы i, b и tt, все еще разрешенные в XHTML 1.x (даже в Strict), перестанут поддерживаться в XHTML 2.0. Они должны быть заменены семантическими strong и em</li>
</ul>
<p>Предполагаемый DOCTYPE для XHTML 2.0:</p>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml2.dtd"&gt;</code></pre>
<p>Будем ждать с нетерпением. Напомню что все вышеописанное до сих пор в разработке и наверняка многие вещи еще изменятся, но тенденции определены.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/html/xhtml-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Правильный DOCTYPE</title>
		<link>http://cascadi.ca/html/pravilnyiy-doctype/</link>
		<comments>http://cascadi.ca/html/pravilnyiy-doctype/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 14:55:29 +0000</pubDate>
		<dc:creator>Curly Brace</dc:creator>
				<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.webmakerslounge.com/html/pravilnyiy-doctype/</guid>
		<description><![CDATA[Что такое DOCTYPE? Это способ указать браузеру, как правильно отображать документ и по какой схеме.
Существует много типов HTML , как то: HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict и множество других. DOCTYPE указывает браузеру структуру, элементы и их&#160;&#8230; <a href="http://cascadi.ca/html/pravilnyiy-doctype/">Читать&#160;дальше&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Что такое <code>DOCTYPE</code>? Это способ указать браузеру, как правильно отображать документ и по какой схеме.</p>
<p>Существует много типов HTML , как то: HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict и множество других. <code>DOCTYPE</code> указывает браузеру структуру, элементы и их атрибуты для каждого типа HTML.</p>
<p>Указывание <code>DOCTYPE</code> критично, так как при его отсутствии браузер попытается отрендерить документ так как он считает нужным, а не так как этого хотите вы и/или требуют стандарты. Ни о какой валидации соответственно и речи быть не может. Можно провести часы, пытаясь заставить браузер отобразить то, что вам нужно без <code>DOCTYPE</code> и не добиться успеха.</p>
<p><span id="more-32"></span></p>
<p>Ранее ситуация была такова, что даже у <a class="out" href="http://w3.org">W3C</a> не было однозначных рекоммендаций по этому вопросу, но сейчас это изменилось и я привожу вам образец и список <code>DOCTYPE</code>, рекоммендованых к использованию W3C.</p>
<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
&lt;title&gt;An XHTML 1.0 Strict standard template&lt;/title&gt;
&lt;meta http-equiv="content-type" content="text/html;charset=utf-8" /&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;… Your HTML content here …&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Наиболее распространенные виды <code>DOCTYPE</code>:</p>
<p>HTML 4.01 &#8211; Strict, Transitional, Frameset:</p>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"&gt;</code></pre>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;</code></pre>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd"&gt;</code></pre>
<p>XHTML 1.0 &#8211; Strict, Transitional, Frameset:</p>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</code></pre>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></pre>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</code></pre>
<p>XHTML 1.1 &#8211; DTD:</p>
<pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;</code></pre>
<p>Более полный список доступен на сайте <a class="out" href="http://www.w3.org/QA/2002/04/valid-dtd-list.html">W3C</a>.</p>
<p>По поводу того какой из трех (Strict, Transitional, Frameset) использовать, решать вам, в зависимости от поставленых задач.</p>
<p>Немного ссылок:</p>
<p>- Полезная, но немного устаревшая <a class="out" href="http://www.webmascon.com/topics/coding/25a.asp">статья</a> о <code>DOCTYPE</code>, на сайте Webmascon, который к сожалению перестал обновляться.</p>
<p>- <a class="out" href="http://www.w3.org/QA/Tips/Doctype">Don&#8217;t forget to add a doctype</a> by W3C.</p>
]]></content:encoded>
			<wfw:commentRss>http://cascadi.ca/html/pravilnyiy-doctype/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

