<?xml version="1.0" encoding="windows-1251"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>~ XakNet Forum ~ - Web программирование</title>
		<link>http://forum.xaknet.ru</link>
		<description>PHP, PERL, MySQL, JavaScript, etc</description>
		<language>ru</language>
		<lastBuildDate>Thu, 09 Sep 2010 06:58:36 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>http://forum.xaknet.ru/acid/images/misc/rss.jpg</url>
			<title>~ XakNet Forum ~ - Web программирование</title>
			<link>http://forum.xaknet.ru</link>
		</image>
		<item>
			<title>google parser</title>
			<link>http://forum.xaknet.ru/showthread.php?t=18476&amp;goto=newpost</link>
			<pubDate>Thu, 26 Aug 2010 00:52:14 GMT</pubDate>
			<description>Решил подучить перл и закрепить пройденное мини-релизом:

Код:
---------
use Socket;

if (@ARGV != 2)
{
	explain();
	exit 1;</description>
			<content:encoded><![CDATA[<div>Решил подучить перл и закрепить пройденное мини-релизом:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">use Socket;<br />
<br />
if (@ARGV != 2)<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; explain();<br />
&nbsp; &nbsp; &nbsp; &nbsp; exit 1;<br />
}<br />
<br />
$dork_file = $ARGV[0];<br />
if (!(-e $dork_file))<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; print &quot;\r\nCan't locate $dork_file\r\n\r\n&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; exit 1;<br />
}<br />
else<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; open (DFILE, $dork_file);<br />
}<br />
<br />
$out_file = $ARGV[1];<br />
open(OUTFILE, &quot;&gt;&gt;$out_file&quot;);<br />
<br />
while(&lt;DFILE&gt;)<br />
{<br />
$dork = $_;<br />
chomp $dork;<br />
$html = get(&quot;http://www.google.com/search?filter=0&amp;num=100&amp;start=100&amp;q=&quot;.$dork);<br />
@content = split(/&lt;a/, $html);<br />
foreach $str (@content)<br />
{<br />
if ($str =~ /href=&quot;(.*)&quot; class=/)<br />
{<br />
$site = $1;<br />
if ($site =~ m/http:\/\//)<br />
{<br />
if (!($site =~ m/google/))<br />
{<br />
print OUTFILE $site.&quot;\r\n&quot;;<br />
}<br />
}<br />
}<br />
}<br />
sleep(5);<br />
}<br />
<br />
<br />
sub get()<br />
{<br />
$site = $_[0];<br />
$site =~ s/http:\/\///;<br />
($host, $tmp) = split(/\//, $site);<br />
$tmp = $site;<br />
$tmp =~ s/$host//;<br />
if (length($tmp) == 0) { $tmp = &quot;/&quot;; }<br />
socket (sock, PF_INET, SOCK_STREAM, getprotobyname(&quot;tcp&quot;));<br />
$iaddr = inet_aton($host);<br />
$paddr = sockaddr_in(&quot;80&quot;, $iaddr);<br />
<br />
connect(sock, $paddr) or return &quot;Failedto connect to $host&quot;;<br />
send(sock, &quot;GET $tmp HTTP/1.1\r\nHost: $host\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3\r\nConnection: close\r\n\r\n&quot;, 0);<br />
@resp = &lt;sock&gt;;<br />
$line = &quot;&quot;;<br />
foreach $t (@resp)<br />
{<br />
$line .= $t;<br />
}<br />
return $line;<br />
}<br />
<br />
close(DFILE);<br />
close(OUTFILE);<br />
<br />
sub explain()<br />
{<br />
&nbsp; &nbsp; &nbsp; &nbsp; print qq(<br />
&nbsp; &nbsp; &nbsp; &nbsp; Google parser by [ac1D] | icq:941182<br />
&nbsp; &nbsp; &nbsp; &nbsp; Usage: google.pl &lt;file_with_dorks&gt; &lt;outfile&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; Example: google.pl dork.txt out.txt<br />
<br />
)<br />
}</code><hr />
</div><font color="Red">Автор - [ac1D] (C) 2010</font>.</div>

]]></content:encoded>
			<category domain="http://forum.xaknet.ru/forumdisplay.php?f=28">Web программирование</category>
			<dc:creator>aciiiD</dc:creator>
			<guid isPermaLink="true">http://forum.xaknet.ru/showthread.php?t=18476</guid>
		</item>
		<item>
			<title><![CDATA[[jQuery] aeroWindow]]></title>
			<link>http://forum.xaknet.ru/showthread.php?t=18434&amp;goto=newpost</link>
			<pubDate>Mon, 23 Aug 2010 21:44:48 GMT</pubDate>
			<description>Изображение: http://kronus.photosquare.kiev.ua/wp-content/uploads/2010/08/AeroWindow-Teaser.png 
Aero Window - это плагин для jQuery, который создает...</description>
			<content:encoded><![CDATA[<div><img src="http://kronus.photosquare.kiev.ua/wp-content/uploads/2010/08/AeroWindow-Teaser.png" border="0" alt="" /><br />
Aero Window - это плагин для jQuery, который создает popup-окна в стиле Aero.<br />
Особенности:<ul><li>Анимированный header в окнах.</li>
<li>	Стандартные кнопки windows: свернуть, развернуть, закрыть окно.</li>
<li>	Поддержка двойного клика (развернуть окно).</li>
<li>	Перетягивание окон.</li>
<li>	Поддержка z-индекса при расположении окон на странице.</li>
<li>	Анимация изменения размеров окна.</li>
</ul>Настройки:<br />
	<ul><li>Заголовок окна.</li>
<li>	Задание начальной позиции окна.</li>
<li>	Стандартный размер окна.</li>
<li>	Размер свернутого окна.</li>
<li>	Задание состояния нового окна (свернутое, развернутое, обычное).</li>
<li>	Анимация окна (около 30 вариантов).</li>
<li>	Генерация новых окон через события мыши или javascript-функции.</li>
</ul>Плагин совместим с:<br />
	<ul><li>Internet Explorer 6</li>
<li>	Internet Explorer 7</li>
<li>	Internet Explorer 8</li>
<li>	Mozilla Firefox 3</li>
<li>	Google Chrome 4</li>
<li>	Apple Safari 4</li>
<li>	Opera 10</li>
</ul>Официальная страница проекта - <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b><br />
Демо доступно по <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>.<br />
Плагин базируется на <b>jQuery</b> версии <b>1.4.2</b>.<br />
<br />
От себя:<br />
в плагине есть одна вещь, которая немного портит работу. Это сворачивание окон. Окна сворачиваются в левый нижний угол друг на друга. Я написал небольшую &quot;надстройку&quot; над плагином, которая этот &quot;эффект&quot; устраняет.<br />
Скачать плагин с надстройкой можно по <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>.<br />
Внесенные мной изменения находятся между комментариями <b>//Taskbar</b>, <b>//Taskbar end</b>.</div>

]]></content:encoded>
			<category domain="http://forum.xaknet.ru/forumdisplay.php?f=28">Web программирование</category>
			<dc:creator>KronuS</dc:creator>
			<guid isPermaLink="true">http://forum.xaknet.ru/showthread.php?t=18434</guid>
		</item>
		<item>
			<title>Качаем с YouTube</title>
			<link>http://forum.xaknet.ru/showthread.php?t=18374&amp;goto=newpost</link>
			<pubDate>Fri, 20 Aug 2010 15:45:05 GMT</pubDate>
			<description><![CDATA[Изображение: http://kronus.photosquare.kiev.ua/wp-content/uploads/2010/08/youtube.png  Как же не хватает на страницах YouTube ссылки "Скачать"... Так...]]></description>
			<content:encoded><![CDATA[<div><img src="http://kronus.photosquare.kiev.ua/wp-content/uploads/2010/08/youtube.png" border="0" alt="" /> Как же не хватает на страницах YouTube ссылки &quot;Скачать&quot;... Так давайте сделаем ее сами.<br />
Снова нам на помощь приходят скрипты. И снова не хочется делать на &quot;чистом&quot; JavaScript. Хочется упростить себе жизнь и подключить jQuery. <br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">/**<br />
&nbsp;* Author: KronuS (icq 579-573)<br />
&nbsp;* Version: 1.0 <br />
&nbsp;* Date: 20.08.2010<br />
&nbsp;*/<br />
$(document).ready(function(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; var cn = $('body').html();<br />
&nbsp; &nbsp; &nbsp; &nbsp; start = cn.indexOf('&quot;fmt_url_map&quot;: &quot;');<br />
&nbsp; &nbsp; &nbsp; &nbsp; if (start &gt;&nbsp; 0) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end = cn.indexOf(',', start);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = cn.substring(start + '&quot;fmt_url_map&quot;: &quot;'.length, end);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = link.replace(/&quot;/g,'');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = link.replace(/\\/g,'');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = link.substring(link.indexOf('|')+1, link.length);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var c = $('div#watch-headline-user-info').html();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $('div#watch-headline-user-info').html(c + '&lt;a href=&quot;' + link + '&quot;&gt;Скачать&lt;/a&gt;');<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
});</code><hr />
</div>После подключения наших скриптов, на странице с видео рядом с кнопкой &quot;Подписаться&quot; появится ссылка &quot;Скачать&quot; (см. рис. ниже)<br />
<br />
<img src="http://kronus.photosquare.kiev.ua/wp-content/uploads/2010/08/youtube_link.png" border="0" alt="" /><br />
<br />
YouTube предлагает скачать видео без разширения. Разширение надо ставить &quot;<b>flv</b>&quot;.<br />
<b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b></div>

]]></content:encoded>
			<category domain="http://forum.xaknet.ru/forumdisplay.php?f=28">Web программирование</category>
			<dc:creator>KronuS</dc:creator>
			<guid isPermaLink="true">http://forum.xaknet.ru/showthread.php?t=18374</guid>
		</item>
		<item>
			<title>Получаем преимущество в HTML5 и CSS3 с Modernizr</title>
			<link>http://forum.xaknet.ru/showthread.php?t=18316&amp;goto=newpost</link>
			<pubDate>Tue, 17 Aug 2010 11:04:31 GMT</pubDate>
			<description>Десять лет назад только самые продвинутые веб-дизайнеры использовали CSS для разметки и стиля. Поддержка браузерами разметки CSS была слабой и...</description>
			<content:encoded><![CDATA[<div>Десять лет назад только самые продвинутые веб-дизайнеры использовали CSS для разметки и стиля. Поддержка браузерами разметки CSS была слабой и лагающей, но эти люди хранили верность стандартам веб, изобретая хитрые финты, которые сделали бы разметку CSS рабочей во всех браузерах. Один такой финт, ставший широко используемым был сниффинг: Обнаружение каждого браузера и версии пользователя, просматривая navigator.userAgent, в JavaScript. Сниффинг браузера позволял быстро и просто подгрузить код, позволяя разработчикам охватить разные браузеры с разными инструкциями.<br />
<br />
Теперь разметки на CSS вполне обыденны, и у каждого браузера есть надежная поддержка для них. Но, теперь у нас есть CSS3 и HTML5, а ситуация повторяется – различные браузеры разные уровни поддержки этих новых технологий. Мы приготовились, тем не менее, и больше не изобретаем CSS хаки и не используем сниффинг браузеров – это ненадежные и плохие методы. Также, мы убеждаем все больше и больше клиентов, что «<b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>». Итак, как нам разобраться с этой новой, но знакомой проблемой? Очень просто: Мы используем распознавание функций, это означает, что мы не спрашиваем браузер «кто ты?» и делать ненадежные действия. Вместо этого мы спрашиваем браузер: «Можешь ли ты сделать это и то?» Это простой способ проверить браузер на совместимость, но, делать эти проверки вручную утомительно. Для решения этой проблемы (и других), вы можете использовать <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>.<br />
<br />
<b>Modernizr: библиотека для определения функций для HTML5 и CSS3.</b><br />
<br />
Modernizr – это библиотека JavaScript с открытым кодом, которая делает проще для веб-дизайнеров поддержку различных уровней, основанную на совместимостях браузера посетителя. Это позволяет дизайнерам заиметь значительное преимущество во всем HTML5 и CSS3, которые реализованы в некоторых браузерах, без принесения в жертву контроль за использованием других браузеров пользователем.<br />
<br />
Когда вы вставляете скрипт Modernizr в вашу страницу, он определяет, какой из текущих браузеров поддерживает CSS3, вроде font-face, border-radius, border-image, box-shadow, rgba() и далее, также функции HTML5, такие как аудио, видео, локальное хранилище, типы и атрибуты нового элемента &lt;input /&gt; . С этим знанием вы можете получить преимущество над этими выполнениями в браузера, которые поддерживают эти функции, и решить, создавать ли код на JavaScript, или же, просто, портить страницу в браузерах, которые не поддерживают их. Также, можно добавить, что Modernizr делает новые элементы HTML5 доступными для изменения в Internet Explorer’e. Итак, вы можете начать использовать их продвинутую семантику прямо сейчас.<br />
<br />
Modernizr был создан на принципе прогрессивного развития, и он поддерживает (поощряет) даже создание веб-сайта от слоя к слою, начиная с основы на JavaScript, и добавляя модернизированные слои один к одному. Это просто с Modernizr, с того момента, как вы будете знать, какой из браузеров совместим. Давайте посмотрим на практическом примере , как использовать Modernizr, чтобы создать современный веб-сайт.<br />
<br />
<b>Начинаем работать с Modernizr</b><br />
<br />
Начнем со скачивания последнего стабильного релиза с <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>, где вы можете, также, посмотреть полный список функций, который он обнаружит. Итак, у вас есть последняя версия, 1.5 (на время написания), включите ее в вашу страницу в .<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код HTML:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left"><span style="color:#000080">&lt;!DOCTYPE html&gt;</span><br />
<span style="color:#000080">&lt;html&gt;</span><br />
<span style="color:#000080">&lt;head&gt;</span><br />
<span style="color:#000080">&lt;meta charset=”utf-8&#8243;&gt;</span><br />
<span style="color:#000080">&lt;title&gt;</span>My Beautiful Sample Page<span style="color:#000080">&lt;/title&gt;</span><br />
<span style="color:#800000">&lt;script src=”modernizr-1.5.min.js”&gt;</span><span style="color:#800000">&lt;/script&gt;</span><br />
<span style="color:#000080">&lt;/head&gt;</span></code><hr />
</div>Далее, добавьте класс “no-js” в ваш &lt;html&gt; элемент:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код HTML:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left"><span style="color:#000080">&lt;html class=”no-js”&gt;</span></code><hr />
</div>Когда Modernizr запущен, он заменит этот класс с классом “js”, который позволяет вам узнать, в CSS, доступен или нет код JavaScript. Но Modernizr на этом не останавливается: он добавляет классы для каждой функции, которую находит, добавляя префикс “no-”, если браузер ее не поддерживает. Итак, ваш элемент &lt;html&gt;; будет выглядеть похожим на загрузку страницы (обеспечивая доступность JavaScript):<br />
&lt;html class=”js canvas canvastext no-geolocation rgba hsla multiplebgs borderimage borderradius boxshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions video audio localstorage sessionstorage webworkers applicationcache fontface”&gt;<br />
<br />
Modernizr также создает объект JavaScript, просто названный Modernizr, который имеет список свойств, содержащих булевские значения для каждой функции. Modernizr.canvas будет иметь значение «верно»(true), если браузер поддерживает новый элемент canvas, и «ложно»(false), если браузер не поддерживает его. Объект JavaScript также содержит более детальную информацию о верных функциях, например: Modernizr.video.h264 скажет вам, если браузер поддерживает данный кодек. Modernizr.inputtypes.search предупредит вас, если новый тип поиск поддерживается, и т.д.<br />
<br />
Наша <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b> выглядит немного пусто, но это очень схематично и доступно. Давайте добавим несколько базовых стилей; немного форматирования, цвета, чтобы сделать его немного более привлекательной. До сих пор в этом процессе не было ничего нового: мы добавляем простой CSS в схематичную структуру HTML страницы, и, <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b> очень правдиво это демонстрирует.<br />
<br />
Идем дальше. Давайте улучшим страницу и сделаем ее более интересной. Для этого я хочу изменить шрифт h1 для хедера на другой, разбиваем список функций на две колонки и двигаем часть о Modernizr с фото вправо. Я, также, собираюсь изменить границу вокруг страницы и сделать ее привлекательнее. Теперь, CSS выглядит намного лучше, потому что теперь вы можете добавлять новые свойства в правило, и, если браузер не распознает (читайте: support) их, можно просто проигнорировать это. Соедините это с каскадностью CSS, и вы сможете использовать штуки вроде border-radius без помощи Modernizr. Тем не менее, использование Modernizr предлагает вещи, которые вы не сможете без него использовать: Возможность изменять свойства, поддерживаемые браузером, только в состоянии, когда он поддерживает некоторые иные свойства. Я продемонстрирую это, добавляя два новых правила CSS на нашу страницу.<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">.borderradius #content {<br />
border: 1px solid #141414;<br />
-webkit-border-radius: 12px;<br />
-moz-border-radius: 12px;<br />
border-radius: 12px;<br />
}<br />
.boxshadow #content {<br />
border: none;<br />
-webkit-box-shadow: rgba(0,0,0, .5) 3px 3px 6px;<br />
-moz-box-shadow: rgba(0,0,0, .5) 3px 3px 6px;<br />
box-shadow: rgba(0,0,0, .5) 3px 3px 6px;<br />
}</code><hr />
</div>Первое правило добавляет 12-ти пиксельную рамку в наш элемент #content. Тем не менее, правило, которое мы добавили для #content задано рамкой “2px outset #666”, которая выглядит неплохо, когда бокс имеет прямые углы, но с закругленными углами это выглядит уже хуже. Спасибо Modernizr, что я могу «научить» браузер выполнять то, что нужно, однопиксельная граница, если браузер поддерживает border-radius.<br />
<br />
Второе правило придает немного красоты путем добавления падающей тени для элемента #content и, вместе с этим, убирает границу, если браузер поддерживает box-shadow. Почему? Потому что большинство браузеров не выполняет комбинацию border-«и»-border-radius, а box-shadow очень хорошо. Я бы лучше использовал падающую тень вокруг элемента, чем этого бы не сделал и поставил бы только границу. Следуя этому пути, у меня может быть лучший из всех миров, или же, лучший из всех CSS: браузеры, которые поддерживают свойство box-shadow, покажут нам неплохую падающую тень, браузеры, которые поддерживают только border-radius покажут закругленные углы с тонкой границей, и наконец, те браузеры, которые не поддерживают ничего, получают нашу оригинальную двухпиксельную внешнюю границу.<br />
<br />
В нашем примере мы добавляем специальный шрифт для нашего хедера. Вот объявление нашего оригинального h1, который мы не меняем, но я покажу это в примере:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">h1 {<br />
color: #e33a89;<br />
font: 27px/27px Baskerville, Palatino, “Palatino Linotype”,<br />
“Book Antiqua”, Georgia, serif;<br />
margin: 0;<br />
text-shadow: #aaa 5px 5px 5px;<br />
}</code><hr />
</div>Это объявление сработало прекрасно для нашей базовой страницы, и, размер шрифта 27 пикселей прекрасно подходит для всех этих шрифтов, но это маловато для нашего самодельного шрифта, который называется Beautiful. Давайте добавим правило CSS, чтобы использовать его:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">@font-face {<br />
src: url(Beautiful-ES.ttf);<br />
font-family: “Beautiful”;<br />
}<br />
.fontface h1 {<br />
font: 42px/50px Beautiful;<br />
text-shadow: none;<br />
}</code><hr />
</div>Во-первых, мы добавляем @font-face, в котором мы наметили путь, имя файла и название семейства для нашего самодельного шрифта. Далее, мы добавляем шрифт в правило CSS в наш элемент h1, но, как вы можете видеть, я задаю ему намного больший размер. Это потому, что шрифт Beautiful выполняется как намного меньший, чем все другие шрифты, которые я описал для элемента h1, и нам придется «научить» браузер отображать наш хедер большие размеры, но только тогда, когда он показывает наш самодельный шрифт.<br />
Добавлю, что наш прекрасный код шрифта имеет некоторые недостатки с изображением текстовой тени. Я удаляю тень, когда браузер решит отобразить самодельный шрифт. Также, список функций все еще требует разделения. Чтобы сделать это, я хочу использовать великолепную функцию колонок CSS, которая позволяет браузерам аккуратно разделать список в колонки без путаницы – и наш список, не смотря на видимую нумерацию, выстроен в алфавитном порядке. Конечно, пока не каждый браузер поддерживает колонки CSS, для них мы будем использовать плавающие, чтобы сделать два списка колонок; они больше не будут сортированы в алфавитном порядке (визуально), но это лучше, чем ничего:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">.csscolumns ol.features {<br />
-moz-column-count: 2;<br />
-webkit-columns: 2;<br />
-o-columns: 2;<br />
columns: 2;<br />
}<br />
.no-csscolumns ol.features {<br />
float: left;<br />
margin: 0 0 20px;<br />
}<br />
.no-csscolumns ol.features li {<br />
float: left;<br />
width: 180px;<br />
}</code><hr />
</div>И снова я использую Modernizr, чтобы выполнить очень простые настройки, только с обязательными условиями – что-то я бы не смог сделать с помощью свойств перегруженных или каскадом. Если браузер поддерживает колонки CSS, наша работа здесь выполнена: список выглядит хорошо и все еще в алфавитном порядке. Если браузер не поддерживает колонки CSS, и отображает это как класс “no-csscolumns” и добавленный в &lt;html&gt; элемент в сценарии, мы делаем список плавающим (float) и задаем поля, ширину, чтобы получить похожий результат. Это не так хорошо, но это лучше чем один длинный список.<br />
Как вы могли заметить, я объявляю колонки по-разному, от свойств border-radius и box-shadow в вышеизложенных примерах. Это потому, что, во-первых, Opera сейчас поддерживает только колонки CSS через префикс поставщика, и, во-вторых, Mozilla пока не распознает свойство записи “колонки”, поэтому нужно использовать -moz-column-count для этого браузера.<br />
С этими и парочкой других похожих изменений – наша новая страница <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>.<br />
<br />
Давайте закончим этот обучающий урок, добавив на нашу страницу немного больше передовых вещей. Браузеры основанные на WebKit, поддерживают некоторые значительные чертовски клеевые вещи – CSS переходы, анимацию, трех-пространственное преобразование – и, я хочу показать некоторые из них в финальном шаге. Снова, некоторые из этих свойств могут быть просто добавлены в наши правила CSS и, они игнорируемы браузерами, которые их не поддерживают, но другие свойства пересекались бы с разметкой во всех браузерах, если я добавлю их таким образом. Итак, я использую Modernizr, чтобы задавать строго, когда эти введения используются, и когда нет.<br />
<br />
Первым делом мы устанавливаем эту ступень так:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">@-webkit-keyframes spin {<br />
0% { -webkit-transform: rotateY(0); }<br />
100% { -webkit-transform: rotateY(360deg); }<br />
}<br />
.csstransforms3d.cssanimations section {<br />
-webkit-perspective: 1000;<br />
}</code><hr />
</div>Правило @keyframes – это часть новой анимационной спецификации CSS, которая, теперь поддерживается только с WebKit. Она позволяет вам объявить целую часть анимации, с какими угодно свойствами и изменять их в любые желаемые вами шаги. Запомните, что вы не задаете длительность в этом объявлении, когда вы используете анимацию в правиле CSS, только непосредственно ключевые фреймы – вы задаете вещи такие как: длительность, циклический счет и простые кривые. Это позволяет вам многократно использовать детальную анимацию на разных скоростях в различных элементах, и это дает вам некоторую «гибкость». Для получения большей информации об использовании анимаций, посмотрите ссылку <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>.<br />
<br />
Следующим шагом мы выполняем анимацию – она заставляет элемент вращаться вокруг 3D пространства – в наш вторичный хедер добавляем:<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Код:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">.csstransforms3d.cssanimations section h2 {<br />
background-image: url(modernizr-logo.png);<br />
overflow: hidden;<br />
-webkit-animation: spin 2s linear infinite;<br />
}</code><hr />
</div>Т.к. теперь мы вращаемся в 3D пространстве, я бы хотел, чтобы фоновая картинка – лого Modernizr выглядела хорошо и с анти-алиасом, поэтому я заменю ее на версию в *.PNG формате. Я также добавляю свойство overflow:hidden, чтобы скрыть оригинальный текст в хедере, который мы задали – 9999 пикселей. Вращение элемента в 3D, демонстрировавшее его во время вращения, было забавным, но выглядело не очень хорошо. Наконец, мы задаем правило для анимации, устанавливаем его на 2 секунды, закручивая его в форму линии и делаем процесс бесконечным.<br />
<b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b>, и также, присутствует немного движущейся забавной анимации для браузеров с WebKit. Я надеюсь, теперь у вас есть четкое представление о том, насколько больше возможностей вы получаете для ваших веб-сайтов с Modernizr, и, насколько проще это делает поистине передовые расширения. Это не все, где может быть полезен Modernizr; он также хорош для создания замедлений, управляемых JavaScript и для использования классных новых функций из HTML5 – но это можно обсудить в другой раз.<br />
<br />
Оригинал взят с <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b><br />
Перевод – <b><font color=red>[Для просмотра данной ссылки нужно <a href="register.php">зарегистрироваться</a>]</font></b></div>

]]></content:encoded>
			<category domain="http://forum.xaknet.ru/forumdisplay.php?f=28">Web программирование</category>
			<dc:creator>KronuS</dc:creator>
			<guid isPermaLink="true">http://forum.xaknet.ru/showthread.php?t=18316</guid>
		</item>
	</channel>
</rss>
