<?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>Prootime &#187; Jquery</title>
	<atom:link href="http://prootime.ru/category/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://prootime.ru</link>
	<description>Блог человека увлекающегося Javascript, PHP, Css, Jquery ...</description>
	<lastBuildDate>Sat, 31 Mar 2012 00:44:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>HTML5 Drag&amp;Drop</title>
		<link>http://prootime.ru/html5-dragdrop</link>
		<comments>http://prootime.ru/html5-dragdrop#comments</comments>
		<pubDate>Sat, 01 Oct 2011 21:12:51 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=993</guid>
		<description><![CDATA[Перетаскивание файлов из рабочего стола в браузер одна из наиболее интересных возможностей HTML5. Я опишу как: сделать возможным перетаксивание файлов на элемент web страницы. анализировать перенесенные файлы с помошью JavaScript. загружать и парсить файлы со стороны клиента. асинхронно загружать файлы на сервер используя XMLHttpRequest2 показать прогресс бар пока идет загрузка файлов В этой статье расмотрим [...]]]></description>
			<content:encoded><![CDATA[<p>Перетаскивание файлов из рабочего стола в браузер одна из наиболее интересных возможностей <em>HTML5</em>.<span id="more-993"></span> Я опишу как:</p>
<ol>
<li>сделать возможным перетаксивание файлов на элемент web страницы.</li>
<li>анализировать перенесенные файлы с помошью <em>JavaScript</em>.</li>
<li>загружать и парсить файлы со стороны клиента.</li>
<li>асинхронно загружать файлы на сервер используя <em>XMLHttpRequest2</em></li>
<li>показать прогресс бар пока идет загрузка файлов</li>
</ol>
<p>В этой статье расмотрим первые три пункта. В итоге получим примерно такую форму:</p>
<div class="image"><img src="http://prootime.ru/wp-content/uploads/2011/10/drag1.png" alt="html форма drag&amp;drop " title="drag1" width="538" height="201" class="aligncenter size-full wp-image-1019" /></div>
<div class="demo">
<a href="http://prootime.ru/demos/html5drag/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://prootime.ru/demos/html5drag/html5drag.rar" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
<h2>Поддержка браузеров</h2>
<p>Прежде чем начать, нужно отметить что поддержка перетаскивания файлов браузерами будет неравномерной. Код работает в современных браузерах, но вполне возможно API будет меняться.</p>
<ul>
<li>Последние версии <em>Firefox</em> и <em>Chrome</em> поддерживают все функции и превосходно работают с перетаскиванием.</li>
<li>Опера может парсить файлы в <em>JavaScript</em>, но не поддерживает перетаскивание файлов и загрузку с помощю <em>XMLHttpRequuest2</em></li>
<li>IE и десктоповые версии Safari не поддерживают ничего из нужного API.</li>
</ul>
<h2>HTML и CSS</h2>
<p>Далее идет код стандартной формы с инпутом типа файл. Единственное <em>HTML5</em> нововведение в форме это атрибут <em>&#8220;multiple&#8221;</em> который позволяет пользователю выбирать любое количество файлов.</p>
<p>Со стороны сервера загрузка файлов будет проводиться средствани <em>PHP</em>, но независимо от того какую технологию вы используете на сервере <em>JavaScript</em> код останется тем же. Скрытое поле <em>MAX_FILE_SIZE</em> определяет <em>300,000 байт</em>, размер будем проверять и на стороне клиента и на стороне сервера, чтобы предотвротить загрузку огромного размера файлов.</p>
<pre class="prettyprint">
&lt;form id="upload" action="upload.php" method="POST" enctype="multipart/form-data"&gt;
	&lt;fieldset&gt;
		&lt;legend&gt;HTML Загрузка Файлов&lt;/legend&gt;
		&lt;input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000" /&gt;
		&lt;div&gt;
			&lt;label for="fileselect"&gt;Выберите файлы для загрузки:&lt;/label&gt;
			&lt;input type="file" id="fileselect" name="fileselect[]" multiple="multiple" /&gt;
			&lt;div id="filedrag" &gt;Или перетащите их сюда&lt;/div&gt;
		&lt;/div&gt;
		&lt;div id="submitbutton"&gt;
			&lt;button type="submit"&gt;Загрузить файлы&lt;/button&gt;
		&lt;/div&gt;
	&lt;/fieldset&gt;
&lt;/form&gt;
</pre>
<p>Элемент <em>#filedrag</em> будет использоваться как облясть в которую необходимо пренести файлы. Элемент в CSS стилях скрыт, но он будет отображаться средствами <em>JavaScript</em> если перетаскивание поддерживается браузером:</p>
<pre class="prettyprint">
*{
     margin: 0px;
}
body{
     background: none repeat scroll 0% 0% #EFEFEF;
}
.wrapper{
     background: none repeat scroll 0% 0% #FFFFFF;
     margin: 150px auto;
     border: 2px solid #3DA8BA;
     padding: 10px;
     width: 500px;
}
fieldset{
	border:2px solid #efefef;
}
#filedrag{
	border-radius: 7px 7px 7px 7px;
	border: 2px dashed #3DA8BA;
	color: #555555;
	cursor: default;
	display: none;
	margin: 1em 0pt;
	padding: 1em 0pt;
	text-align: center;
	background:#f9f9f9;
}
#filedrag.hover {
	border-style: solid;
	box-shadow: 0pt 3px 4px #dbdbdb inset;
}
#messages{
	margin-top:10px;
	padding:5px;
	font-size:14px;
}
#messages p{
	border-bottom:1px solid #efefef;
	margin-bottom:5px;
}
</pre>
<p>Для элемента также определенн класс <em>.hover</em> который меняет стили когдо пользователь перетаксивает файлы на элемент. Браузеры не поддерживают стили <em>:hover</em> в этой ситуации, но мы можем добовлять класс спомощю Javascript когда происходит нужное событие.</p>
<h2>File API</h2>
<p><a href="http://www.w3.org/TR/file-upload/" target="_blank">W3C File API</a> предостовляет несколько объектов которые мы будем использовать:</p>
<ul>
<li><strong>FileList</strong>: предостовляет массив выбранных файлов.</li>
<li><strong>File</strong>: предстовляет единственный файл.</li>
<li><strong>FileReader</strong>: интерфейс который позволяет нам считать информацию о файле со стороны клиента и использовать в <em>JavaScript</em>.</li>
</ul>
<h2>JavaScript события</h2>
<p>Пришло время писать <em>JavaScript</em> код. Мы не будем использовать <em>JavaScript</em> фреймфроков, поэтому напишем пару фуннкций для сохронения нашего времени. Это функция которая достает нужный элемент по ид и функция выводящая сообщения</p>
<pre class="prettyprint">
/* getElementById */
function $id(id) {
	return document.getElementById(id);
}

