На Главную

Как задать стиль для input с type=button

June 4th, 2008 by Yuriy Drozdov

Не так давно, один мой коллега обратился ко мне с вопросом как задать стиль лишь для input c type равным button. Может быть, кому-то эта информация покажется тоже интересной, поэтому, пишу на блоге.

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

Вдоволь насмотревшись на спецификацию, можно прийти к выводу, что в данном случае нам бы помог этот селектор:

CSS:
  1. /* для примера изменим стиль, ширину и цвет границы */
  2. input[type="button"] {border:solid 1px #000;}

Получим такую картину:

  • Firefox 2 ff2 selector type=button
  • Opera 9.27 opera selector type=button
  • Safari 3.1.1 safari selector type=button
  • IE 6 ie6 selector type=button
  • IE 7 ie7 selector type=button

Как видно из рисунков выше, все браузеры подхватили стили для селектора, кроме IE6. Но и это не вопрос. Воспользуемся разработками Майкрософт для IE. А именно, условными комментариями, для того чтобы вынести css код для IE6 в отдельный css файл и не травмировать психику других браузеров.

HTML:
  1. <!--[if IE 6]><link rel="stylesheet" href="http://blog.sribna.com/ie6.css" type="text/css" /><![endif]-->

А в самом css файле для IE6 воспользуемся другой разработкой Майкрософта, css expressions.

CSS:
  1. input {border: expression( this.type=="button" ? 'solid 1px #000' : 'inherit' );}

После этих несложных манипуляций в IE 6 кнопка будет выглядеть следующим образом:

ie6 button expression

Что хотелось бы сказать напоследок? Скажу, что expressions замедляют работу браузера. Об их оптимизации можно почитать у Павла Корнилова, а также у Юрия Артюха.

Автор: Yuriy Drozdov

Похожие статьи:

  • Нет похожих статей

RSS комментариев | Trackback URI

12 Комментариев

Comment by lusever Subscribed to comments via email
2008-06-04 13:51:42

Или так:
input { scrollbar-face-color: expression(runtimeStyle.scrollbarFaceColor = '#fff', className = (className) ? ' type-'+type : 'type-'+type) }
А потом дописать к правилу:
input[type="button"],
input.type-button {…

Comment by Yuriy Drozdov
2008-06-04 14:07:02

Да, так, наверное, будет предпочтительнее, не прийдется для каждого свойства делать проверку.

 
 
Comment by lusever Subscribed to comments via email
2008-06-04 14:19:04

И css только в одном месте править.

 
Comment by milax Subscribed to comments via email
2008-06-04 22:28:28

ИМХО, проще прописать отдельный класс и везде его использовать для инпута, где это требуется. В данном случае для input c type равным button.

input.btn {
border:solid 1px #000;
}

Ато этот ИЕ6… Лишний головняк.

Хотя, на вкус и цвет… :)

Comment by milax Subscribed to comments via email
2008-06-04 22:30:26

Блин, теги порезало, но, я думаю, вы поняли, что я имел в виду)

 
Comment by Yuriy Drozdov
2008-06-05 09:09:40

А если это готовый проект и заказчику захотелось поменять вид кнопок, искать по всему проекту type=button и прописывать класс?

Comment by milax Subscribed to comments via email
2008-06-05 09:14:44

Разве что только в этом случае. Но обычно адекватные клиенты очень редко меняют дизайн, поэтому… ;)

 
 
 
2008-06-06 08:35:16

Хоть я и не увлекаюсь версткой, но эту заметку добавил в закладки.

 
Comment by Роман Subscribed to comments via email
2008-06-25 16:43:45

Мда….
Для нормальных браузеров много можно чего сделать через css не используя классы. Но каждый раз нагружая IE 6 экспрешеном??? Это вы считаете хороший выход? я понимаю ещё expression для min-width/max-width, но использовать его по каждому удобному случаю….

Comment by Yuriy Drozdov
2008-06-26 09:26:59

в данном случае другого выхода нет, экспрешн - необходимое зло.

 
 
Trackback by sloger.net
2008-07-06 18:50:59

Как задать стиль для input с type=button…

Не так давно, один мой коллега обратился ко мне с вопросом как задать стиль лишь для input c type равным button. Может быть, кому-то эта информация п…

 
Comment by Сергей Ч
2008-07-13 18:48:46

По мне так нормальный вариант, хоть и юзается expression. Так что использовать можно, спасибо за полезную информацию!

 

Извините, комментарии закрыты.