Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Input vs. Button

Раздел: Programming / Вебмастеру @ 25.05.2008 | Ключевые слова: кнопки css версия для печати

Автор: xeka
Источник: habrahabr

Прежде чем делать дизайн кнопок форм в виде изображений, стоит подумать все же о реализации этой затеи только с помощью CSS. В противном случае, представьте, сколько картинок для кнопок вам придется прописывать в коде. Думаете не много? Тогда посмотрим, с какими еще проблемами вы можете столкнуться, и как мы их будем решать.

Есть несколько вариантов решения нашей задачи:
1. Использовать <input type="submit" /> и технику замены картинки текстом.
2. Использовать <input type="image" /> и прописывать для каждой кнопки соответствующий путь к изображению.
3. Использовать <button type="submit"></button> и вставить код картинки между тегом button.

Если начать с варианта 2, то проблем не возникнет до тех пор, пока мы не протестируем код в IE 6/7. Если немного «погуглить», то можно обнаружить, что проблема эта давно известная и решается довольно просто с помощью JS. Однако все же хочется обойтись без него.. Поэтому перейдем к способу 3.

И снова все везде работает замечательно, кроме IE. Проблема в том, что браузер не воспринимает код картинки как фон для button. Причина скорее всего в том, что если у вас есть несколько элементов кнопок с одноименным названием атрибутов, то браузер IE6 реагирует только на те элементы, которые были отданы сервером в последнюю очередь.

Наглядные примеры всех 3х вариантов кнопок можно посмотреть здесь. Просто откройте страницу в IE6/7 и вы увидите описанные мною проблемы.

Убедившись, что оба варианта работают изначально некорректно, придется обратиться к нашему 1му способу: просто прописывать стили для <input type="submit" />.

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

input.buttons {
background: none no-repeat top left;
border: none;
cursor: pointer;
display: block;
height: 25px;
overflow: hidden;
padding: 0;
margin: 0 2px 0 0;
text-indent: -9999px;
width: auto;
}


Теперь для каждой кнопки пропишем стили отвечающее за фоновое изображние и размеры:

input.updateCart { background-image: url(update-cart.gif); width: 107px; }
input.continueShopping { background-image: url(continue-shopping.gif); width: 146px; }
input.proceedCheckout { background-image: url(proceed-to-checkout.gif); width: 156px; }


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

input.buttons:hover { background-position: 0 -25px; }

Смотрится замечательно, конечно кроме IE:



Но ошибка легко исправима, достаточно прописать следующие правила:

input.buttons { font-size: 0; line-height: 25px}

Результат можно посмотреть здесь. Все работает корректно!

И еще один штрих..

Мы добились того, чтобы во всех браузерах кнопки отображались корректно. Однако нерабочим остается hover эффект в IE6. Предлагаю исправить это с помощью небольшого когда на jQuery:

$(document).ready(function(){
$(`input.buttons`).hover(function() {
$(this).css(`background-position`,`0 -25px`);
},
function() {
$(this).css(`background-position`,`0 0`);
}
);
});


Что ж, вариантов больше не осталось и нам пришлось использовать стандартный вариант с . Если у вас есть более изящные решения – предлагайте :)
Ist.

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Programming / Вебмастеру


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.