Поиск

Вход на сайт

Файлы

  • Игры 240х400 - Сборник из 72 игр для сенсорных телефонов
  • Windows 7 активатор
  • WallHack для Call of Duty 4 Modern Warfare[multiplayer]
  • Обои для Samsung s5230 720х400
  • Kassy 0.3 + crack (печать товарных чеков)
  • Jimm 0.6.0
  • Mail Agent на телефон (jar)
  • Механоиды гонки на выживание nocd
  • Читы CS 1.6 - Wallhack v4
  • Tequilacat Book Reader 2.2.8
  • Обои для Samsung s5230 720х400
  • Обои для Samsung s5230 720х400
  • l4d_update_1013_to_1014
  • Windows 7 Activator Pack
  • Сборник виджетов для SAMSUNG S5230
  • Шпаргалка по русскому языку
  • Ad Muncher 4.9 Build 31235
  • TMS Component Pack v5.4.2.0 (C++Builder, Delphi) Full Source
  • Архив файлов для Guitar Pro
  • Шпаргалка по математике
  • KKiller v3.4.4
  • Решатель транспортных задач
  • Radmin_3.3_+_Key
  • Sound_Forge_9.0a + crack
  • GPU-Z 0.3.8 (RUS/2009)
  • Чит для Battlefield 2 || ArtificialAiming Radar v2.6
  • Игры для Nokia 5800, N97, 5230, 5530, X6 - Игры для смартфонов серии Nokia Touch, с сенсорным экраном 360 x 640 (S60 5th Edition)
  • Читы CS 1.6 - BadBoy v5.0
  • Читы для lineage 2
  • Tom Clancy's Splinter Cell: Conviction Multiplayer patch
  • Каталог статей

    Главная » Статьи » Веб программирование » CSS

    CSS: создание и обработка кнопок
    Рисуем кнопку

    Для начала нам необходимо нарисовать кнопку, вроде этой:

    CSS Button Preview

    Для этого лучше всего нам подойдет инструмент "Rounded Rectangle Tool” в Photoshop, с него и начнем – нарисуем нечто вроде:

    Button in Photoshop - Step 0

    Изменяя параметр Radius вы сможете задать желаемое загругление кнопок ( в примере для наглядности контент полностью прозрачный ("Fill Opacity” => 0%)):

    Button in Photoshop - Step 1

    Ширина объекта в данном примере 320px – т.е. я предполагаю, что кнопок большего размера не будет.

    Границу выводим с помощью "Stroke” (из "Blending Options”), тип – градиент – от #000000 до #676767:

    Button in Photoshop - Step 2

    Теперь не мешало бы и залить кнопочку градиентом (сверху указан параметр opacity, внизу цвет; инструмент "Gradient Overlay” из "Blending Options”):

    Button in Photoshop - Step 4

    Результат:

    Button in Photoshop - Step 3

    Результат с залитой границей:

    CSS Button Photoshop Result

    Если мы сделаем цветной фон:

    CSS Button Photoshop Result
    CSS Button Photoshop Result
    CSS Button Photoshop Result

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

    Простая CSS кнопка

    Самый простой вариант – у нас все кнопки одного размера и одного/двух цветов, соответственно готовим небольшой "спрайт” на все случаи жизни (простым копированием слоя с кнопкой):

    CSS Buttons Sprite

    Теперь нам остается лишь слегка подправить CSS для таких кнопок:

    01.button {
    02    cursor:pointer;
    03    display:block;
    04    height:70px;
    05    width:320px;
    06    line-height:70px;
    07    text-align:center;
    08    background-image:url('images/buttons.png');
    09    background-repeat:no-repeat;
    10}
    11.button.green { background-position:0 0 } /* зеленая кнопка */
    12.button.green:hover { background-position:0 -350px } /* активная зеленая кнопка */
    13/* и т.д. */

    Сам HTML код элементарен:

    1<a href="#" title="Label" class="button green">Label</a>
    2<a href="#" title="Label" class="button white">Label</a>
    3<a href="#" title="Label" class="button black">Label</a>
    4<a href="#" title="Label" class="button orange">Label</a>
    5<a href="#" title="Label" class="button red">Label</a>

    Результат предсказуем:

    CSS Button Sprite Result

    Резиновая CSS кнопка

    Теперь усложним задачу – мы не имеем представления какого цвета будут кнопки, и какого размера, мы лишь предполагаем, что кнопки не будут больше 320px в ширину.

    Строим DOM

    Каждая кнопка будет представлять из себя элемент <a>, обернутый в <li>. Элемент <em> нам так же понадобится для создания резиновых кнопок, чтобы внести ясность приведу следующий скрин:

    HTML Button

    Ну и сам HTML код:

    1<ul class="small">
    2    <li class="button"><a href="#" title="Label">Label<em></em></a></li>
    3    <li class="button green"><a href="#" title="Label">Label<em></em></a></li>
    4    <li class="button white"><a href="#" title="Label">Label<em></em></a></li>
    5    <li class="button black"><a href="#" title="Label">Label<em></em></a></li>
    6    <li class="button orange"><a href="#" title="Label">Label<em></em></a></li>
    7    <li class="button red"><a href="#" title="Label">Label<em></em></a></li>
    8</ul>

    Примечание: можно использовать практически любые другие HTML теги, это дело вкуса, так что таким же образом вы можете изменить и элементы формы. Для упрощения HTML’а можно воспользоваться JavaScript’ом. Приведу пример:

    01<script type="text/javascript">
    02    $(document).ready(function(){
    03        $('form :button, form :submit').each(function(){
    04            var className = $(this).attr('class');
    05 
    06            $(this).wrap('<div class="button '+className+'"></div>');
    07            $(this).after('<em></em>');
    08        });
    09    });
    10</script>
    11<form class="rubber" onsubmit="return false;">
    12    <input type="button" class="green" title="Button" value="Button"/>
    13    <input type="submit" class="red" title="Submit" value="Submit"/>
    14</form>

    Пишем CSS

    Читаем комментарии по коду:

    01.button {
    02    /*
    03      у нас кнопка с закруглением - значит нам необходимо
    04      у DOM элемента так же скруглить углы
    05     */
    06    border-radius:10px;
    07    -moz-border-radius:10px;
    08    -khtml-border-radius:10px;
    09    -webkit-border-radius: 10px;
    10 
    11    /*
    12      внутренний элемент <a> должен быть смещен относительно <li>
    13      на 20px - освобождаем место для <em>
    14     */
    15    padding-right:20px;
    16 
    17    /*
    18       данные элемент будет relative - т.е.
    19       все элементы внутри него с абсолютным
    20       позиционированием будут плясать от него
    21    */
    22    position:relative;
    23}
    24.button a, .button em{
    25    /* ссылке и элементу em задаем одинаковое фоновое изображение */
    26    background-image:url('css/images/button.png');
    27    background-repeat:no-repeat;
    28}
    29.button a{
    30    /*
    31       ссылку делаем блочным элементом
    32       задаем высоту элемента, а так же свойство
    33       line-height - с его помощью мы выравниваем текст по вертикали
    34    */
    35    display:block;
    36    height:52px;
    37    line-height:52px;
    38 
    39    outline:none;
    40    color:#333;
    41    font-size:18px;
    42    text-indent:20px;
    43    text-decoration:none;
    44    text-align:center;
    45    text-shadow: #333 0px -1px 0px;
    46}
    47.button em{
    48    /*
    49       внутренний элемент так же будет блочным
    50       с размером 52х20, с абсолютной позиционированием
    51    */
    52    display:block;
    53    position:absolute;
    54    background-position:100% 0;
    55    width:20px;
    56    height:52px;
    57    top:0px;
    58    right:0px;
    59}
    60/* цвет шрифта для некоторых кнопок лучше поменять */
    61.button.green a,
    62.button.black a,
    63.button.red a
    64{
    65    color:#fff;
    66}
    67/* тут указываем цвет наших кнопок */
    68.button.green { background-color:#009e0f }
    69.button.green:hover{ background-color:#068612 }
    70.button.white{ background-color:#f0f0f0 }
    71.button.white:hover{ background-color:#c0c0c0 }
    72.button.black{ background-color:#000 }
    73.button.black:hover{ background-color:#333 }
    74.button.orange{ background-color:#ff7800 }
    75.button.orange:hover{ background-color:#c60 }
    76.button.red{ background-color:#f00 }
    77.button.red:hover{ background-color:#c00 }

    Наблюдаем результат

    Сравним результат наших трудов в разных браузерах:

    CSS Button Compare Result

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

    • полупрозрачность в IE6 не работает – можем докрутит хаки, но зачем – IE6 можно считать умершим
    • box-radius в IE и Opera не работает – либо отказываемся от данной фичи, либо зарисовываем свободное пространство фоновым цветом (для IE так же есть грязный хак, см.: Curved corner (border-radius) cross browser)


    Источник: http://anton.shevchuk.name/html-and-css/css-for-beginners-simple-css-buttons/
    Категория: CSS | Добавил: _Hz_ (28.02.2010)
    Просмотров: 684 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    Статистика





    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Ссылки

    dim-dragon.ucoz.ru