/* вывод сообщений */
function Output(msg) {
	var m       = $id("messages");
	m.innerHTML = msg + m.innerHTML;
}
</pre>
<p>Далее проверим поддержку <em>File API</em> и вызовем функцию инициализации <em>Init()</em>:</p>
<pre class="prettyprint">
/* проверка поддержки API */
if (window.File &#038;&#038; window.FileList &#038;&#038; window.FileReader){
	Init();
}
/* инициализация */
function Init(){

	var fileselect   = $id("fileselect"),
		filedrag     = $id("filedrag"),
		submitbutton = $id("submitbutton");

	/* выбор файла */
	fileselect.addEventListener("change", FileSelectHandler, false);

	/* проверка поддержки XHR2 */
	var xhr = new XMLHttpRequest();
	if (xhr.upload){

		/* сброс файла */
		filedrag.addEventListener("dragover", FileDragHover, false);
		filedrag.addEventListener("dragleave", FileDragHover, false);
		filedrag.addEventListener("drop", FileSelectHandler, false);
		filedrag.style.display = "block";

		/* удаление кнопки сабмитта */
		submitbutton.style.display = "none";
	}

}
</pre>
<p>Функция <em>Init():</em></p>
<ol>
<li>Устонавливает обработчик события к изменению инпута типа файл.</li>
<li>Отоброжает элемент <em>#filedrag</em>.</li>
<li>Устанавливает обработчики событий <em>&#8220;dragover&#8221; и &#8220;dragleave&#8221;</em> для динамического изменения стилей элемента #filedrag.</li>
<li>Устанавливает обработчик события &#8220;drop&#8221; для элемента <em>#filedrag</em>.</li>
<li>Скрывает кнопку сабмитта формы &#8211; он пока не требуется, так как мы будем просто анализировать файлы.</li>
</ol>
<p>Также вы можете скрыть инпут типа файл, если перетаскивание поддерживается. Но я не буду этого делать чтобы пользователь мог воспользоваться удобным ему вариантом.</p>
<p>Проверка поддержки метода XMLHttpRequest.upload предотврощает проблемы с Оперой. Браузер поддерживает объекты <em>File, FileList и FileReader</em>, но не поддерживает перетаскивание файлов или <em>XMLHttpRequest2</em>. Поэтому мы отоброжаем информацию о файле, но оставляем скрытым элемент <em>#filedrag</em>.</p>
<h2>Изменение стилей при переносе</h2>
<p>Мало кто испытал перетаскивание файлов в браузер. На самом деле, многие опытные интернет пользователи считают это невозможным. Поэтому написали внутри элемента &#8220;перетащите сюда файлы&#8221;. А следующая функция будет добвлять класс к элементу, когда файл уже будет находится непосредственно над элементом, тем самым будут меняться стили.</p>
<pre class="prettyprint">
// Файл над нужной областью
function FileDragHover(e){
	e.stopPropagation();
	e.preventDefault();
	e.target.className = (e.type == "dragover" ? "hover" : "");
}
</pre>
<h2>Анализирование перетащенных или выбранных файлов</h2>
<p>Будем использовать функцию <em>FileSelectHandler()</em> не зависимо от того обин или несколько файлов были выбранны или перетащенны на элемент <em>#filedrag</em>:</p>
<pre class="prettyprint">
// выбор файла
function FileSelectHandler(e){

	FileDragHover(e);

	// проходимся по объекту FileList
	var files = e.target.files || e.dataTransfer.files;

	// парсим все объекты типа File
	for (var i = 0, f; f = files[i]; i++){
		ParseFile(f);
	}

}
</pre>
<p>Функция:</p>
<ol>
<li>Вызываем функцию <em>FileDragHover()</em> чтобы убрать стиля при <em>hover</em> и предотвратить выполнение событий браузера. Это очень важно, так как браузер может попытаться отобразить файл</li>
<li>Проходимся по объекту <em>FileList</em>.</li>
<li>Наконец функция проходит по всем объектам типа <em>File</em> в объекте <em>FileList</em> и передает их как аргумент в функцию <em>ParseFile()</em></li>
</ol>
<pre class="prettyprint">
function ParseFile(file) {
	Output(
		"&lt;p&gt;File information: &lt;strong&gt;" + file.name +
		"&lt;/strong&gt; type: &lt;strong&gt;" + file.type +
		"&lt;/strong&gt; size: &lt;strong&gt;" + file.size +
		"&lt;/strong&gt; bytes&lt;/p&gt;"
	);
}
</pre>
<p>Функция выводит информация используя три основные свойства представленные объектом <em>File</em> только для чтения.</p>
<ul>
<li><b>.name</b>: имя файла (не включая путь к файлу)</li>
<li><b>.type</b>: MIME тип, например: image/jpeg, text/plain, и т.д.</li>
<li><b>.size</b>: размер файла в байтах</li>
</ul>
<div class="demo">
<a href="http://prootime.ru/demos/html5drag/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://prootime.ru/demos/html5drag/html5drag.rar" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/html5-dragdrop/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery плагин  5Graph</title>
		<link>http://prootime.ru/5graph-jquery-pugin</link>
		<comments>http://prootime.ru/5graph-jquery-pugin#comments</comments>
		<pubDate>Sun, 31 Jul 2011 10:25:10 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=965</guid>
		<description><![CDATA[Последнее время занимался jQuery плагином для построения HTML5 графиков. После чего начал писать для него генератор чтоб людям было удобней пользоваться им, так как плагин очень гибкий и требует очень много обязательных параметров, точнее все параметры обязательны. Поэтому рекомендую использовать генератор, ниже видео с инструкцией, которое также можно найти на странице graph.prootime.ru/howtouse. Видео без звука [...]]]></description>
			<content:encoded><![CDATA[<p>Последнее время занимался jQuery плагином для построения HTML5 графиков. После чего начал писать для него генератор чтоб людям было удобней пользоваться им, так как плагин очень гибкий<span id="more-965"></span> и требует очень много обязательных параметров, точнее все параметры обязательны. Поэтому рекомендую использовать генератор, ниже видео с инструкцией, которое также можно найти на странице <a href="http://graph.prootime.ru/howtouse" target="_blank">graph.prootime.ru/howtouse</a>. Видео без звука придется читать титры:</p>
<div class="video">
<object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/OabSrvnTqh8?version=3&amp;hl=ru_RU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OabSrvnTqh8?version=3&amp;hl=ru_RU" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</div>
<p>Плагин позволяет строить только одного типа графики, зато имеет большое количество настроек позволяющие подстраивать под дизайн своего сайта. Также есть возможность построения нескольких графиков одновременно.</p>
<p>
Конечно <em>5Graph</em> уступает другим подобным плагинам по функционалу построению диаграмм и все такое. Это все в дальнейшем будет нарабатываться, сейчас пока хотелось сделать его гибким при настройке дизайна. Ведь все остальные пдагины встречающиеся мне в основном не позволяют этого делать.
</p>
<p>На этом пока все. Пожалуйста остовляйте свои комментарии, высказывайте свое мнение о 5Graph мне очень интересно. Сайт плагина размещен по адресу <a href="http://graph.prootime.ru" target="_blank">graph.prootime.ru</a></p>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/5graph-jquery-pugin/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Борьба со спамом</title>
		<link>http://prootime.ru/fight_spam</link>
		<comments>http://prootime.ru/fight_spam#comments</comments>
		<pubDate>Sun, 01 May 2011 14:41:54 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=942</guid>
		<description><![CDATA[Я не единственный наверное кого заколебал спам, существует много способов борьбы с ним. Чаще всего ставят капчу, это обычно картинка с цифрами которые нужно ввести в поле для подтверждения того что вы не бот, иногда ставят просто галочку которую нужно выбрать, существует еще куча извращенных способов суть которых одна, добавление лишнего поля. Но как же [...]]]></description>
			<content:encoded><![CDATA[<p>Я не единственный наверное кого заколебал спам, существует много способов борьбы с ним. Чаще всего ставят капчу, это обычно картинка с цифрами которые нужно ввести в поле для подтверждения того что вы не бот, иногда ставят просто галочку которую нужно выбрать, существует еще куча извращенных способов суть которых одна, добавление лишнего поля<span id="more-942"></span>. Но как же быть если я не хочу добавлять лишнего поля в форму, хочу оставить все как есть и так избавиться от спама? Предлагаю поставить проверку на включенность <b>Javascript</b>&#8216;a. Сделать это очень даже легко на <b>PHP</b>, если конечно ваш хостинг включил поддержку функции <a href="http://heel.org.ua/php-functions/get-browser.html" target="_blank">get_browser()</a>:</p>
<pre class="prettyprint">
function workjscript(){
     $brows = get_browser();
     if($brows[javascript]){
         return true;  //то есть выводим форму
     }
     retunr false; //javascript не включен форму не выводим
}
</pre>
<p>Но а если <b>get_browser()</b> не поддерживается вашм хостингом также как и у меня, можно сделать попроще, просто выводить одно из обязательных полей через <b>Javascritpt</b>. В итоге без <b>Javascript</b>&#8216;a пользователь, спам бот или кто еще пофигу будет получать форму без одного обязательного поля и не сможет отправить форму. Ну на примере <b>wordpress</b> для комментариев можно передать в качестве поля имени автора следующее:</p>
<pre class="prettyprint">
'author' => '&lt;div class="first_inputs"&gt;
	&lt;span id="authorplace">&lt;/span&gt;
	&lt;script type="text/javascript"&gt;
		$(document).ready(function(){
			$("#authorplace").html("\
				&lt;input class=\"cm_name\" placeholder=\"Имя\" id=\"author\" name=\"author\" type=\"text\" value=\"'.esc_attr( $commenter['comment_author'] ) . '\"' . $aria_req . ' /&gt;\
			");
		});
	&lt;/script&gt;',
</pre>
<p class="hight1">Хороший ресурс для <a href="http://webpinger.ru/" title="тестирование сайта">тестирования сайта</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/fight_spam/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ЕГЭ информатика B8</title>
		<link>http://prootime.ru/ege-informatika-b8</link>
		<comments>http://prootime.ru/ege-informatika-b8#comments</comments>
		<pubDate>Tue, 22 Mar 2011 18:12:42 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=834</guid>
		<description><![CDATA[Мобильное приложение для решения задания B8 ЕГЭ по информатике. Сейчас я особо не занимаюсь этим сайтом так как готовлюсь к ЕГЭ, чтоб его. Так вот, все думаю когда то писали шпоры, а я решил написать прогу, скорее web приложение которое поможет мне при сдаче ЕГЭ. Готовясь к информатике заметил что почти во всех заданиях B8 [...]]]></description>
			<content:encoded><![CDATA[<p>Мобильное приложение для решения задания B8 ЕГЭ по информатике.</p>
<p><span id="more-834"></span></p>
<p>Сейчас я особо не занимаюсь этим сайтом так как готовлюсь к ЕГЭ, чтоб его. Так вот, все думаю когда то писали шпоры, а я решил написать прогу, скорее web приложение которое поможет мне при сдаче ЕГЭ.</p>
<p> Готовясь к информатике заметил что почти во всех заданиях B8 встречается одна и та же по типу задача, в которой обычно требуется найти последовательность букв с какой то позиции по какую то. Пример задания:</p>
<blockquote><p>Строки (цепочки символов латинских букв) создаются по следующему правилу: первая строка состоит из одного символа &#8211; латинской буквы “A”. Каждая из последующих цепочек создается такими действиями: в очередную строку сначала дважды записывается предыдущая строка, затем справа приписывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i &#8211; м шаге пишется “i” &#8211; я буква алфавита).<br />
Вот первые 4 строки созданные по этому правилу:<br />
1) A<br />
2) AAB<br />
3) AABAABC<br />
3) AABAABCAABAABCD<br />
<i>Латинский алфавит (для справки):</i><br />
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br />
Запишите шесть символов подряд, стоящие в восьмой строке с 100-го по 105-место (считая слева направо).</p></blockquote>
<p>Встречаются разные варианты этой задачи в некоторых требуется найти количество определенных букв в какой то строке, встречаются еще и с русским алфавитом.</p>
<p>Итак цель написать web приложение которое смогло бы решить все варианты этой задачи и была бы удобна для использования с телефона. Не знаю о чем подумали вы, но я подумал о jQuery Mobile. Почитав немного <a href="http://jquerymobile.com/demos/1.0a3/" target="_blank">документации</a>  написал разметку. Приложение будет состоять из одной страницы в которой будет выводиться форма состоящая из 4х полей это: поле для выбора алфавита, количества строк, начальной позиции и конечной позиции. Стилей писать не придется так как jQuery Mobile так устроен, остается написать разметку</p>
<p>Получилась она вот такой:</p>
<pre class="prettyprint">
   &lt;div data-role="page" data-theme="c"&gt;
       &lt;div data-role="header"&gt;
           &lt;h1&gt;Информатика B8&lt;/h1&gt;
       &lt;/div&gt;
       &lt;div data-role="content"&gt;
           &lt;form action="" method="get"&gt;
               &lt;div data-role="fieldcontain"&gt;
                   &lt;label for="select-choice-1" class="select"&gt;Выберите алфавит:&lt;/label&gt;
                   &lt;select name="lang" id="select-choice-1"&gt;
					   &lt;option value="lt">Латинский&lt;/option&gt;
					   &lt;option value="ru">Русский&lt;/option&gt;
                   &lt;/select&gt;
               &lt;/div&gt;
               &lt;div data-role="fieldcontain"&gt;
                   &lt;label for="line">Количество строк:&lt;/label&gt;
                   &lt;input type="number" name="line" id="line"&gt;
               &lt;/div&gt;
               &lt;div data-role="fieldcontain"&gt;
                   &lt;label for="beg_pos"&gt;Начальная позиция:&lt;/label&gt;
                   &lt;input type="number" name="beg_pos" id="beg_pos"&gt;
               &lt;/div&gt;
               &lt;div data-role="fieldcontain"&gt;
                   &lt;label for="end_pos">Конечная позиция:&lt;/label&gt;
                   &lt;input type="number" name="end_pos" id="end_pos"&gt;
               &lt;/div&gt;
               &lt;button type="submit" data-theme="b" name="calc" value="calc"&gt;Посчитать&lt;/button&gt;
           &lt;/form&gt;
       &lt;/div&gt;
       &lt;div data-role="footer"&gt;
           &lt;h4&gt;&lt;a href="http:\\prootime.ru"&gt;prootime.ru&lt;/a&gt;&lt;/h4&gt;
       &lt;/div&gt;
   &lt;/div&gt;
</pre>
<p>В header&#8217;е нужно подключить вот эти скрипты:</p>
<pre class="prettyprint">
stylesheet - http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css
script - http://code.jquery.com/jquery-1.4.3.min.js
script - http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js
</pre>
<p>На вид примерно что то вроде этого:</p>
<p align="center"><img src="http://prootime.ru/wp-content/uploads/2011/03/infp_ege8.png" alt="" title="infp_ege8" width="300" height="466" class="alignnone size-full wp-image-841" /></p>
<p>Осталось написать PHP код. Он будет очень даже простой, просто поставим на сабмит формы PHP код и будем выполнять алгоритм который был дан в задании:</p>
<pre class="prettyprint">
if(!empty($_REQUEST['calc'])){

   //язык
   $language = $_REQUEST['lang'];

   if($language == 'lt'){

       $arr = range('A','Z');

   }
   else{

       $arr = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я');

   }

   //номер строки
   $str_num = $_REQUEST['line'];

   //начальная и конечная позицим
   $beg_pos = $_REQUEST['beg_pos'];
   $end_pos = $_REQUEST['end_pos'];

   if($beg_pos > $end_pos){

       echo 'Ошибка! Значения начала отреза больше конеца.';

   }
   else{

       //конечная строка
       $end_str = '';

       for($i = 0; $i <= $str_num-1; $i++){

           $end_str = $end_str.$end_str.$arr[$i];

       }

       echo mb_substr($end_str, $beg_pos-1, $end_pos - $beg_pos + 1, 'utf8');
       echo '<br/>Всего букв - '.strlen($end_str);

       for($i = 0; $i <= $str_num-1; $i++){

           echo '<br/>'.$arr[$i].' - '.mb_substr_count($end_str,$arr[$i], 'utf8');

       }

   }

}</pre>
<p>Единственное на что бы хотел обратить внимание это на функции начинающиеся с <b>mb_</b> это нестандартные функции и требуют модуль <b>mbstring</b> если он не подключен то они конечно не сработают. А вообще выполняют то же самое что эти же функции без <b>mb_</b>. Почему я их использовал, потому что этим функциям можно передать третьим параметром кодировку в которой функция должна работать. А так как нам нужно работать еще и с кирилицей это то что нам нужно.</p>
<div class="demo">
<a href="http://prootime.ru/demos/inf8/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://paste.netsago.org/ru/view/0/dzantiev/" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/ege-informatika-b8/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS оформление select</title>
		<link>http://prootime.ru/select-css</link>
		<comments>http://prootime.ru/select-css#comments</comments>
		<pubDate>Sat, 15 Jan 2011 20:35:49 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=761</guid>
		<description><![CDATA[Есть наверное куча плагинов предоставляющие возможность изменения обычных select на необычные, или такие которые хотя бы отображались бы во всех браузерах одинаково. Но нам же это не интересно , сейчас попробуем сделать из обычного селекта необычный т.е. будет выглядеть примерно так: В демке представлено 4 селекта смотрим. ДЕМО ВЕРСИЯпосмотреть в действииСКАЧАТЬскачать на компьютер Вконтакте извините [...]]]></description>
			<content:encoded><![CDATA[<p>Есть наверное куча плагинов предоставляющие возможность изменения обычных select на необычные, или такие которые хотя бы отображались бы во всех браузерах одинаково. Но нам же это не интересно <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  , сейчас попробуем сделать из обычного селекта необычный <span id="more-761"></span>т.е. будет выглядеть примерно так:</p>
<p align="center"><img src="http://prootime.ru/wp-content/uploads/2011/01/select1.png" alt="select css" title="select1" width="205" height="133" class="size-full wp-image-762" /></p>
<p>В демке представлено 4 селекта смотрим.</p>
<p><br/></p>
<div class="demo">
<a href="http://jsfiddle.net/axelru/QBHjY/21/embedded/result/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://jsfiddle.net/axelru/QBHjY/21/" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
<p><br/></p>
<p>Вконтакте извините я спер у вас оформление и цвета селекта <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Возьмем обычный select с несколькими option примерно вот:</p>
<pre class="prettyprint">
&lt;select id="ourselect1"&gt;
           &lt;option value="eee"&gt;Значение 19&lt;/option&gt;
           &lt;option value="222"&gt;Значение 18&lt;/option&gt;
           &lt;option value="444"&gt;Значение 17&lt;/option&gt;
           &lt;option value="123"&gt;Значение 16&lt;/option&gt;
           &lt;option value="122"&gt;Значение 15&lt;/option&gt;
           &lt;option value="113"&gt;Значение 14&lt;/option&gt;
           &lt;option value="124"&gt;Значение 13&lt;/option&gt;
&lt;/select&gt;
</pre>
<p>Обернем его в div с классом &#8220;sel_wrap&#8221;, в начале которого выстроим структуру нашего селекта дивами. Если представить это все дело на картинке то получится следующая картина:
</p>
<p align="center"><img src="http://prootime.ru/wp-content/uploads/2011/01/select-structure.png" alt="select-structure" title="select-structure" width="502" height="487" class="size-full wp-image-771" /></p>
<p>А код получится следующим:</p>
<pre class="prettyprint">
&lt;div class="sel_wrap"&gt;
    &lt;div class="sel_imul"&gt;
        &lt;div class="sel_selected"&gt;
            &lt;div class="selected-text"&gt;Значение 19&lt;/div&gt;&lt;div class="sel_arraw"&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="sel_options"&gt;
            &lt;div class="sel_option" value="eee"&gt;Значение 19&lt;/div&gt;
            &lt;div class="sel_option" value="222"&gt;Значение 18&lt;/div&gt;
            &lt;div class="sel_option" value="444"&gt;Значение 17&lt;/div&gt;
            &lt;div class="sel_option" value="123"&gt;Значение 16&lt;/div&gt;
            &lt;div class="sel_option" value="122"&gt;Значение 15&lt;/div&gt;
            &lt;div class="sel_option" value="113"&gt;Значение 14&lt;/div&gt;
            &lt;div class="sel_option" value="124"&gt;Значение 13&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;select id="ourselect1"&gt;
        &lt;option value="eee"&gt;Значение 19&lt;/option&gt;
        &lt;option value="222"&gt;Значение 18&lt;/option&gt;
        &lt;option value="444"&gt;Значение 17&lt;/option&gt;
        &lt;option value="123"&gt;Значение 16&lt;/option&gt;
        &lt;option value="122"&gt;Значение 15&lt;/option&gt;
        &lt;option value="113"&gt;Значение 14&lt;/option&gt;
        &lt;option value="124"&gt;Значение 13&lt;/option&gt;
    &lt;/select&gt;
&lt;/div&gt;
</pre>
</p>
<p>Далее приступим к стилям. Естественно скрываем наш обычный селект, а структуру эмилирующую селект стилизуем как нам хочется:</p>
<pre class="prettyprint">
.sel_wrap{
    background:#efefef;
    margin-bottom:5px;
    padding:7px;
}
.sel_wrap select{
    display:none;
}
.sel_imul{
    width:300px;
}
.sel_imul .sel_selected{
    background:#fff;
    border:1px solid #bbb;
    padding:3px 6px;
    font-size:14px;
    font-family:Times;
    cursor:pointer;
    position:relative;
}
.sel_imul.act .sel_selected{
    background:#efefef;
}
.sel_selected .sel_arraw{
    height:100%;
    width:20px;
    background:url('http://bit.ly/gudLNa') 50% 50% no-repeat;
    position:absolute;
    top:0px;
    right:0px;
}
.sel_imul:hover .sel_selected .sel_arraw{
    background-color:#e0e0e0;
    border-left:1px solid #bbb;
}
.sel_imul.act .sel_selected .sel_arraw{
    background-color:#e0e0e0;
    border-left:1px solid #bbb;
}
.sel_imul .sel_options{
    background:#fff;
    border:1px solid #dbdbdb;
    border-top:none;
    overflow:auto;
    position:absolute;
    width:298px;
    display:none;
    z-index:10;
}
.sel_options .sel_option{
    padding:3px 4px;
    font-size:14px;
    font-family:Times;
    border:1px solid #fff;
    border-right:none;
    border-left:none;
}
.sel_options .sel_option:hover{
    border-color:#dbdbdb;
    cursor:pointer;
}
.sel_options .sel_option.sel_ed{
    background:#dbdbdb;
    border-color:#dbdbdb;
}

/*second variant*/
.sec .sel_imul{
    width:200px;
}
.sec .sel_imul .sel_selected{
    border:1px solid #C0CAD5;
}
.sel_imul.act .sel_selected{
    background:#fff;
}
.sec .sel_imul:hover .sel_selected .sel_arraw{
    background-color:#e1e8ed;
    border-left:1px solid #d2dbe0;
}
.sec .sel_imul.act .sel_selected .sel_arraw{
    background-color:#e1e8ed;
    border-left:1px solid #d2dbe0;
}
.sec .sel_imul .sel_options{
    background:#fff;
    border:1px solid #d2dbe0;
    width:198px;
}
.sec.overf .sel_imul .sel_options{
    height:100px;
}
.sec .sel_options .sel_option:hover, .sec .sel_options .sel_option.sel_ed{
    background:#587da1;
    border:1px solid #2a5883;
    color:#fff;
    cursor:pointer;
}
.sec .sel_imul .sel_selected .sel_arraw{
    background-image:url('http://vkontakte.ru/images/darr_dd_out.gif');
}

.sec.round .sel_imul .sel_selected{
    -webkit-border-radius:5px;
}
.sec.round .sel_imul .sel_selected .sel_arraw{
    -webkit-border-radius:0 5px 5px 0;
}
.sec.round .sel_imul .sel_options{
    -webkit-border-radius:0 0 5px 5px;
}
/*green*/
.sec.green .sel_imul .sel_selected{
    border-color:#FFAD99;
}
.sec.green .sel_imul:hover .sel_selected .sel_arraw,
.sec.green .sel_imul.act .sel_selected .sel_arraw{
    background-color:#FFD6CC;
    border-left:1px solid #FFAD99;
}
.sec.green .sel_options .sel_option:hover,
.sec.green .sel_options .sel_option.sel_ed{
    background:#FF9980;
    border:1px solid #FF704D;
    color:#fff;
    cursor:pointer;
}
</pre>
<p>Здесь уже стили предусматривающие работу javascript&#8217;а, и несколько типов селектов.
</p>
<p>Дальше приступим к <strong>javascript</strong>&#8216;у. Во первых сделаем так чтобы при клике на див эмулирующий select, открывался или закрывался список option&#8217;ов:</p>
<pre class="prettyprint">
$('.sel_imul').live('click', function() {

    $('.sel_imul').removeClass('act');
    $(this).addClass('act');

    if ($(this).children('.sel_options').is(':visible')) {

        $('.sel_options').hide();

    }
    else {

        $('.sel_options').hide();
        $(this).children('.sel_options').show();

    }

});
</pre>
</p>
<p>Теперь пишем событие которое будт менять значение обычного, скрытого, селекта и значение у эмулирующего селекта:</p>
<pre class="prettyprint">
$('.sel_option').live('click', function() {

    //меняем значение на выбранное
    var tektext = $(this).html();
    $(this).parent('.sel_options').parent('.sel_imul').children('.sel_selected').children('.selected-text').html(tektext);

    //активируем текущий
    $(this).parent('.sel_options').children('.sel_option').removeClass('sel_ed');
    $(this).addClass('sel_ed');

    //устанавливаем значение для селекта
    var tekval = $(this).attr('value');
    tekval = typeof(tekval) != 'undefined' ? tekval : tektext;
    $(this).parent('.sel_options').parent('.sel_imul').parent('.sel_wrap').children('select').children('option').removeAttr('selected').each(function() {
        if ($(this).val() == tekval) {
            $(this).attr('selected', 'select');
        }
    });
});
</pre>
</p>
<p>Ну еще напишем меленький код который будет закрывать селект при холостом клике, blur так зказать:</p>
<pre class="prettyprint">
var selenter = false;
$('.sel_imul').live('mouseenter', function() {
    selenter = true;
});
$('.sel_imul').live('mouseleave', function() {
    selenter = false;
});
$(document).click(function() {
    if (!selenter) {
        $('.sel_options').hide();
        $('.sel_imul').removeClass('act');
    }
});
</pre>
</p>
<p>Напишем функцию которая будет превращать из обычного селекта такой т.е. писать за нас код, назовем его <b>reselect()</b>:</p>
<pre class="prettyprint">
function reselect(select, addclass) {

    addclass = typeof(addclass) != 'undefined' ? addclass : '';

    $(select).wrap('&lt;div class="sel_wrap ' + addclass + '"/&gt;');

    var sel_options = '';
    $(select).children('option').each(function() {
        sel_options = sel_options + '&lt;div class="sel_option" value="' + $(this).val() + '"&gt;' + $(this).html() + '&lt;/div&gt;';

    });

    var sel_imul = '&lt;div class="sel_imul"&gt;\
                &lt;div class="sel_selected"&gt;\
                    &lt;div class="selected-text"&gt;' + $(select).children('option').first().html() + '&lt;/div&gt;\
                    &lt;div class="sel_arraw"&gt;&lt;/div&gt;\
                &lt;/div&gt;\
                &lt;div class="sel_options"&gt;' + sel_options + '&lt;/div&gt;\
            &lt;/div&gt;';

    $(select).before(sel_imul);

}
</pre>
<p>Здесь что то нормально не удается показать функцию, можете посмотреть ее в демке
</p>
<div class="demo">
<a href="http://jsfiddle.net/axelru/QBHjY/21/embedded/result/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://jsfiddle.net/axelru/QBHjY/21/" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/select-css/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Красивый input file</title>
		<link>http://prootime.ru/custumize-input-file</link>
		<comments>http://prootime.ru/custumize-input-file#comments</comments>
		<pubDate>Mon, 08 Nov 2010 20:13:20 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=742</guid>
		<description><![CDATA[Столкнулся с такой проблемой как input типа file, наверное все знают что он выглядит в разных браузерах по разному, и применять к нему какие то стили нету смыла так как они будут работать везде по разному. В общем цель сделать красивый выглядящий везде одинаково input типа file. Начнем с HTML, пытаться применить к инпуту стили [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с такой проблемой как input типа file, наверное все знают что он выглядит в разных браузерах по разному, и применять к нему какие то стили нету смыла так как они будут работать везде по разному. В общем цель сделать красивый выглядящий везде одинаково input типа file.<span id="more-742"></span><br />
Начнем с HTML, пытаться применить к инпуту стили даже не будем и искать Jquery плагин тоже, хотя можно было б найти наверно подходящий. Давайте просто сэмулируем внешний вид инпута, а при нажатии на симулированную кнопку будем пытаться javascript&#8217;ом открыть диалоговое окно выбора файла, а чтоб было лучше давайте расположим настоящий инпут над симулированной кнопкой &#8220;Обзор&#8221;, и сделаем его прозрачным, выглядеть это будет примерно так:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/11/1img.jpg" alt="" title="1img" width="557" height="193" class="alignnone size-full wp-image-743" /></center><br />
Ну и разметка</p>
<pre class="prettyprint">
&lt;div class="f_imulation_wrap"&gt;
    &lt;div class="im_input"&gt;
        &lt;input type="text"/&gt;
    &lt;/div&gt;
    &lt;div class="im_button"&gt;
        &lt;span class="inptext"&gt;Обзор&lt;/span&gt;
        &lt;input type="file" id="imulated" size="30"/&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Теперь нужно как то расположить это правильно как я уже говорил &#8220;CSS&#8221;:</p>
<pre class="prettyprint">
.im_input{
    float:left;
}
.im_input input{
    border:1px solid #9f9f9f;
    padding:2px;
    font-size:12px;
    width:250px;
    margin-right:4px;
}
.im_button{
    width:60px;
    height:19px;
    overflow:hidden;
    background:#aeaeae;
    border:1px solid #949494;
    position:relative;
}
.im_button.act{
    background:#bfbfbf;
}
.inptext{
    font-size:13px;
    line-height:19px;
    margin-left:12px;
    position:absolute;
}
#imulated{
    width:60px;
    border:none;
    opacity:0;
    filter: alpha(opacity=0);
    padding:0px;
    margin:0px;
    position:absolute;
}
</pre>
<p>Сейчас наша штука выглядит так:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/11/2img.jpg" alt="" title="2img" width="346" height="40" class="alignnone size-full wp-image-744" /></center><br />
В принципе все работает но при выборе файла текстовое поле слева остается пустым исправим это &#8220;Javascript&#8221;<br />
Будем при onchange настоящего инпута типа файл, менять значение текстового поля. Конечно будем использовать Jquery:</p>
<pre class="prettyprint">
$('#imulated').change(function(){

    $('.im_input input').val($(this).val());

});
</pre>
<p>Сделаем еще эффект при наведении для кнопки обзор, будем добавлять ему класс:</p>
<pre class="prettyprint">
$('#imulated').mouseover(function(){

    $('.im_button').addClass('act');
    $(this).css('cursor','pointer');

});

$('#imulated').mouseout(function(){

    $('.im_button').removeClass('act');

});
</pre>
<p>Простым Css это к сожалению не получиться потому что :hover для имулирующей кнопки не срабатывает так как над ним находится прозрачный input.<br />
Ну и последнее будем пробовать нажимать на инпут при нажатии на текстовое поле:</p>
<pre class="prettyprint">
$('.im_input input').click(function(){

    $('#imulated').trigger('click');

});
</pre>
<p>К сожалению работать эта функция будет только в хроме и в сафари так как при онклик в других браузерах на инпут типа файл не срабатывает диалоговое окно.</p>
<blockquote><p>Если вам нужно обменять валюту вам сюда -><a href="http://monitoring-obmenov.ru/">обмен валюты</a></p></blockquote>
<p>Ну и напоследок несколько видов того как он может выглядеть ото че то сероватый получился<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/11/3img.jpg" alt="" title="3img" width="346" height="140" class="alignnone size-full wp-image-745" /></center><br />
С фантазией у меня не очень так что дальше сами фантазируйте со стилями</p>
<div class="demo">
<a href="http://jsfiddle.net/axelru/yuSmP/11/" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://jsfiddle.net/axelru/yuSmP/11/" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/custumize-input-file/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Редактируемый список</title>
		<link>http://prootime.ru/editeble-list</link>
		<comments>http://prootime.ru/editeble-list#comments</comments>
		<pubDate>Sat, 25 Sep 2010 21:01:41 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=721</guid>
		<description><![CDATA[В этом уроке попробуем создать редактируемый список, то есть элементы списка можно будет перемещать вверх, вниз, а также удалять элементы списка. Внешне это все будет выглядеть примерно так: Конечно же будем использовать javascript также библиотеку jQuery, для перемещения элементов по списку. Ну а начнем как всегда с html. HTML Для начала создадим простой неупорядоченный список [...]]]></description>
			<content:encoded><![CDATA[<p>В этом уроке попробуем создать редактируемый список, то есть элементы списка можно будет перемещать вверх, вниз, а также удалять элементы списка. Внешне это все будет выглядеть примерно так:<span id="more-721"></span><br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/img1.jpg" alt="uledit" title="img1" width="277" height="165" class="alignnone size-full wp-image-722" /></center><br />
Конечно же будем использовать javascript также библиотеку jQuery, для перемещения элементов по списку. Ну а начнем как всегда с html.</p>
<h2>HTML</h2>
<p>Для начала создадим простой неупорядоченный список с пару элементами:</p>
<pre class="prettyprint">
&lt;ul class="mylist"&gt;
	&lt;li&gt;1. Element1&lt;/li&gt;
	&lt;li&gt;2. Element2&lt;/li&gt;
	&lt;li&gt;3. Element3&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Теперь нам надо как то структурировать наши элементы для для удобного обращения к ним через javascript, также создадим три кнопки вверх, вниз и кнопку удаления. После преобразований код элемента выглядит следующим образом:</p>
<pre class="prettyprint">
&lt;li&gt;
	&lt;span class="num"&gt;1.&lt;/span&gt;
	&lt;span class="subj"&gt;Element1&lt;/span&gt;

	&lt;div class="top"&gt;&lt;/div&gt;
	&lt;div class="bottom"&gt;&lt;/div&gt;
	&lt;div class="delete"&gt;&lt;/div&gt;
&lt;/li&gt;
</pre>
<p>Далее нужно проделать тоже самое со всеми элементами. Теперь наши элементы имеют следующую структуру:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/img2.jpg" alt="editeble ul" title="editeble ul" width="600" height="200" class="alignnone size-full wp-image-723" /></center><br />
С html вроде все понятно давайте теперь приведем это все в божеский вид. Приступим к CSS.</p>
<h2>CSS</h2>
<p>Зададим списку какую нибудь ширину и расположим посередине, еще уберем отступы зададим фон в общем вот:</p>
<pre class="prettyprint">
.mylist{
    background:#eee;
    padding:0px;
    list-style:none;
    margin:0px;
    width:250px;
    margin:0px auto;
    border:1px solid #aaa;
    border-top:none;
  }
</pre>
<p>Дальше приступим к самим элементам списка, установим отступы (pdding), ну и какой нибудь эффект при наведении:</p>
<pre class="prettyprint">
.mylist li{
    border-top:1px solid #aaa;
    padding:4px 7px;
    overflow:hidden;
  }
.mylist li:hover{
    background:#bbb;
  }
</pre>
<p>Теперь уже приступим к содержимому самих элементов это два span&#8217;a и три div&#8217;a начнем со span&#8217;ов:</p>
<pre class="prettyprint">
.mylist .num{
    color:#000;
    width:30px;
    float:left;
  }
.mylist .subj{
    color:#444;
    width:150px;
    float:left;
  }
</pre>
<p>Цвет текста, ширины и float&#8217;a думаю достаточно, все таки это пост не о том как красивее оформить список <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Дальше приступим к div&#8217;ам , кнопкам, скроем их и будем показывать только при наведении на элемент списка, ну еще разукрасим в разные цвета чтоб они отличались, допустим кнопка вверх будет зеленым цветом, вниз &#8211; оранжевым, кнопка удаления &#8211; красным:</p>
<pre class="prettyprint">
.mylist div{
    visibility:hidden;
    cursor:pointer;
  }
.mylist li:hover div{
    visibility:visible;
  }
.mylist .top{
    height:17px;
    width:17px;
    float:left;
    background:green;
  }
.mylist .bottom{
    height:17px;
    width:17px;
    float:left;
    background:orange;
  }
.mylist .delete{
    height:17px;
    width:17px;
    float:left;
    background:red;
  }
</pre>
<p>Теперь мы имеем готовый стилизованный кое как список выглядящий вот так:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/img3.jpg" alt="" title="img3" width="271" height="161" class="alignnone size-full wp-image-724" /></center><br />
Осталось написать javascript функции управления этим списком, приступим.</p>
<h2>Javascript</h2>
<p>Начнем раздел javascript чуть чуть не с javascript&#8217;a , я решил все таки вынести этот пункт сюда. Нашим кнопка следует прописать <b><i>onclck</i></b> равным функциям которые будут вызываться по нажатию на определенный тип кнопки. Вот список того кому че нужно прописывать:</p>
<ul>
<li>top &#8211; onclick=&#8221;move_top([здесь порядковый номер элемента в списке])&#8221;</li>
<li>bottom &#8211; onclick=&#8221;move_bottom([здесь порядковый номер элемента в списке])&#8221;</li>
<li>delete &#8211; onclick=&#8221;delete([здесь порядковый номер элемента в списке])&#8221;</li>
</ul>
<p>В итоге элемент, допустим второй будет выглядеть так:</p>
<pre class="prettyprint">
&lt;li class="li2"&gt;

  &lt;span class="num"&gt;2.&lt;/span&gt;
  &lt;span class="subj"&gt; Elemen2&lt;/span&gt;

  &lt;div class="top" onclick="move_top(2)"&gt;&lt;/div&gt;
  &lt;div class="bottom" onclick="move_bottom(2)"&gt;&lt;/div&gt;
  &lt;div class="delete" onclick="delete_li(2)"&gt;&lt;/div&gt;

&lt;/li&gt;
</pre>
<p>И наконец приступим к javascript&#8217;у для начала создадим функцию создания элемента входным параметрами которого будут порядковый номер элемента в списке и текст создаваемого элемента:</p>
<pre class="prettyprint">
function create_new_li(el_id,el_text){

    return '&lt;li class="li'+el_id+'"&gt;\
      \
      &lt;span class="num"&gt;'+el_id+'.&lt;/span&gt;\
      &lt;span class="subj"&gt; '+el_text+'&lt;/span&gt;\
      \
      &lt;div class="top" onclick="move_top('+el_id+')"&gt;&lt;/div&gt;\
      &lt;div class="bottom" onclick="move_bottom('+el_id+')"&gt;&lt;/div&gt;\
      &lt;div class="delete" onclick="delete_li('+el_id+')"&gt;&lt;/div&gt;\
      \
      \
    &lt;/li&gt;';  

}//end of the function create_new_li
</pre>
<p>Функция как вы заметили не создает а просто возвращает строку содержащую разметку нового элемента. Начнем написание функция которые мы прописывали для кнопок. Итак функция <b><i>move_top</i></b>:</p>
<pre class="prettyprint">
function move_top(el_id){

  if(el_id!=1){

    //узнаем ид верхнего li
    var top_li_id = el_id-1;

    //узнаем текст верхнего li
    var top_li_text = $('li.li'+top_li_id+' .subj').html();

    //удаляем верхний li
    $('li.li'+top_li_id).remove();

    //узнаем текст перемещаемого элемента
    var per_li_text = $('li.li'+el_id+' .subj').html();

    //создаем копию перемещаемого вверх элемента над ни же с другим ид
    var newli = create_new_li(top_li_id,per_li_text);
    $('li.li'+el_id).before(newli);

    //удаляем перемещаемый элемент
    $('li.li'+el_id).remove();

    //зодаем под до этого созданным элементом эелемент который был до этого над
    //перемещаемым вверх, создаем его с ид на 1 меньше
    var newli = create_new_li(el_id,top_li_text);
    $('li.li'+top_li_id).after(newli);

  }//end if

}//end of the function move_top
</pre>
<p>Вкратце как работает эта функция, она сперва удаляет элемент расположенный над перемещаемым, в данном случае вверх, и создает на его место копию своего элемента, но уже с другим порядковым номером и ид на один меньше, так как счет идет сверху вниз (ид и порядковый номер соводают точнее конец ид), затем она удаляет перемещаемый элемент и создает на его месте до этого удаленный элемент, опять же с другим ид (в этот раз на 1больше).<br />
Тперь разберемся с другой функцией, которая перемещает наоборот вниз <b><i>move_bottom</i></b>:</p>
<pre class="prettyprint">
function move_bottom(el_id){

   //узнаем количество элементов в списке
   var li_count = $('.mylist li').size();

   //проверяем не пытаемся ли мы сместить вниз последний элемент
   if(el_id!=li_count){

     //узнаем порядковый номер нижнего элемента
    var bot_li_id = el_id+1;

    //узнаем текст элемента расположенного под перемещаемым
    var bot_li_text = $('li.li'+bot_li_id+' .subj').html();

    //удаляем елемент расположенный под перемещаемым
    $('li.li'+bot_li_id).remove();

    //узнаем текст перемещаемого элемента
    var per_li_text = $('li.li'+el_id+' .subj').html();

    //создаем копию перемещаемого вниз элемента под ним же с другим ил +1
    var newli = create_new_li(bot_li_id,per_li_text);
    $('li.li'+el_id).after(newli);

    //удаляем перемещаемый элемент
    $('li.li'+el_id).remove();

    //создаем над созданным элементом копию элемнета котрый был расположен под
    //перемещаемым элементом
    var newli = create_new_li(el_id,bot_li_text);
    $('li.li'+bot_li_id).before(newli);

   }//end if

}//end function move_bottom
</pre>
<p>В принципе эта функция делает то же самое что и предыдущая только наоборот, даже описвать ниче не надо <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , комментариев тоже думаю достаточно.<br />
Ну и последняя фукция для кнопки удаления элемента <b><i>delete</i></b>:</p>
<pre class="prettyprint">
function delete_li(el_id){

  //узнаем количество элементов в списке
  var li_count = $('.mylist li').size();

  //если елемент не последний пересоздаем нижние элементы
  //с другими ид
  if(el_id!=li_count){

    //узнаем количество элементов после удаляемого
    var dif = li_count - el_id;

    //удаляем удаляемый элемент
    $('li.li'+el_id).remove();

    //копмруем порядковый номер удоля
    var count = el_id;

    //проходим циклом под элементам расположенныым под удаленным
    //и пересоздаем их
    for(i=1;i<=dif;i++){

      //узнаем порядковый номер следующего элемента
      var next_el = count*1 + 1;

      //узнаем текст следующего элемента
      var next_li_text = $('li.li'+next_el+' .subj').html();

      //пересоздаем элемент
      var newli = create_new_li(count,next_li_text);
      $('li.li'+next_el).before(newli);

      //удаляем элемент
      $('li.li'+next_el).remove();

      count++
    }

  }
  //если элемент последний просто удоляем его
  else{

    //удаляем элемент
    $('li.li'+el_id).remove();

  }//end else

}//end function delete_li
</pre>
<p>Функция сперва проверяет последний ли проверяемы элемент или нет, если последний просто удаляем его а если не последний удаляем элемент и пересоздаем нижние элементы с новыми порядковыми номерами.<br />
<a href="http://stavkisport.ru/">Прогнозы на спорт</a><br />
Вот и все вот и tutorial'у конец <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Смотрим тестируем комментируем -></p>
<div class="demo">
<a href="http://jsbin.com/adeco3/2" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://prootime.ru/demos/uledit/uledit.rar" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/editeble-list/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание lightbox как в Facebook</title>
		<link>http://prootime.ru/facebook-like-lightbox</link>
		<comments>http://prootime.ru/facebook-like-lightbox#comments</comments>
		<pubDate>Sun, 05 Sep 2010 09:53:58 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=697</guid>
		<description><![CDATA[В этом уроке попробуем создать всплывающее окно(lightbox) как в Facebook, в котором можно будет размещать не только картинки но и любой другой контент, кто не видел фесбуковкий лайтбокс снизу показано: Будем конечно же использовать javascript как и в любых других lightbox&#8217;ах, но начнем мы с HTML и CSS. HTML &#038; CSS Для начала создадим div [...]]]></description>
			<content:encoded><![CDATA[<p>В этом уроке попробуем создать всплывающее окно(lightbox) как в Facebook, в котором можно будет размещать не только картинки но и любой другой контент, кто не видел фесбуковкий лайтбокс снизу показано:<span id="more-697"></span><br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/Facebook-Pages-Popup-Box.jpg" alt="" title="Facebook-Pages-Popup-Box" width="510" height="314" class="alignnone size-full wp-image-704" /></center><br />
Будем конечно же использовать javascript как и в любых других lightbox&#8217;ах, но начнем мы с HTML и CSS.</p>
<h2>HTML &#038; CSS</h2>
<p>Для начала создадим div который покроет все окно, нужно для того чтобы задняя часть лайтбокса была неактивной, также мы сможем сделать ее темнее, ну это уже по желанию. Создаем:</p>
<pre class="prettyprint">
&lt;div id="gogo_overly"&gt;&lt;/div&gt;
</pre>
<p>Указываем для этого div&#8217;a следующие стили</p>
<pre class="prettyprint">
height:100%;
width:100%;
opacity:0.5;
position:fixed;
top:0;
z-index:100;
</pre>
<p>Тоесть указываем диву 100% ширину и высоту, фиксированное позиционирование чтоб при скроллинге он не съезжал, и указываем 100ый z-index можно было поставить и поменьше но для надежности 100 <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  z-index помогает делать все остальные элементы у которых z-index меньше 100 неактивными точнее они будут активными но будут расположены нашим дивом и не будут кликабельными, а активными будут только те элементы у которых z-index больше 100 , а это будут элементы нашего лайтбокса&#8217;.<br />
Дальше собственно приступаем к созданию самого лайтбокса HTML будет примерно следующим- это четыре вложенных дива первые два для позиционирования по центру так удобней <img src='http://prootime.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  третий для эффекта прозрачных границ мы же хотим как в Facebook так как сами границы прозрачными не получиться седлать создаем этот третий див который будет больше последнего четвертого дива, и будет иметь прозрачный фон в итоге получиться такой эффект, ну и последний четвертый див в котором будет располагаться весь нужный контент. Естественно все дивы имеют разные ид:</p>
<pre class="prettyprint">
&lt;div id="gogo_wrap"&gt;
&lt;div id="gogo_box" class="gogobox" style="top:125px; width:522px;"&gt;
		&lt;div id="gogo_contant"&gt;
			&lt;div id="gogo_last_cont"&gt;
				&lt;h2 id="gogo_head"&gt;Загаовок лайтбокса&lt;/h2&gt;
				&lt;div id="gogo_must_change"&gt;
				Здесь будет контент
&lt;/div&gt;
&lt;div id="gogo_close_panel"&gt;
&lt;button name="close-gogo_box" id="close-gogo_box" onclick="close_gogo_box();"&gt;Закрыть&lt;/button&gt;
&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Стили для дива с ид gogo_box вытащили наружу для того чтобы в дальнейшем нам было удобней управлять шириной и расположением лайтбокса через javascript, ну это все потом, а сейчас приступим к CSS. Ну для первых двух дивов которые мы как я говорил создали для позиционирования указываем следующие стили:</p>
<pre class="prettyprint">
#gogo_wrap{
	height:0;
	left:0;
	overflow:visible;
	position:absolute;
	top:0;
	width:100%;
	z-index:101;
}
#gogo_box{
	height:0;
	margin:auto;
	overflow:visible;
	position:relative;
}
</pre>
<p>Далее стилизуем следующий див, а это див с id gogo_contant он должен иметь скругленные углы и прозрачный серый фон:</p>
<pre class="prettyprint">
#gogo_contant{
	-moz-border-radius:8px;
	-webkit-border-radius:8px;
	-border-radius:8px;
	background:none repeat scroll 0 0 rgba(163, 163, 163, 0.7);
	padding:10px;
}
</pre>
<p>Как видно мы указали 8 пиксельное скругление углов, и сделали прозрачный фон, а padding нужен для того чтобы в дальнейшем он был больше следующего дива и получился эффект прозрачных границ в нашем случае границы будут шириной 10px. Далее преходим к стилизации остальных элементов нашего lightbox&#8217;а. Самое главное нужно указать для следующего дива непрозрачный, белый фон:</p>
<pre class="prettyprint">
#gogo_last_cont{
	background:#fff;
}
h2#gogo_head{
	background:#829ACE;
	font-size:16px;
	font-weight:normal;
	padding:4px 6px;
	color:#fff;
	border-bottom:1px solid #333;
}
#gogo_close_panel{
	text-align:right;
	height:30px;
	border-top:1px solid #ccc;
	margin-top:4px;
}
button#close-gogo_box{
	border:1px solid #333;
	padding:3px;
	margin:3px 5px 3px 3px;
	background:#4B6EB9;
}
button#close-gogo_box:hover{
	color:#E6E6E6;
	cursor:pointer;
}
</pre>
<p>Вот и все со стилизацией мы закончили, в итоге у нас получилось то что показано снизу на картинке.<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/light-1.jpg" alt="" title="light-1" width="543" height="113" class="alignnone size-full wp-image-705" /></center></p>
<h2>Javascript</h2>
<p>Теперь давайте сделаем так чтобы эта вся штука появлялась по нажатию на что нибудь, допустим кнопку:</p>
<pre class="prettyprint">
&lt;button id="show_gogo_box"&gt;Открыть gogo_box&lt;/button&gt;
</pre>
<p>Теперь давайте сделаем функцию которая будет создавать на нашей странице наш lightbox для этого будем использовать Jquery подключаем его, допустим с гугловсого архива:</p>
<pre class="prettyprint">
&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js" type="text/javascript" language="javascript"&gt;&lt;/script&gt;
</pre>
<p>Вот подключили, начинаем писать функцию сделаем ее чуточку гибкой так сказать, добавим возможность передавать функции заголовок и будущий контент содержащийся в лайтбоксе. Выглядит наша функция вот так:</p>
<pre class="prettyprint">
function create_gogo_box(title,contant){
		$("body").append('&lt;div id="gogo_wrap"&gt;\
			&lt;div id="gogo_box" class="gogobox" style="top:125px; width:522px;"&gt;\
				&lt;div id="gogo_contant"&gt;\
					&lt;div id="gogo_last_cont"&gt;\
						&lt;h2 id="gogo_head"&gt;'+title+'&lt;/h2&gt;\
						&lt;div id="gogo_must_change"&gt;\
						'+contant+'\
						&lt;/div&gt;\
						&lt;div id="gogo_close_panel"&gt;\
							&lt;button name="close-gogo_box" id="close-gogo_box" onclick="close_gogo_box();"&gt;Закрыть&lt;/button&gt;\
						&lt;/div&gt;\
					&lt;/div&gt;\
				&lt;/div&gt;\
			&lt;/div&gt;\
		&lt;/div&gt;\
		&lt;div id="gogo_overly"&gt;&lt;/div&gt;');
	}
</pre>
<p>Далее делаем так чтоб при клике на кнопку которую мы создали до этого, а она была с ид show_gogo_box, вызывалась наша функция:</p>
<pre class="prettyprint">
$('#show_gogo_box').click(function(){

	create_gogo_box('Здесь заголовок','Здесь контэнт')}

	);
</pre>
<p>Вот и все теперь осталось написать функцию для удаления лайтбокса со страницы, называться она должна close_gogo_box так как мы уже прописали ее для нашей кнопки, пишем:</p>
<pre class="prettyprint">
function close_gogo_box(){
	$('#gogo_wrap').remove();
	$('#gogo_overly').remove();
	}
</pre>
<p>Ну а вот так он будет выглядеть с картинкой:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/09/screen2.jpg" alt="" title="screen2" width="541" height="378" class="alignnone size-full wp-image-708" /></center><br />
Вот теперь точно все.</p>
<div class="demo">
<a href="http://prootime.ru/demos/gogo-box" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://prootime.ru/demos/gogo-box/gogo-box.rar" id="demo">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/facebook-like-lightbox/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Простой jQquery слайд шоу без плагина</title>
		<link>http://prootime.ru/slideshow-jquery</link>
		<comments>http://prootime.ru/slideshow-jquery#comments</comments>
		<pubDate>Mon, 19 Apr 2010 17:07:27 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=319</guid>
		<description><![CDATA[Сейчас попробуем написать простой слайд шоу из трех картинок, без кнопок назад и вперед, они просто будут сменять друг друга с заданным интервалом. Вот собственно демо: ДЕМО ВЕРСИЯпосмотреть в дейсвииСКАЧАТЬскачать на компьютер Посмотрели&#8230;что у нас получится) теперь приступим, создаем html документ с вот таким вот содержимым body: &#60;div class="slidshow"&#62; &#60;img src="images/first.jpg"&#62; &#60;img src="images/second.jpg"&#62; &#60;img src="images/third.jpeg"&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас попробуем написать простой слайд шоу из трех картинок, без кнопок назад и вперед, они просто будут сменять друг друга с заданным интервалом<span id="more-319"></span>. Вот собственно демо:</p>
<div class="demo">
<a href="http://prootime.ru/demos/slidshow" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в дейсвии</small></a><a href="http://prootime.ru/demos/slidshow/slidshow.rar" id="demo" target="blank">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
<p>Посмотрели&#8230;что у нас получится) теперь приступим, создаем html документ с вот таким вот содержимым body:</p>
<pre class="prettyprint">
&lt;div class="slidshow"&gt;
  &lt;img src="images/first.jpg"&gt;
  &lt;img src="images/second.jpg"&gt;
  &lt;img src="images/third.jpeg"&gt;
&lt;/div&gt;
</pre>
<p>Ну здесь должно быть все понятно, див с тремя картинками находящимися от текущего html файла на расстоянии одной директории images, далее пишем css код:</p>
<pre class="prettyprint">
.slidshow {
	position:relative;
}
.slidshow img {
	position:absolute;
	left:0;
	top:0;
	width:500px;
	height:375px;
}
</pre>
<p>Здесь мы ставим для картинок абсолютное позиционирование и ставим их левый верхний угол, ну и определяем для них одну ширину и высоту что бы при смене они не скакали ). Далее пишем Javascript код точнее jQuery )) но перед этим должны подключить его, лично я его всегда подключаю с гугла&#8230; примерно вот так вот:</p>
<pre class="prettyprint">
&lt;script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"&gt;&lt;/script&gt;
</pre>
<p>А теперь пишем такой вот код:</p>
<pre class="prettyprint">
$(function(){
    $('.slidshow img:gt(0)').hide();//скрываем все картинки кроме 1го
      setInterval(function(){
      $('.slidshow :first-child').fadeOut()//анимированно скрываем 1ую картинку
         .next('img').fadeIn()//и показываем вторую
         .end().appendTo('.slidshow');},2000);//повторяем это каждые 2000 мс
});
</pre>
<p>Вот и все&#8230;</p>
<div class="demo">
<a href="http://prootime.ru/demos/slidshow" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в действии</small></a><a href="http://prootime.ru/demos/slidshow/slidshow.rar" id="demo" target="blank">СКАЧАТЬ<br /><small>скачать на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/slideshow-jquery/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Создание анимированных открыток с помощью jQuery</title>
		<link>http://prootime.ru/jquery-animation</link>
		<comments>http://prootime.ru/jquery-animation#comments</comments>
		<pubDate>Sun, 11 Apr 2010 20:41:39 +0000</pubDate>
		<dc:creator>dzantiev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>

		<guid isPermaLink="false">http://prootime.ru/?p=274</guid>
		<description><![CDATA[Попробуем создать красивую непрерывную анимацию как в Flash, но без его использования. Которую можно будет использовать для шапки сайта или какой нибудь открытки не знаю зависит от фантазии. В этом уроке мы рассмотрим использование непрерывной анимации которая может использоваться в любом месте. А получим непрерывную анимацию функцией setTimeout(), а также будем использовать jQuery плагин под [...]]]></description>
			<content:encoded><![CDATA[<p>Попробуем создать красивую непрерывную анимацию как в Flash, но без его использования. Которую можно будет использовать для шапки сайта или какой нибудь открытки не знаю зависит от фантазии. В этом уроке мы рассмотрим использование непрерывной анимации которая может использоваться в любом месте. А получим непрерывную анимацию функцией setTimeout(), а также будем использовать jQuery плагин под названием Easing plugin<span id="more-274"></span>, ну об этом в свое время пока можете посмотреть демо:</p>
<div class="demo">
<a href="http://prootime.ru/demos/otcr" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в дейсвии</small></a><a href="http://prootime.ru/demos/otcr/otcr.rar" id="demo" target="blank">СКАЧАТЬ<br /><small>скачть на компьютер</small></a>
</div>
<p class="hight1">HTML</p>
<p>Наша Html разметка будет простенькой, создаем холст, то есть область в которой будут располагаться наши анимированные элементы иметь наш холст будет id=&#8221;content&#8221; располагаться он будет в div&#8217;e с id=&#8221;wrapper&#8221; для позиционирования, а внутри нашего так называемого холста будут располагаться картинки которые благодаря javascript&#8217;у будут двигаться или еще че нибудь. Вот код</p>
<pre class="prettyprint">
&lt;div id="wrapper"&gt;
   &lt;div id="content"&gt;
      &lt;div id="sun"&gt;&lt;img src="images/sun.gif"/&gt;&lt;/div&gt;
      &lt;div id="cloud1"&gt;&lt;img src="images/cloud1.png"&gt;&lt;/div&gt;
      &lt;div id="cloud2"&gt;&lt;img src="images/cloud2.png"&gt;&lt;/div&gt;
      &lt;div id="cloud3"&gt;&lt;img src="images/cloud3.png"&gt;&lt;/div&gt;
      &lt;div id="raft"&gt;&lt;img src="images/raft.png"&gt;&lt;/div&gt;
      &lt;div id="raftripple"&gt;&lt;img src="images/raftripple.gif"&gt;&lt;/div&gt;
      &lt;div id="greetings"&gt;&lt;img src="images/greetings.png"&gt;&lt;/div&gt;
      &lt;div id="stamp"&gt;&lt;img src="images/stamp.png"&gt;&lt;/div&gt;
   &lt;/div&gt;
&lt;/div&gt;
</pre>
<p class="hight1">CSS</p>
<p>Следующим шагом будет написание CSS кода, расположить наши картинки, указать размеры и т.д. Вот код, читаем комментарии:</p>
<pre class="prettyprint">
*{ margin:0; padding:0; }
body { text-align: center; background: #111; }

/* Ширина должна совпадать с дочерним элементом #content */
#wrapper{ margin:0px auto; width:700px; }

/* На холст обязательно должен иметь следующие атрибуты position:relative/overflow:hidden */
#content{ position:relative; width:700px; height:300px; top:30px; overflow:hidden; border:5px solid #f5f5f5; background: url('images/scene_bg.jpg'); }
    /* распологаем наше солнце в нужном месте */
	#sun{ position:absolute; top:10px; left:30px; }

	/*отрицательные значения указываем для скрытия облаков, для последующего их выплывания */
	/* облака разбиты по слоям благодаря z-index чем он больше тем выше он будет находится */
	#cloud1{ position:absolute; top:60px; left: -150px; z-index:5; }
	#cloud2{ position:absolute; top:40px; left: -250px; z-index:4; }
	#cloud3{ position:absolute; top:25px; left: -100px; z-index:3; }

	#raft{ position:absolute; top:220px; left: 312px; z-index:20; }
	#raftripple{ position:absolute; top:220px; left: 309px; z-index:19; }

	/* наш текст #greeting скорее это не текст а изображение с текстом, имеют похожие на облака стили... */
	#greetings{ position:absolute; top:-51px; left: 200px; z-index:21; }
	#stamp{ position:absolute; top:5px; left: 801px; z-index: 21; }
</pre>
<p>После проделанных шагов у вас должно получится что то вроде этого:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/04/css.jpg" alt="css" title="css" width="600" height="257" class="alignnone size-full wp-image-281" /></center></p>
<p class="hight1">Подготавливаем jQuery</p>
<p>Добавляем в наш header следующий код:</p>
<pre class="prettyprint">
&lt;script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"&gt;&lt;/script&gt;
&lt;script src="jquery.easing.1.3.js" type="text/javascript"&gt;&lt;/script&gt;
</pre>
<p>Как вы заметили сам jQuery мы подключаем с самого сайта jQuery &#8220;http://jqueryjs.googlecode.com/files/jquery-1.3.2.js&#8221;, далее вам нужно скачать <a href="http://gsgd.co.uk/sandbox/jquery/easing/">Easing Plugin</a> и расположить его в той же директории что и ваша страница.</p>
<p class="hight1">jQuery</p>
<p>Далее собственно начинаем писать сам javascript код для начала пишем следующий код который по истечению 300мс будет заново запускать определенную функцию в нашем случае это функция animation() которую мы затем создадим:</p>
<pre class="prettyprint">
$(document).ready(function() {
	setTimeout("animation()",300);
});
</pre>
<p>Код означает то что после загрузки всех DOM элементов запуститься функция animation() и будет повторятся бесконечно каждые 300мс. Далее давайте напишем саму функцию animation(), выглядит она вот так:</p>
<pre class="prettyprint">
function animation(){
	sun_raft();
	cloud1();
	cloud2();
	cloud3();
	$("#greetings").animate({top: '125px' }, {queue:false, duration:600, easing:'easeOutBounce'});
	$("#stamp").animate({left: '595px' }, {queue:false, duration:1200, easing:'easeOutBounce'});
}
</pre>
<p>Функция запускает 4 функции sun_raft(), cloud1(), cloud2(), cloud3() затем применяет анимацию к двум элементам #greetings и #stamp , где применяется наш подключенный плагин Easing plugin он увеличивает количество возможных вариантов атрибута easing он отвечает за равномерность анимации в нашем случае наши штамп и текст будут как бы подпрыгивать. Далее пишем 4 функции запускающиеся в функции animation() это sun_raft() для солнца и плота, cloud1() cloud2() cloud3() &#8211; анимации для трех облаков. Пишем:</p>
<pre class="prettyprint">
		function sun_raft(){//анимации для солнца и плота
			$("#sun").animate({opacity:"0.7"},1000).animate({opacity:"1"},1000);//солнце будет менять прозрачность
			$("#raft").animate({top:"-=5px"},1000).animate({top:"+=5px"}, 1000);//плот будет двигаться вверх вниз
			$("#raftripple").animate({opacity:".1"},1000).animate({opacity:"1"},1000);//волны также будут менять прозрачность
			setTimeout("sun_raft()",2000);//функция будет запускаться каждые 200мс
		}
		function cloud1(){//функция для первого облака
			$("#cloud1").animate({left:"+=850px"},10000).animate({left:"-150px"}, 0);//будет двигаться от -150 лева до 850
			setTimeout("cloud1()",10000);//будет запускаться каждые 10000мс
		}
		function cloud2(){//аналогично для второго облака
			$("#cloud2").animate({left:"+=950px"},9000).animate({left:"-250px"}, 0)
			setTimeout("cloud2()",9000);
		}
		function cloud3(){//и для третьего
			$("#cloud3").animate({left:"+=800px"},6000).animate({left:"-100px"}, 0)
			setTimeout("cloud3()",6000);
		}
</pre>
<p>На рисунке показыны движения облаков:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/04/clouds.jpg" alt="clouds" title="clouds" width="600" height="112" class="alignnone size-full wp-image-283" /></center><br />
А на этом движение плота:<br />
<center><img src="http://prootime.ru/wp-content/uploads/2010/04/raft.jpg" alt="raft" title="raft" width="600" height="114" class="alignnone size-full wp-image-284" /></center><br />
Думаю все смотрим демо и комментируем:</p>
<div class="demo">
<a href="http://prootime.ru/demos/otcr" id="demo" target="blank">ДЕМО ВЕРСИЯ<br /><small>посмотреть в дейсвии</small></a><a href="http://prootime.ru/demos/otcr/otcr.rar" id="demo" target="blank">СКАЧАТЬ<br /><small>скачть на компьютер</small></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://prootime.ru/jquery-animation/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

