Що я зазвичай роблю, це те, що я створюю подвійне зображення з обома станами, діючи як різновид двокадрової плівки, яку я потім використовую як фон вихідного елемента, щоб елемент мав ширину / висоту, встановлену в пікселях, в результаті показуючи лише одна половина зображення. Тоді те, що визначає стан наведення, в основному - "перемістити фільм, щоб показати інший кадр".
Наприклад, уявіть, що зображення має бути сірим Tux, що нам потрібно змінити на кольоровий Tux при наведенні. А елемент "хостинг" - це проліт з ідентифікатором "tuxie".
- Я створюю зображення розміром 50 х 25 із двома смоксами, одним кольоровим та іншим сірим,
- потім призначте зображення як фон для розмаху 25 x 25,
- і нарешті встановіть наведення, щоб просто перемістити фон на 25 пікселів ліворуч.
Мінімальний код:
<style>
#tuxie {
width: 25px; height: 25px;
background: url('images/tuxie.png') no-repeat left top;
}
#tuxie:hover { background-position: -25px 0px }
</style>
<div id="tuxie" />
та зображення:
Переваги:
Помістивши обидва кадри в один файл, гарантується, що вони завантажуються одночасно. Це дозволяє уникнути потворних збоїв при повільних з'єднаннях, коли інший кадр ніколи не завантажується відразу, тому перше наведення ніколи не працює належним чином.
Це може бути простіше керувати вашими зображеннями таким чином, оскільки "парні" кадри ніколи не плутаються.
Завдяки розумному використанню селектора Javascript або CSS можна розширити це і включити ще більше кадрів в один файл.
Теоретично ви можете помістити навіть кілька кнопок в один файл і керувати їх відображенням за координатами, хоча такий підхід може швидко вийти з-під контролю.
Зверніть увагу, що це побудовано з background
властивістю CSS, тому, якщо вам дійсно потрібно використовувати з <img />
s, ви не повинні встановлювати src
властивість, оскільки це перекриває фон. (Подумайте, що розумне використання прозорості тут може привести до цікавих результатів, але, ймовірно, дуже залежить від якості зображення, а також двигуна.).