Андрейка Лечев
Василий Мамаевский
17 декабря 2010 |
|
Задача. | Раскрасить текст цветным градиентом. |
||
Андрейка Лечев написал скрипт, который раскрашивает текст цветным градиентом, и попросил оформить его в виде jQuery-плагина. Предлагаем этот плагин вашему вниманию:
— jquery.gradienttext.js;
— jquery.measurer.js.
В элементах, которые мы хотим раскрасить, скрипт сначала выделяет текстовые узлы и оборачивает каждый символ по отдельности в тег span
. Затем, исходя из реального местоположения каждого символа, рассчитывает цвет, в который его нужно покрасить.
В случае если размер окна или шрифта изменяется, все цвета символов пересчитываются заново. Чтобы обновить цвета принудительно, воспользуйтесь методом плагина update()
(подробнее об этом — в конце статьи).
Подключаем библиотеку jQuery, файлы jquery.measurer.js и jquery.gradienttext.js.
|
|
Попробуем вызвать плагин без явных параметров.
|
|
От голубого к красному, а затем к зеленому.
|
|
По умолчанию вложенные элементы не обрабатываются, но если при инициализации
указать jQuery-селекторы в свойстве toProcess
, то указанные элементы будут обработаны наряду с родителями.
|
|
У плагина всего два параметра:
— colors
— массив цветов в шестнадцатиричном формате;
— toProcess
— массив jQuery-селекторов; соответствующие им вложенные элементы будут обработаны наравне с родителем (по умолчанию, напомним, вложенные элементы не обрабатываются).
Для раскрашенных элементов цвет ссылки при наведении мыши нужно указывать дополнительно. Вот так:
|
|
Принудительно обновить цвета можно, воспользовавшись методом update()
:
|
|
Наименьшая ширина градиента — 200 пикселей, т. е. если ширина строки меньше 200 пикселей, то могут быть задействованы не все цвета.
Если вы хотите изменить настройки по умолчанию, есть метод $.gradientTextSetup()
, которому нужно передать те же параметры, что и плагину. Например:
|
|
Файл jquery.measurer.js содержит глобальный объект $measurer
, который позволяет отслеживать изменение размера шрифта на странице. Его использование не обязательно.
© 19952024 Студия Артемия Лебедева
|