Как изменить вид тега <optgroup> через стили?

Средняя сложность

Раздел: Формы

Тег <optgroup> используется для создания и выделения группы в списке, созданным через тег <select>. Особенностью тега <optgroup> является то, что его нельзя выделить как обычный элемент списка, а все элементы, входящие в этот контейнер, смещаются вправо от своего исходного положения (рис. 1).

Вид списка в браузере Safari

Рис. 1. Вид списка в браузере Safari

К селектору OPTGROUP допускается применять только цвет текста (свойство color) и фона (background). При этом в браузерах имеются небольшие различия. Так, в Опере стиль применяется ко всей группе целиком, включая ее заголовок, в остальных браузерах стиль меняет только заголовок группы. Чтобы создать однотипный вид в браузерах и выделить один лишь заголовок, следует дополнительно задать стиль для селектора OPTION, входящего в группу (пример 1).

Пример 1. Изменение цвета текста и фона группы

XHTML 1.0CSS 2.1IE 7IE 8IE 9Cr 11Op 11Sa 5Fx 4

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Группирование элементов списка</title>
  <style type="text/css">
   OPTGROUP.color {
    background: #fc0; /* Цвет фона */
    color: red; /* Цвет текста */
   }
   OPTGROUP.hue {
    background: #f0f0f0; /* Цвет фона */
    color: #000; /* Цвет текста */
   }
   OPTION {
    color:  #000; /* Цвет текста */
    background: #fff; /* Цвет фона */
   }
  </style>
 </head>
 <body>
  <form action="handler.php">
   <p><select name="color">
    <optgroup label="Цвет" class="color">
     <option value="c1">Апельсиновый</option>
     <option value="c2">Лимонный</option>
     <option value="c3">Персиковый</option>
    </optgroup>
     <optgroup label="Тон" class="hue">
     <option value="s1">Светлый</option>
     <option value="s2">Нормальный</option>
     <option value="s3">Темный</option>
    </optgroup>
   </select></p>
   <p><input type="submit" value="Отправить" /></p>
  </form>
 </body>
</html>

Результат данного примера показан на рис. 2.

Вид списка, оформленного с помощью стилей

Рис. 2. Вид списка, оформленного с помощью стилей

В примере в списке имеется две группы с именами классов color и hue, для них устанавливается различный цвет текста и фона. Чтобы цвета элементов списка остались прежними, для селектора OPTION дополнительно вводятся свойства color и background.

формы

Если вам понравились материалы сайта, вы можете поддержать сайт, купив Рецепты CSS в формате CHM или в виде набора HTML-файлов за 50 р.