☰
  • Гаджеты
    • iPhone
    • Android
    • Новости
    • Обои для смартфонов
    • Программы для android
    • Обзоры о гаджетах
    • Программы
  • Компьютеры
    • Windows
    • Ubuntu
    • MS Office
    • Программы для ПК
    • Обслуживание и защита ПК
  • Интернет
    • Браузер
    • Создание сайтов
    • SEO и раскрутка
    • Социальные сети
    • Заработок
    • Сатострой
  • Игры
    • Клиентские
    • Браузерные
    • Мобильные
    • Ретро
  • Другое
    • 1С Бухгалтерия
    • Техно-статьи
    • Дайджест

CSS спрайты и анимационные кнопки

css-спрайты

Привет, друзья! Сегодня хочу рассказать об одном интересном, а главное полезном приеме для веб-мастеров, о css спрайтах. О том, что это такое и с чем его едят под катом, прошу.В первую очередь css спрайты – это изображения. А точнее это несколько изображений собранные в одно большое, вот, например, так: css-спрайты Такое скомпонованное изображение назначается в качестве фона для html-элемента и задаются координаты этого фона, чтобы выбрать нужный кусок спрайта. Все очень просто, давайте попробуем поэкспериментировать с первым изображением.

Создадим пустой DIV и применим к нему класс spriteTest:

<div class=”spriteTest”>

</div>

И соответственно создадим сам класс: .spriteTest { background: src(zoo_sprite.jpg) no-repeat; background-position:0px 0px; width:95px; height:85px; } Первой строчкой мы назначаем фон элементу, второй задаем начальные координаты фона относительно элемента, к которому фон применен (первое значение –X, второе - Y), третьей и четвертой ширину и высоту элемента соответственно. Если посмотреть на результат, то мы увидим рыбку: css спрайт Но мне больше нравится попугай, и я изменю координаты фона и габариты (ширину и высоту) элемента, чтобы увидеть именно его: .spriteTest { background: src(zoo_sprite.jpg) no-repeat; background-position: -95px -85px; width: 85px; height: 85px; } В результате видим попугая css спрайты Как видите все очень просто, но в чем выигрыш при использовании спрайта вместо нескольких изображений? Все дело в скорости. Для загрузки нескольких изображений на страницу, создается столько же HTML запросов к серверу. При загрузке нескольких изображений с помощью спрайта браузеру понадобится всего один HTML запрос.

Обычно в спрайты компонуют мелкие элементы интерфейса, например, иконки.

Со спрайтами все просто, но на основе техники, которая в них используется, можно создать красивые анимации для кнопок, вот на подобие таких:

Посмотреть демо анимированных кнопок

Чтобы сделать такие эффекты одного css не достаточно, нужно задействовать JavaScript, я в частности использую фреймворк jQuery. Давайте попробуем создать одну из кнопок, которые я привел в предыдущем примере.

В первую очередь нам понадобится изображение фона: css sprite Когда оно готово создадим саму кнопку:

<input class="animateButton" type="button" value="Загрузить" />

И соответствующий класс для нее: .animateButton { background: url(buttonBg.jpg) repeat-x; border: 1px solid #ccc; width: 120px; height: 40px; color: #4f4f4f; } Обратите внимание на атрибут repeat-x, он нужен для того чтобы изображение постоянно повторялось по горизонтали.

И последнее, что нужно сделать, это написать на JavaScript простенький код для обработки нажатия на кнопку и функцию для анимации фона. Как вы уже догадались, анимация будет состоять только в изменении координаты X для фона. Сначала я приведу код, а потом немного его поясню:

$(document).ready(function(){
var buttonClicked = false;
function moveBackGround(bgx,delay)
{
var bgXDelta = 5; //на сколько пикселей сместить фон
var newBgX = bgx-bgXDelta; //новое значение координаты X фона
$('.animateButton').css('background-position', newBgX+'px 0px'); //смещаем фон
$('.animateButton').attr('value','Загружается'); //изменяем надпись на кнопке
setTimeout(function(){moveBackGround(newBgX,delay);},delay);    //рекуррентный вызов функции, чтобы продолжить смещение
}
$('.animateButton').click(function(){
if(!buttonClicked) //проверяем нажата ли уже кнопка
{
moveBackGround(0,50); //вызываем функцию для анимации
buttonClicked = true; //говорим, что кнопка нажата
}
});
});

Переменная buttonClicked нужна для блокировки повторного нажатия кнопки. Функции moveBackGround мы передаем 2 значения: первое – начальное значение координаты X фона, а второе – задержка, с которой будет осуществляется приращение к координате X. Все остальное понятно из комментариев к коду.

Наверняка внимательные читатели уже заметили проблему в моей программе. У меня получилась бесконечная рекурсия, в результате анимация кнопки никогда не остановится.

Так как по нажатию на кнопку должно происходить какое-то действие (ajax-подгрузка например), то по окончании этого действия анимация кнопки должна завершиться. Сделать это очень просто всего одной проверкой в функции moveBackGround, но это останется для вас домашним заданием =)

Жду ваших замечаний и предложений в комментариях. Удачи, друзья!

Конечно, в web уже давно вписали различные редакторы анимаций, но я нашел инструмент по лучше. С ним создание видеороликов становится намного проще и удобнее. Подробную информацию вы сможете получить на сайте http://wm-d.ru.




  • Гороскоп по знакам зодиака на март 2021 года
  • Лунный посевной календарь на март 2021
  • Лунный календарь стрижек на март 2021
  • Лунный календарь маникюра на март 2021



  • Дата публикации: 2020-10-09

    Автор статьи:
    Alex Zolnov


    • Популярное
    • Новое
    На тему Android и Apple
    Dungeon Hunter 3 - игра для Android 2012
    Програма Навигатор для OS Android
    Телефоны с Android доступны для всех
    Чем открыть Fb2 на компьютере и в Андроид?
    Виджет часы для Андроид
    Max Payne mobile - Игра для Android 2012
    Как сделать зачеркнутый текст в ВК?
    Как сделать всплывающие уведомления в ВК Андроид?
    Как отключить подписку ВК на музыку Айфон?
    Как отключить безопасный поиск ВК на Айфоне?
    Как скачать музыку с ВК?
    Как скачать фото из яндекса на компьютер?
    Как увидеть историю посещения сайтов?


    © 2020 Блог о компьютерах, гаджетах и программах
    Все права защищены. При копировании материалов ссылка на сайт обязательна.
    Cайт носит информационный характер и не является публичной офертой согласно положениям статьи 437 ГК РФ.