<?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>Статьи о JavaScript &#8212; Nikita Spivak</title>
	<atom:link href="https://nikita-sp.com.ua/blog/o-sozdanii-sajtov/statji-o-javascript/feed" rel="self" type="application/rss+xml" />
	<link>https://nikita-sp.com.ua</link>
	<description>web developer&#039;s portfolio</description>
	<lastBuildDate>Tue, 26 Jan 2016 15:37:04 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Локализация атрибутов при помощи l20n</title>
		<link>https://nikita-sp.com.ua/2015/06/lokalizatsiya-atributov-pri-pomoshhi-l20n.html</link>
					<comments>https://nikita-sp.com.ua/2015/06/lokalizatsiya-atributov-pri-pomoshhi-l20n.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Tue, 23 Jun 2015 06:30:11 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[модули и плагины]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2379</guid>

					<description><![CDATA[В прошлый раз мы познакомились с фреймворком l20n, который позволяет добавить на ваш сайт локализацию при помощи JavaScript. Однако, в некоторых случаях, как показал опыт, необходима локализация не только текста внутри HTML-элементов (тегов), но и их атрибутов. Дело в том что при локализации сайта, в некоторых случаях, приходится использовать, например, разные классы стилей оформления для [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В прошлый раз мы <a href="http://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html" target="_blank" data-wpel-link="internal">познакомились с фреймворком l20n</a>, который позволяет <a href="http://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html" target="_blank" data-wpel-link="internal">добавить на ваш сайт локализацию при помощи JavaScript</a>. Однако, в некоторых случаях, как показал опыт, необходима локализация не только текста внутри HTML-элементов (тегов), но и их атрибутов.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-adding-tags-and-attributes.jpg" rel="lightbox[2379]" data-wpel-link="internal"><img fetchpriority="high" decoding="async" width="600" height="280" itemprop="image" class="aligncenter size-medium wp-image-2451" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-adding-tags-and-attributes-600x280.jpg" alt="Добавление тегов и атрибутов в L20N" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-adding-tags-and-attributes-600x280.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-adding-tags-and-attributes-150x70.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-adding-tags-and-attributes.jpg 726w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Дело в том что при локализации сайта, в некоторых случаях, приходится использовать, например, разные классы стилей оформления для разных языков сайта. Ярким примером такой необходимости является использование изображений, содержащих текст на разных языках, в качестве фона элемента.<span id="more-2379"></span></p>
<p>Итак, для решения проблемы локализации любого атрибута с помощью JavaScript фреймворка l20n, нам необходимо открыть сам файл скрипта и найти следующие строки:</p>
<pre class="brush: jscript; title: Код:; notranslate">
z = {
    elements: [&quot;a&quot;, &quot;em&quot;, &quot;strong&quot;, &quot;small&quot;, &quot;s&quot;, &quot;cite&quot;, &quot;q&quot;, &quot;dfn&quot;, &quot;abbr&quot;, &quot;data&quot;, &quot;time&quot;, &quot;code&quot;, &quot;var&quot;, &quot;samp&quot;, &quot;kbd&quot;, &quot;sub&quot;, &quot;sup&quot;, &quot;i&quot;, &quot;b&quot;, &quot;u&quot;, &quot;mark&quot;, &quot;ruby&quot;, &quot;rt&quot;, &quot;rp&quot;, &quot;bdi&quot;, &quot;bdo&quot;, &quot;span&quot;, &quot;br&quot;, &quot;wbr&quot;],
    attributes: {
        global: [&quot;title&quot;, &quot;aria-label&quot;],
        a: [&quot;download&quot;],
        area: [&quot;download&quot;, &quot;alt&quot;],
        input: [&quot;alt&quot;, &quot;placeholder&quot;],
        menuitem: [&quot;label&quot;],
        menu: [&quot;label&quot;],
        optgroup: [&quot;label&quot;],
        option: [&quot;label&quot;],
        track: [&quot;label&quot;],
        img: [&quot;alt&quot;],
        textarea: [&quot;placeholder&quot;],
        th: [&quot;abbr&quot;]
    }
}
</pre>
<p><span style="color: #ff0000;">Обратите внимание:</span> в данной статье приводится не минифицированный кусок кода, поэтому при поиске по файлу лучше пользоваться просто тегами или атрибутами. Например: &#171;placeholder&#187;, &#171;small&#187; и т.д.</p>
<p>В данном объекте (<em>z</em>) определяются все возможные элементы для локализации их скриптом, а также доступные для обработки атрибуты. Если вам необходимо добавить элемент для локализации, которого нет в списке, достаточно добавить его в массив <em>elements</em> объекта <em>z</em>. Пример добавления элемента для локализации:</p>
<pre class="brush: jscript; title: Код:; notranslate">
z = {
    elements: [&quot;a&quot;, &quot;em&quot;, &quot;strong&quot;, &quot;small&quot;, &quot;s&quot;, &quot;cite&quot;, &quot;q&quot;, &quot;dfn&quot;, &quot;abbr&quot;, &quot;data&quot;, &quot;time&quot;, &quot;code&quot;, &quot;var&quot;, &quot;samp&quot;, &quot;kbd&quot;, &quot;sub&quot;, &quot;sup&quot;, &quot;i&quot;, &quot;b&quot;, &quot;u&quot;, &quot;mark&quot;, &quot;ruby&quot;, &quot;rt&quot;, &quot;rp&quot;, &quot;bdi&quot;, &quot;bdo&quot;, &quot;span&quot;, &quot;br&quot;, &quot;wbr&quot;, &quot;YOUR_ELEMENT&quot;],
    attributes: {
        global: [&quot;title&quot;, &quot;aria-label&quot;],
        a: [&quot;download&quot;],
        area: [&quot;download&quot;, &quot;alt&quot;],
        input: [&quot;alt&quot;, &quot;placeholder&quot;],
        menuitem: [&quot;label&quot;],
        menu: [&quot;label&quot;],
        optgroup: [&quot;label&quot;],
        option: [&quot;label&quot;],
        track: [&quot;label&quot;],
        img: [&quot;alt&quot;],
        textarea: [&quot;placeholder&quot;],
        th: [&quot;abbr&quot;]
    }
}
</pre>
<p>Добавление атрибута, если его необходимо локализовать для всех элементов, производится в массив <em>global</em> объекта <em>attributes</em> объекта <em>z</em>, если же вы хотите локализовать атрибут только в определенных элементах, то можете добавить новый массив в attributes, именем которого будет имя тега для локализации, а значением выступает массив имен атрибутов для локализации.</p>
<p>Пример добавления общего атрибута для локализации (атрибут будет локализован для всех элементов страницы):</p>
<pre class="brush: jscript; title: Код:; notranslate">
z = {
    elements: [&quot;a&quot;, &quot;em&quot;, &quot;strong&quot;, &quot;small&quot;, &quot;s&quot;, &quot;cite&quot;, &quot;q&quot;, &quot;dfn&quot;, &quot;abbr&quot;, &quot;data&quot;, &quot;time&quot;, &quot;code&quot;, &quot;var&quot;, &quot;samp&quot;, &quot;kbd&quot;, &quot;sub&quot;, &quot;sup&quot;, &quot;i&quot;, &quot;b&quot;, &quot;u&quot;, &quot;mark&quot;, &quot;ruby&quot;, &quot;rt&quot;, &quot;rp&quot;, &quot;bdi&quot;, &quot;bdo&quot;, &quot;span&quot;, &quot;br&quot;, &quot;wbr&quot;],
    attributes: {
        global: [&quot;title&quot;, &quot;aria-label&quot;, &quot;class&quot;],
        a: [&quot;download&quot;],
        area: [&quot;download&quot;, &quot;alt&quot;],
        input: [&quot;alt&quot;, &quot;placeholder&quot;],
        menuitem: [&quot;label&quot;],
        menu: [&quot;label&quot;],
        optgroup: [&quot;label&quot;],
        option: [&quot;label&quot;],
        track: [&quot;label&quot;],
        img: [&quot;alt&quot;],
        textarea: [&quot;placeholder&quot;],
        th: [&quot;abbr&quot;]
    }
}
</pre>
<p>Пример добавления локализации атрибута для определенного элемента (атрибут будет локализован только для указанного элемента):</p>
<pre class="brush: jscript; title: Код:; notranslate">
z = {
    elements: [&quot;a&quot;, &quot;em&quot;, &quot;strong&quot;, &quot;small&quot;, &quot;s&quot;, &quot;cite&quot;, &quot;q&quot;, &quot;dfn&quot;, &quot;abbr&quot;, &quot;data&quot;, &quot;time&quot;, &quot;code&quot;, &quot;var&quot;, &quot;samp&quot;, &quot;kbd&quot;, &quot;sub&quot;, &quot;sup&quot;, &quot;i&quot;, &quot;b&quot;, &quot;u&quot;, &quot;mark&quot;, &quot;ruby&quot;, &quot;rt&quot;, &quot;rp&quot;, &quot;bdi&quot;, &quot;bdo&quot;, &quot;span&quot;, &quot;br&quot;, &quot;wbr&quot;],
    attributes: {
        global: [&quot;title&quot;, &quot;aria-label&quot;],
        a: [&quot;download&quot;],
        area: [&quot;download&quot;, &quot;alt&quot;],
        input: [&quot;alt&quot;, &quot;placeholder&quot;],
        menuitem: [&quot;label&quot;],
        menu: [&quot;label&quot;],
        optgroup: [&quot;label&quot;],
        option: [&quot;label&quot;],
        track: [&quot;label&quot;],
        img: [&quot;alt&quot;],
        textarea: [&quot;placeholder&quot;],
        th: [&quot;abbr&quot;],
        your_element: [&quot;param1&quot;, &quot;param2&quot;, &quot;etc&quot;]
    }
}
</pre>
<p>Вот таким простым образом вы можете модифицировать <a href="http://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html" target="_blank" data-wpel-link="internal">фреймворк l20n для локализации сайта на JavaScript</a>. Данное решение было найдено в достаточно поспешном темпе, и если вы знакомы более красивым и лаконичным решением (без редактирования файла фрейморка), буду рад если поделитесь им в комментариях.</p>
<p><strong>UPD:</strong> после того как мы добавили необходимые атрибуты в список разрешенных, их необходимо локализовать в файле локализации. Локализация атрибутов производится следующим образом в файле локализации:</p>
<pre class="brush: jscript; title: Код:; notranslate">
&lt;testimg alt:&quot;Тестовый альт&quot; title:&quot;Тестовый заголовок&quot;&gt;
&lt;testp &quot;Текст для параграфа&quot; class:&quot;Локализованный класс&quot;&gt;
</pre>
<p>А в файле html будет выглядеть так:</p>
<pre class="brush: xml; title: Код:; notranslate">
&lt;img src=&quot;image.png&quot; alt=&quot;Test alt&quot; title=&quot;Test title&quot; data-l10n-id=&quot;testimg&quot;&gt;
&lt;p class=&quot;localized class&quot; data-l10n-id=&quot;testp&gt;Text for the paragraph&lt;/p&gt;
</pre>
<p>Спасибо пользователям, которые указали на недостаток в статье по локализации атрибутов. По какой-то причине, на момент написания статьи, я счел это очевидным. <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/06/lokalizatsiya-atributov-pri-pomoshhi-l20n.html/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Локализация сайта на JavaScript l20n</title>
		<link>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html</link>
					<comments>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sat, 13 Jun 2015 17:40:15 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2377</guid>

					<description><![CDATA[В первую очередь, сайт является лицом компании, публичного деятеля или любой другой личности. Целью создания сайта является расширение аудитории покупателей или пользователей услуги, представляемой на сайте, поэтому представление информации на сайте на разных языках является неотъемлимой частью для международного бизнеса. Как правило, сайты с несколькими яыками &#8212; это крупные порталы или небольшие сайты-визитки, направленные на представление [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В первую очередь, сайт является лицом компании, публичного деятеля или любой другой личности. Целью создания сайта является расширение аудитории покупателей или пользователей услуги, представляемой на сайте, поэтому представление информации на сайте на разных языках является неотъемлимой частью для международного бизнеса.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350.jpg" rel="lightbox[2377]" data-wpel-link="internal"><img decoding="async" width="600" height="280" itemprop="image" class="aligncenter size-medium wp-image-2433" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-600x280.jpg" alt="Локализация сайта при помощи l20n" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-600x280.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-150x70.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350.jpg 726w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Как правило, сайты с несколькими яыками &#8212; это крупные порталы или небольшие сайты-визитки, направленные на представление информации пользователям нескольких стран. Создание нескольких языковых версий для сайтов местного масштаба (городского, областного, масштаба страны) является абсолютно не обоснованной затратой средств и времени.<span id="more-2377"></span></p>
<p>Сегодня мы рассмотрим один из вариантов создания мультиязычного сайта при помощи JavaScript библиотеки l20n. Данная библиотека позволяет создать мультиязычный сайт используя всего несколько файлов для локализации и собственно саму библиотеку.</p>
<h2>Как локализовать сайт с помощью JavaScript</h2>
<p>Для локлизации сайта с помощью JavaScript можно использовать библиотеку l20n. Структура файлов данного фреймворка достаточно проста: файл, который необходимо локализовать с подключенным файлом скрипта l20n.js и папка с локализациями. Данный фреймворк от компании Mozilla распространяется бесплатно, и вы можете с ним ознакомится по ссылке <a href="http://l20n.org/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="ext-link wpel-icon-right">http://l20n.org/<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.</p>
<p>Бибилиотека позволяет не только локализировать ваш сайт, но и сама определяет, какой язык показать пользователю, на основании его настроек на устройстве, с которого произведено посещение.</p>
<p>Интегрировать скрипт в вашу страничку достаточно просто:</p>
<ol>
<li>скачайте библиотеку по ссылке выше;</li>
<li>подключите его в файле, который необходимо локализовать;</li>
<li>разметьте соответствующим образом файл, который необходимо локализовать;</li>
<li>создайте файлы локализации.</li>
</ol>
<p>Вы можете <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/www.zip" data-wpel-link="internal">скачать простой пример локализации</a> странички при помощи фреймворка l20n от Mozilla для трех языков: английский, русский, французский. Данный пример покажет вам наглядно как работает данная библиотека. Внимание: вам необходимо запускать демо на сервере/локальном сервере &#8212; при обычном открытии файла index.html браузер выдаст ошибку: <span style="color: #ff0000;"><em>XMLHttpRequest cannot load file:///<strong>YOUR_PATH</strong>/www/locales/browser.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.</em></span></p>
<p>Данный фреймворк очень удобный для создания небольших мультиязычных сайтов, т.к. реализация мультиязычности для крупных проектов зачастую реализуется с помощью PHP, т.к. локализация на JavaScript имеет ряд определенных положительных и негативных характеристик.</p>
<h2>Положительные и негативные стороны локализации JavaScript</h2>
<p>Одним из преимуществ такой локализации является полное ограждение разработчика от проблем перевода, а также относительно быстрая интеграция в проект &#8212; достаточно лишь создать необходимый файл локализации и прописать места где необходимо использовать подстановку строк из локализационного файла.</p>
<p>Однако, присутствуют и негативные стороны использования JavaScript как средства для локализации вашего сайта, такие как:</p>
<ol>
<li>По умолчанию, разработчики l20n предлагают оставлять теги для подстановки локализованных строк пустыми, что чревато понижением в поисковой выдаче, т.к. робот не видит текста на вашем сайте, т.к. поисковый робот парсит вашу страницу без JavaScript! Этот огромный недостаток можно с легкостью исправить, просто заполнив теги предпочтительным, преобладающим языком на вашем сайте, как это сделано в примере.</li>
<li>Поисковая система не сможет проиндексировать разные версии сайта, и будет видеть только одну версию &#8212; версию, которую вы указали в предыдущем пункте. Если реализовать локализацию на php, то можно создать для поисковой системы отдельные каталоги с разными локализациями.</li>
<li>На мой взгляд такая реализация мультиязычности не подойдет для больших порталов и крупных сайтов, т.к. она достаточно проста и не функциональна. Необходимо будет прописывать текст для каждой странички отдельно, т.е. такая конструкция позволительна исключительно для сайтов, состоящих из нескольких страниц.</li>
</ol>
<p>Несмотря на все недостатки данного фреймворка, я тем не менее рекомендую с ним ознакомиться, и использовать в небольших проектах, например лендинг пейдж, промо и т.п. страницах.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Selection Slider &#8212; jQuery плагин слайдера с секциями для выбора</title>
		<link>https://nikita-sp.com.ua/2015/05/selection-slider-jquery-plugin-sections-to-select-items.html</link>
					<comments>https://nikita-sp.com.ua/2015/05/selection-slider-jquery-plugin-sections-to-select-items.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sat, 09 May 2015 15:50:25 +0000</pubDate>
				<category><![CDATA[Плагины и модули]]></category>
		<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2402</guid>

					<description><![CDATA[Несмотря на обилие плагинов слайдшоу и слайдеров написанных под популярный фреймворк jQuery, столкнувшись с задачей, где необходимо было создать слайдшоу, состоящее из нескольких частей, я не смог найти ничего стоящего. Одним из вариантов решения задачи является использование нескольких объектов одного слайдшоу в одном блоке, но данная конструкция не всегда может быть надежной и не везде [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Несмотря на обилие плагинов слайдшоу и слайдеров написанных под популярный фреймворк jQuery, столкнувшись с задачей, где необходимо было создать слайдшоу, состоящее из нескольких частей, я не смог найти ничего стоящего. Одним из вариантов решения задачи является использование нескольких объектов одного слайдшоу в одном блоке, но данная конструкция не всегда может быть надежной и не везде ее можно применить.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider.png" rel="lightbox[2402]" data-wpel-link="internal"><img decoding="async" width="800" height="400" itemprop="image" class="aligncenter size-full wp-image-2404" src="http://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider.png" alt="SelectionSlider - jQuery plugin для подбора вариантов продукта" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider.png 800w, https://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider-600x300.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider-150x75.png 150w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>В ввиду данных обстоятельств, хочу представить вам свеженький плагин для jQuery &#8212; Selection Slider, который позволит вам создать слайдшоу, состоящее из нескольких частей и настроить каждую часть отдельно!</p>
<p><span id="more-2402"></span></p>
<p>Слайдшоу обладает стандартным набором входных параметров:</p>
<ul>
<li>время задержки;</li>
<li>время анимации;</li>
<li>автопроигрывание;</li>
<li>пауза при наведении на селектор.</li>
</ul>
<p>Основной особенностью слайдшоу является безлимитное количество частей (селекторов), которые вы можете создать в рамках одного слайдера. Каждый селектор может быть настроен отдельно, используя параметры &#171;data-название_опции&#187;.</p>
<p>Это первый мой плагин под jQuery, написанный с нуля, в связи с этим слайдшоу достаточно простое, однако обладает гибкими настройками, что позволяет настроить его под ваши нужды. На <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider/" target="_blank" data-wpel-link="internal">демо страничке</a> я постарался показать все возможные варианты настройки данного слайдшоу.</p>
<p>Если у вас есть предложения и пожелания по улучшению данного плагина &#8212; пишите в комментариях, или воспользуйтесь формой обратной связи в разделе &#171;Контакты&#187;.</p>
<p>Надеюсь данный плагин &#8212; это то что вы искали и не забывайте ставить лайки, делиться в соц. сетях, писать комментарии &#8212; это очень важно для меня. Спасибо <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Посмотреть jQuery плагин Selection Slider</strong>: <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider/" target="_blank" data-wpel-link="internal">Demo livepage</a></p>
<p><strong>Скачать jQuery плагин Selection Slider</strong>: <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/05/selectionSlider.zip" data-wpel-link="internal">selectionSlider</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/05/selection-slider-jquery-plugin-sections-to-select-items.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Обновление слайдера шириной 100% ShadowSlider на jQuery</title>
		<link>https://nikita-sp.com.ua/2015/02/update-slider-shirinoy-100-shadowslider-na-jquery.html</link>
					<comments>https://nikita-sp.com.ua/2015/02/update-slider-shirinoy-100-shadowslider-na-jquery.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Fri, 13 Feb 2015 17:33:40 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2113</guid>

					<description><![CDATA[Слайдер шириной в 100% достаточно популярная запись моего блога. И мне казалось вот уже около года, что слайдер ShadowSlider, который я перенес с MooTools на jQuery полностью рабочий и законченный продукт, но не тут то было! Один из моих читателей, оказался внимательнее чем все остальные, за что ему отдельная благодарность! И по его просьбе и в благодарность за [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a title="Слайдер во всю ширину: Mootools ShadowSlider и jQuery" href="http://nikita-sp.com.ua/2014/05/slider-vo-vsyu-shirinu-mootools-shadowslider-i-jquery.html" data-wpel-link="internal">Слайдер шириной в 100%</a> достаточно популярная запись моего блога. И мне казалось вот уже около года, что слайдер ShadowSlider, который я перенес с MooTools на jQuery полностью рабочий и законченный продукт, но не тут то было!</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated.jpg" rel="lightbox[2113]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="146" itemprop="image" class="aligncenter wp-image-2115 size-medium" src="http://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated-600x146.jpg" alt="ShadowSlider для jQuery 1.1" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated-600x146.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated-960x233.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated-150x36.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/02/slideshow_updated.jpg 1920w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Один из моих читателей, оказался <a href="http://nikita-sp.com.ua/2014/05/slider-vo-vsyu-shirinu-mootools-shadowslider-i-jquery.html#hcm=1423826756647049" target="_blank" data-wpel-link="internal">внимательнее чем все остальные</a>, за что ему отдельная благодарность! И по его просьбе и в благодарность за внимательность, я представляю вам плагин ShadowSlider адаптированный под jQuery версии 1.1.<span id="more-2113"></span></p>
<p>Пункты навигации, которые раньше не были особо востребованы оказались не докрученными, т.к. для пользования слайдером обычно использовались стрелки навигации (вперед/назад).</p>
<p>В новой же версии я устранил данную ошибку, и теперь это полнофункциональная простая карусель во всю ширину вашего сайта, с кнопками навигации, а также пагинацией! <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/02/update-jquery-slideshow/" target="_blank" data-wpel-link="internal">ДЕМО</a></p>
<p>Вам остается только оформить карусель как вам хочется и вуаля! Если у вас есть пожелания или предложения по улучшению данного плагина, то вы можете написать об этом в комментариях! Не забывайте ставить лайк!</p>
<p><strong>Скачать ShadowSlider for jQuery</strong>: <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/02/jquery-slideshow-1.1.zip" data-wpel-link="internal">jquery-slideshow-1.1</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/02/update-slider-shirinoy-100-shadowslider-na-jquery.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Склонение названия величин времени в дате</title>
		<link>https://nikita-sp.com.ua/2014/12/sklonenie-nazvaniya-velichin-v-date.html</link>
					<comments>https://nikita-sp.com.ua/2014/12/sklonenie-nazvaniya-velichin-v-date.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Mon, 01 Dec 2014 15:16:19 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=1769</guid>

					<description><![CDATA[При создании таймеров и счетчиков обратного отсчета часто указывают величину времени после каждого значения. Например 2 дня 12 часов 24 минуты 42 секунды. В английском языке все просто, проверил значение величины, и если оно не равно единице, то добавил &#171;s&#187; &#8212; 2 days 12 hours 01 minute. Но что делать с русским языком? Многие с такой [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>При создании таймеров и счетчиков обратного отсчета часто указывают величину времени после каждого значения. Например <em>2 <span style="text-decoration: underline;">дня</span> 12 <span style="text-decoration: underline;">часов</span> 24 <span style="text-decoration: underline;">минуты</span> 42 <span style="text-decoration: underline;">секунды</span></em>. В английском языке все просто, проверил значение величины, и если оно не равно единице, то добавил &#171;s&#187; &#8212; 2 days 12 hours 01 minute. Но что делать с русским языком?</p>
<p><img loading="lazy" decoding="async" width="600" height="370" itemprop="image" src="http://nikita-sp.com.ua/wp-content/uploads/2014/12/preview-600x370.jpg" alt="Склонение названий секций в формате даты" class="aligncenter size-medium wp-image-1775" srcset="https://nikita-sp.com.ua/wp-content/uploads/2014/12/preview-600x370.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2014/12/preview-960x592.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2014/12/preview-150x92.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2014/12/preview.jpg 1404w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p>Многие с такой проблемой часто борятся при помощи &#171;хитрых скобочек&#187;, например <em>2 минут(ы)</em>, но это не профессионально и не красиво, да и строка увеличивается за счет лишних символов.</p>
<p>При разработке сайта с подобным счетчиком я разработал небольшой скрипт, который помогает определить какое же склонение необходимо использовать для того или иного значения.<span id="more-1769"></span></p>
<p>Работа скрипта основывается на значении последней цифры каждого из значений счетчика: т.е. если значение минут 26, то последняя цифра 6. Таким образом выбирается необходимый падеж.</p>
<p>Я приведу исходный код простого таймера обратного отсчета который использовал также в <a title="Модуль отсчета времени до конца акции OpenCart" href="http://nikita-sp.com.ua/2014/11/module-product-contdown-timer-opencart.html" data-wpel-link="internal">модуле отсчета времени до конца акции OpenCart</a> и <a href="http://nikita-sp.com.ua/2014/11/update-module-category-sales-countdown-for-opencart.html" title="Обновление модуля Акции категорий со счетчиком для OpenCart" data-wpel-link="internal">модуле Акции категорий со счетчиком для OpenCart</a>, который вы можете переделать под свои нужды.</p>
<pre class="brush: jscript; title: Код:; notranslate">

function countdown(){
	var names = {days:		{1:&quot;день&quot;, 2:&quot;дня&quot;, 3: &quot;дней&quot;},
				 hours:		{1:&quot;час&quot;, 2: &quot;часа&quot;, 3: &quot;часов&quot;},
				 minutes:	{1:&quot;минута&quot;, 2: &quot;минуты&quot;, 3: &quot;минут&quot;},
				 seconds:	{1:&quot;секунда&quot;, 2: &quot;секунды&quot;, 3: &quot;секунд&quot;},
	};
	var day_name = names['days'][3];
	var hur_name = names['hours'][3];
	var min_name = names['minutes'][3];
	var sec_name = names['seconds'][3];


	var today = new Date();
	var BigDay = new Date(2014, 11, 31, 15, 00, 00);
	var timeLeft = (BigDay.getTime() - today.getTime());

	var e_daysLeft = timeLeft / 86400000;
	var daysLeft = Math.floor(e_daysLeft);

	var slice_day = String(daysLeft).slice(-1);
	if(parseInt(slice_day) == 1 &amp;&amp; (parseInt(daysLeft) &lt; 10 || parseInt(daysLeft) &gt; 20)){
		day_name = names['days'][1];
	}else if((parseInt(slice_day) == 2 || parseInt(slice_day) == 3 || parseInt(slice_day) == 4) &amp;&amp; (parseInt(daysLeft) &lt; 10 || parseInt(daysLeft) &gt; 20)){
		day_name = names['days'][2];
	}else{
		day_name = names['days'][3];
	}

	var e_hrsLeft = (e_daysLeft - daysLeft)*24;
	var hrsLeft = Math.floor(e_hrsLeft);
	if(hrsLeft &lt; 10){
		hrsLeft = '0'+hrsLeft;
	}
	var slice_hours = String(hrsLeft).slice(-1);
	if(parseInt(slice_hours) == 1 &amp;&amp; (parseInt(hrsLeft) &lt; 10 || parseInt(hrsLeft) &gt; 20)){
		hur_name = names['hours'][1];
	}else if((parseInt(slice_hours) == 2 || parseInt(slice_hours) == 3 || parseInt(slice_hours) == 4)  &amp;&amp; (parseInt(hrsLeft) &lt; 10 || parseInt(hrsLeft) &gt; 20)){
		hur_name = names['hours'][2];
	}else{
		hur_name = names['hours'][3];
	}

	var e_minsLeft = (e_hrsLeft - hrsLeft)*60;
	var minsLeft = Math.floor(e_minsLeft);
	if(minsLeft &lt; 10){
		minsLeft = '0'+minsLeft;
	}
	var slice_min = String(minsLeft).slice(-1);
	if(parseInt(slice_min) == 1 &amp;&amp; (parseInt(minsLeft) &lt; 10 || parseInt(minsLeft) &gt; 20)){
		min_name = names['minutes'][1];
	}else if((parseInt(slice_min) == 2 || parseInt(slice_min) == 3 || parseInt(slice_min) == 4) &amp;&amp; (parseInt(minsLeft) &lt; 10 || parseInt(minsLeft) &gt; 20)){
		min_name = names['minutes'][2];
	}else{
		min_name = names['minutes'][3];
	}

	var seksLeft = Math.floor((e_minsLeft - minsLeft)*60);
	if(seksLeft &lt; 10){
		seksLeft = '0'+seksLeft;
	}
	var slice_sec = String(seksLeft).slice(-1);
	if(parseInt(slice_sec) == 1 &amp;&amp; (parseInt(seksLeft) &lt; 10 || parseInt(seksLeft) &gt; 20)){
		sec_name = names['seconds'][1];
	}else if((parseInt(slice_sec) == 2 || parseInt(slice_sec) == 3 || parseInt(slice_sec) == 4) &amp;&amp; (parseInt(seksLeft) &lt; 10 || parseInt(seksLeft) &gt; 20)){
		sec_name = names['seconds'][2];
	}else{
		sec_name = names['seconds'][3];
	}

	if (BigDay.getTime() &gt; today.getTime() ){
		document.getElementById(&quot;countdown&quot;).innerHTML = daysLeft+&quot; &quot;+day_name+&quot; &quot;+hrsLeft+&quot; &quot;+hur_name+&quot; &quot;+minsLeft+&quot; &quot;+min_name+&quot; &quot;+seksLeft+&quot; &quot;+sec_name;
	}
}

</pre>
<p>Как видите для каждой позиции формата часов определяется последняя цифра и устанавливается соответствующий падеж. В случае если последняя цифра равна единице &#8212; минута, если 2, 3, 4 &#8212; минуты, 5-0 &#8212; минут. При этом величины от 10 до 20 имеют все значение &#8212; минут.</p>
<p>Данное решение нуждается в доработке в случае если в одной из позиций (одно из значений) таймера будет число, превышающее 100, т.к. необходимо будет брать последние две цифры для выполнения последнего условия с величинами от 10 до 20.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2014/12/sklonenie-nazvaniya-velichin-v-date.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Слайдер во всю ширину: Mootools ShadowSlider и jQuery</title>
		<link>https://nikita-sp.com.ua/2014/05/slider-vo-vsyu-shirinu-mootools-shadowslider-i-jquery.html</link>
					<comments>https://nikita-sp.com.ua/2014/05/slider-vo-vsyu-shirinu-mootools-shadowslider-i-jquery.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Thu, 29 May 2014 23:42:45 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=1214</guid>

					<description><![CDATA[Как часто вы сталкиваетесь с JavaScript библиотеками такими как Mootools и jQuery? Очень полезная штука, не так ли? Но использовать две сразу не удобно, возникают конфликты, не рационально. И случается так, что какой-то плагин, слайдшоу, слайдер или другая фича написана с использованием другой библиотеки. Если вы, к примеру используете Mootools, то плагин под jQuery или [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Как часто вы сталкиваетесь с <strong>JavaScript</strong> библиотеками такими как <strong>Mootools</strong> и <strong>jQuery</strong>? Очень полезная штука, не так ли? Но использовать две сразу не удобно, возникают конфликты, не рационально. И случается так, что какой-то <strong>плагин</strong>, <strong>слайдшоу</strong>, <strong>слайдер</strong> или другая фича написана с использованием другой библиотеки. Если вы, к примеру используете Mootools, то <strong>плагин под jQuery</strong> или наоборот.</p>
<p>Вот в очередной раз и я столкнулся с данным вопросом. Необходим был слайдер во всю ширину экрана, который бы прокручивался в цикле. И я нашел такой, но я приверженец jQuery, а слайдер &#8212; <strong>плагин под Mootools</strong>. Что делать? Я попробовал найти ресурсы, которые помогают перевести плагины с одной библиотеки под другую, но в конечном счете понял, что сделать это придется мне самому.</p>
<p><span id="more-1214"></span></p>
<p>Таким образом, представляю вашему вниманию оригинал <strong>слайдера на Mootools</strong> от <em>Constantin Boiangiu</em>, и свою скромную копию, адаптированную под jQuery. <a title="Слайдер во всю ширину страницы jQuery" href="/wp-content/uploads/2014/05/jquery-ShadowSlider/" target="_blank" data-wpel-link="internal">Посмотреть демо слайдера во вся страницу адаптированного под jQuery</a>. Думаю что ссылки следующего и предыдущего слайда и остальные стили вы сами подберете и оформите слайдер по вкусу.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2014/05/jquery-ShadowSlider.rar" data-wpel-link="internal">Скачать jquery-ShadowSlider</a><br />
<a href="http://nikita-sp.com.ua/wp-content/uploads/2014/05/mootools-ShadowSlider.rar" data-wpel-link="internal">Скачать mootools-ShadowSlider</a></p>
<p><span style="color: #ff0000;">ВНИМАНИЕ!</span> слайдер был обновлен, <a title="Обновление слайдера шириной 100% ShadowSlider на jQuery" href="http://nikita-sp.com.ua/2015/02/update-slider-shirinoy-100-shadowslider-na-jquery.html" data-wpel-link="internal">скачать новую версию слайдера для jQuery</a></p>
<p>Пользуйтесь на здоровье и не забывайте ставить &#171;Лайк&#187; и рассказывать друзьям!<br />
Удачного оформления сайта!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2014/05/slider-vo-vsyu-shirinu-mootools-shadowslider-i-jquery.html/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Облако тегов на HTML5 при помощи TagCanvas</title>
		<link>https://nikita-sp.com.ua/2012/05/oblako-tegov-na-html5-pri-pomoschi-tagcanvas.html</link>
					<comments>https://nikita-sp.com.ua/2012/05/oblako-tegov-na-html5-pri-pomoschi-tagcanvas.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Mon, 21 May 2012 19:27:38 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=561</guid>

					<description><![CDATA[Добрый вечер всем, давно не писал статьи в свой блог в связи с отсутствием интересных задач и их неординарных решений. Но сегодня решил отписать по поводу облака тегов, ибо предоставленный пример в предыдущей статье на данное время уже не актуален. Итак, приступим! Для начала мы скачиваем последнюю версию скрипта &#8212; tagcanvas version 1.17 для Internet [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Добрый вечер всем, давно не писал статьи в свой блог в связи с отсутствием интересных задач и их неординарных решений.</p>
<p>Но сегодня решил отписать по поводу облака тегов, ибо предоставленный пример в предыдущей статье на данное время уже не актуален.</p>
<p>Итак, приступим!</p>
<p>Для начала мы скачиваем последнюю версию скрипта &#8212; <a href="http://nikita-sp.com.ua/wp-content/uploads/2012/05/tagcanvas1.17.rar" data-wpel-link="internal">tagcanvas version 1.17</a> для Internet Explorer качаем &#8212; <a href="http://nikita-sp.com.ua/wp-content/uploads/2012/05/excanvas.zip" data-wpel-link="internal">excanvas</a><br />
<span id="more-561"></span><br />
Добавляем в свою страницу код:</p>
<pre class="brush: xml; title: Код:; notranslate">&lt;!--[if lt IE 9]&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;excanvas.js&quot;&gt;&lt;/script&gt;&lt;![endif]--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;tagcanvas.js&quot;&gt;&lt;/script&gt;</pre>
<p>Или (если используете jQuery):</p>
<pre class="brush: xml; title: Код:; notranslate">&lt;!--[if lt IE 9]&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;excanvas.js&quot;&gt;&lt;/script&gt;&lt;![endif]--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.4.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.tagcanvas.min.js&quot;&gt;&lt;/script&gt;</pre>
<p>Добавляете на свою страницу елемент <em>canvas:</em></p>
<pre class="brush: xml; title: Код:; notranslate">&lt;canvas width=&quot;300&quot; height=&quot;300&quot; id=&quot;myCanvas&quot;&gt;
  &lt;p&gt;Все браузеры, которые поддерживают элемент canvas проигнорируют текст внутри этого абзаца&lt;/p&gt;
 &lt;/canvas&gt;</pre>
<p>Если вам не обязательна поддержкаcanvas</p>
<pre class="brush: xml; title: Код:; notranslate">&lt;canvas width=&quot;300&quot; height=&quot;300&quot; id=&quot;myCanvas&quot;&gt;
  &lt;p&gt;Anything in here will be replaced on browsers that support the canvas element&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;http://www.google.com&quot; target=&quot;_blank&quot;&gt;Google&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/fish&quot;&gt;Fish&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/chips&quot;&gt;Chips&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/salt&quot;&gt;Salt&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/vinegar&quot;&gt;Vinegar&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/canvas&gt;</pre>
<p>Если вы все-таки хотите чтобы ваше облако правильно отображалось и в Internet Explorer&#8217;e ниже 9, то поместите свои ссылки ВНЕ блока <em>canvas</em>:</p>
<pre class="brush: xml; title: Код:; notranslate">&lt;canvas width=&quot;300&quot; height=&quot;300&quot; id=&quot;myCanvas&quot;&gt;
  &lt;p&gt;In Internet Explorer versions up to 8, things inside the canvas are inaccessible!&lt;/p&gt;
 &lt;/canvas&gt;

 &lt;div id=&quot;tags&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;http://www.google.com&quot; target=&quot;_blank&quot;&gt;Google&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/fish&quot;&gt;Fish&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/chips&quot;&gt;Chips&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/salt&quot;&gt;Salt&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;/vinegar&quot;&gt;Vinegar&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/div&gt;</pre>
<p>Инициализируйте класс TagCanvas следующим образом подключив его в свою страницу:</p>
<pre class="brush: xml; title: Код:; notranslate">&lt;script type=&quot;text/javascript&quot;&gt;
  window.onload = function() {
    try {
      TagCanvas.Start('myCanvas');
    } catch(e) {
      // something went wrong, hide the canvas container
      document.getElementById('myCanvasContainer').style.display = 'none';
    }
  };
 &lt;/script&gt;</pre>
<p>Если ваши ссылки не в элементе <em>canvas</em>, то инициализируйте его при помощи следующего выражения:</p>
<pre class="brush: xml; title: Код:; notranslate">...
      TagCanvas.Start('myCanvas','tagList');
      ...</pre>
<p>Если вы используете jQuery плагин, то инициализируйте его таким образом:</p>
<pre class="brush: xml; title: Код:; notranslate"> &lt;script type=&quot;text/javascript&quot;&gt;
 $(document).ready(function() {
   if( ! $('#myCanvas').tagcanvas({
     textColour : '#ffffff',
     outlineThickness : 1,
     maxSpeed : 0.03,
     depth : 0.75
   })) {
     // TagCanvas failed to load
     $('#myCanvasContainer').hide();
   }
   // your other jQuery stuff here...
 });
 &lt;/script&gt;</pre>
<p>Вот вроде бы и все! Удачного коддинга!<br />
Оригинал статьи, опции и другая документация по скрипту &#8212; <a href="http://www.goat1000.com/tagcanvas.php" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="ext-link wpel-icon-right">тут<span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2012/05/oblako-tegov-na-html5-pri-pomoschi-tagcanvas.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Интересные Java-scripts</title>
		<link>https://nikita-sp.com.ua/2012/03/interesnyie-java-scripts.html</link>
					<comments>https://nikita-sp.com.ua/2012/03/interesnyie-java-scripts.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Fri, 16 Mar 2012 22:19:55 +0000</pubDate>
				<category><![CDATA[Прочее]]></category>
		<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интересно]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=517</guid>

					<description><![CDATA[Знаю что боян, но решил сделать пометочку у себя в блоге про эти скриптики, мало ли, пригодятся =) Скрипт для редактирования любой страницы Скрипт полета изображений Первый скрипт позволяет &#171;редактировать&#187; любую страницу. Заходим на любой сайт, очищаем адресную строку браузера и вставляем следующий код, нажимаем Enter: Теперь вы можете делать что захотите с этой страничкой. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Знаю что боян, но решил сделать пометочку у себя в блоге про эти скриптики, мало ли, пригодятся =)</p>
<ul>
<li>Скрипт для редактирования любой страницы</li>
<li>Скрипт полета изображений</li>
</ul>
<p><span id="more-517"></span></p>
<p><strong>Первый скрипт позволяет &#171;редактировать&#187; любую страницу.</strong><br />
Заходим на любой сайт, очищаем адресную строку браузера и вставляем следующий код, нажимаем Enter:</p>
<pre class="brush: plain; title: Код:; notranslate">javascript:document.body.contentEditable='true'; document.designMode='on'; void 0</pre>
<p>Теперь вы можете делать что захотите с этой страничкой. Но конечно же страница на сервере не изменится =)</p>
<p><strong>Второй скрипт &#8212; пляшущие изображения:</strong><br />
Заходим на любой сайт, я зашел на ВК, там изображений много =), и снова вставляем в строку браузера следующий скрипт и нажимаем Enter:</p>
<pre class="brush: plain; title: Код:; notranslate">javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+&quot;px&quot;; DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+&quot;px&quot;}R++}setInterval('A()',5); void(0);</pre>
<p>Изображения заплясали =) Изменяя x,y-ки можно изменить траекторию их &#171;полета&#187; =)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2012/03/interesnyie-java-scripts.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Изменение вида пунктов меню при переходе на страницы</title>
		<link>https://nikita-sp.com.ua/2012/02/izmenenie-vida-punktov-menyu-pri-pereh.html</link>
					<comments>https://nikita-sp.com.ua/2012/02/izmenenie-vida-punktov-menyu-pri-pereh.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Wed, 22 Feb 2012 23:02:40 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=456</guid>

					<description><![CDATA[Итак, в данной записи мы с вами попробуем создать меню, при нажатии кнопочек которого и переходе на соответствующую страничку, оно будет менять вид. Чтобы сразу понять как это будет выглядеть &#8212; пример. Т.е. при нажатии на ссылку мы переходим на страничку, а меню читает адрес и выделяет соответственный пункт меню, как активный. Для этого воспользуемся [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Итак, в данной записи мы с вами попробуем создать меню, при нажатии кнопочек которого и переходе на соответствующую страничку, оно будет менять вид.</p>
<p>Чтобы сразу понять как это будет выглядеть &#8212; <a href="http://prestigemebel.com.ua/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="ext-link wpel-icon-right">пример<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.<br />
Т.е. при нажатии на ссылку мы переходим на страничку, а меню читает адрес и выделяет соответственный пункт меню, как активный.<span id="more-456"></span></p>
<p>Для этого воспользуемся JavaScript. Для простоты решения задачи подключим jQuery.<br />
Для обычного (без вложенных подпунктов) меню мы можем воспользоваться следующим кодом:</p>
<pre class="brush: jscript; title: Код:; notranslate">var current = window.location.toString();
var menu = document.getElementById('menu');
var links = menu.getElementsByTagName('a');

for (var i=0;i&lt;links.length;i++){
if (links[i] == current){
links[i].setAttribute('id', 'current');
}
}</pre>
<p>При HTML коде такого вида:</p>
<pre class="brush: plain; title: Код:; notranslate">&lt;ul id=&quot;menu&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Пункт 1&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Пункт 2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Пункт 3&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Пункт 4&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Пункт 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Данный скрипт будет выполнять следующее:<br />
Строка 1 &#8212; считывание текущего адреса в строке браузера<br />
Строка 2 &#8212; получение всех дочерних элементов для элемента с <em>id=&#187;menu&#187;</em><br />
Строка 3 &#8212; получение всех ссылок (элементов &lt;a&gt;) и их запись в массив <em>links[]</em><br />
Строка 5 &#8212; запускаем цикл, который будет проверять все ссылки в нашем массиве <em>links[]</em> и сверять с текущим адресом, и если есть совпадение, то ссылке устанавливается <em>id=&#187;current&#187;</em>. Т.е. устанавливается стиль для текущей (нажатой) кнопочки/ссылки. Можно установить параметр <em>class</em>.</p>
<p>Если у вас есть более рациональные идеи &#8212; пишите в комментариях сайта (не от контакта), буду рад почитать и проанализировать ваши варианты!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2012/02/izmenenie-vida-punktov-menyu-pri-pereh.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Методы и свойства XMLHttpRequest</title>
		<link>https://nikita-sp.com.ua/2011/12/metodyi-i-svoystva-xmlhttprequest.html</link>
					<comments>https://nikita-sp.com.ua/2011/12/metodyi-i-svoystva-xmlhttprequest.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Tue, 06 Dec 2011 18:17:09 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=414</guid>

					<description><![CDATA[Методы объекта XMLHttpRequest open() Варианты вызова: open( method, URL ) open( method, URL, async ) open( method, URL, async, userName ) open( method, URL, async, userName, password ) Первый параметр method &#8212; HTTP-метод. Как правило, используется GET либо POST, хотя доступны и более экзотические, вроде TRACE/DELETE/PUT и т.п. URL &#8212; адрес запроса. Можно использовать не [&#8230;]]]></description>
										<content:encoded><![CDATA[<section>
<h2>Методы объекта XMLHttpRequest</h2>
<p><strong>open()</strong><br />
Варианты вызова:<br />
open( method, URL )<br />
open( method, URL, async )<br />
open( method, URL, async, userName )<br />
open( method, URL, async, userName, password )<br />
Первый параметр method &#8212; HTTP-метод. Как правило, используется GET либо POST, хотя доступны и более экзотические, вроде TRACE/DELETE/PUT и т.п.</p>
<p>URL &#8212; адрес запроса. Можно использовать не только HTTP/HTTPS, но и другие протоколы, например FTP и FILE://. При этом есть ограничения безопасности, так называемая &#171;same origin policy&#187;: запрос со страницы можно отправлять только на тот домен и порт, с которого она пришла.<span id="more-414"></span></p>
<p>Ниже это ограничение и способы обхода будут рассмотрены подробнее.<br />
<strong>async = true</strong> задает асинхронные запросы, эта тема была поднята выше.<br />
<strong>userName, password</strong> &#8212; данные для HTTP-авторизации.</p>
<p><strong>send()</strong><br />
Отсылает запрос. Аргумент &#8212; тело запроса. Например, GET-запроса тела нет, поэтому используется send(null), а для POST-запросов тело содержит параметры запроса.</p>
<p><strong>abort()</strong><br />
Вызов этого метода xmlhttp.abort() обрывает текущий запрос.<br />
Здесь есть одно НО для браузера Internet Explorer. Успешный вызов abort() на самом деле может не обрывать соединение, а оставлять его в подвешенном состоянии на некоторый таймаут (20-30 секунд). Отловить такие повисшие соединения можно через прокси для отладки, например, Fiddler.</p>
<p>У браузера есть лимит: не более 2 одновременных соединений с одним доменом-портом. Т.е, если два соединения уже висят (и отвиснут по таймауту), то третье открыто не будет, пока одно из них не умрет. Надеюсь, Вы с такой проблемой не столкнетесь. Ее можно обойти использованием кросс-доменных XmlHttpRequest.</p>
<p><strong>setRequestHeader(name, value)</strong><br />
Устанавливает заголовок name запроса со значением value. Если заголовок с таким name уже есть &#8212; он заменяется. Например,<br />
xmlhttp.setRequestHeader(&#8216;Content-Type&#8217;, &#8216;application/x-www-form-urlencoded&#8217;)</p>
<p><strong>getAllResponseHeaders()</strong><br />
Возвращает строку со всеми HTTP-заголовками ответа сервера.</p>
<p><strong>getResponseHeader(headerName)</strong><br />
Возвращает значение заголовка ответа сервера с именем headerName.<br />
</section>
<section>
<h2>Свойства объекта XMLHttpRequest</h2>
<p><strong>onreadystatechange</strong><br />
Ссылается на функцию-обработчик состояний запроса. В некоторых браузерах функция имеет аргумент &#8212; событие. Не используйте его, он совершенно лишний.</p>
<p><strong>readyState</strong><br />
Номер состояния запроса от 0 до 4. Используйте только 4 (&#171;completed&#187;).</p>
<p><strong>responseText</strong><br />
Текст ответа сервера. Полный текст есть только при readyState=4, ряд браузеров дают доступ к полученной части ответа сервера при readyState=3.</p>
<p><strong>responseXML</strong><br />
Ответ сервера в виде XML, при readyState=4.<br />
Это свойство хранит объект типа XML document, с которым можно обращаться так же, как с обычным document. Например,<br />
var authorElem = xmlhttp.responseXML.getElementById(&#8216;author&#8217;)</p>
<p>Чтобы браузер распарсил ответ сервера в свойство responseXML, в ответе должен быть заголовок Content-Type: text/xml.<br />
Иначе свойство responseXML будет равно null.<br />
status</p>
<p>Для HTTP-запросов &#8212; статусный код ответа сервера: 200 &#8212; OK, 404 &#8212; Not Found, и т.п. Браузер Internet Explorer может также присвоить status код ошибки WinInet, например 12029 для ошибки &#171;cannot connect&#187;.</p>
<p>Запросы по протоколам FTP, FILE:// не возвращают статуса, поэтому нормальным для них является status=0.</p>
<p><strong>statusText</strong><br />
Текстовая расшифровка status, например &#171;Not Found&#187; или &#171;OK&#187;.<br />
</section>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2011/12/metodyi-i-svoystva-xmlhttprequest.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
