Cambiando el aspecto de los SelectBox

Como siempre y siguiendo mi manía de darle forma a los controles «feos» de los navegadores, vemos una forma de poder cambiar los «SelectBox» de forma sencilla.

De forma similar a como cambiabamos los campos de tipo file, debemos crear una estructura alrededer de los campos selectBox de una forma parecida a esta

1
2
3
4
5
6
7
8
9
10
<div class="selectBox">
   <div class="box" id="box">Plantar un arbol</div>
   <select name="mySelectBox" id="mySelectBox">
      <option value="1" class="primero">Plantar un arbol</option>
      <option value="2">Escribir un libro</option>
      <option value="3" selected="selected">Ser Padre</option>
      <option value="4">Hacer un Blog</option>
      <option value="5" class="ultimo">Un texto largo para ver que efecto produce</option>
   </select>
</div>

Donde el div principal es el contenedor del Select, y el div «box» donde escribiremos la selección del combo. Para poder realizar la última acción, crearemos un evento «onchange» que aplicaremos a nuestro comboBox para poder pasar los datos de la selección al div «box».

1
onchange="this.parentNode.getElementsByTagName('div')[0].innerHTML=this.options[this.selectedIndex].text"

Y evidentemente le daremos unos «colorines» para que quede «bonito».

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
div.selectBox {
   position: relative;
   width: 150px;
   height: 22px;
   border: 1px solid #036;
   background: url(button.png) 130px center no-repeat;
}
   div.selectBox div.box {
      position: absolute;
      left: 3px;
      top: 3px;
      width: 124px;
      height: 16px;
      line-height: 16px;
      font-family: arial;
      font-size: 11px;
      color: #036;
      overflow: hidden;
   }
   div.selectBox select {
      position: absolute;
      left: -1px;
      top: -1px;
      width: 152px;
      height: 24px;
      border: 1px solid #036;
      opacity: 0;
      filter: alpha(Opacity=0);
      -moz-opacity: 0;
      cursor: pointer;
      z-index:100;
   }
      div.selectBox select option{
         padding: 4px;
         font-size: 11px;
         color: #036;
         border-bottom: 1px solid #eee;
         cursor: pointer;
      }
      div.selectBox select option.ultimo{
         border-bottom: 0px none;
      }

Para complementar estos estilos, añadimos la siguiente imagen que hará las veces de botón

Botón

El resultado funciona en todos los navegadores, exceptuando nuestro querido amigo «Explorer6» donde no sé si se verá correctamente al tener una «emulación» del mismo.

[ demo ] [ descargar ]

11 comentarios.


  • 11 de marzo de 2009 a las 18:33
    Fco. Moreno dice...
    Pues en Ie7 a mi se me ve perfecto. Es precioso Carlos. Sencillo y genial. Gracias.

  • 11 de marzo de 2009 a las 20:39
    Martin dice...
    Excelente... me gusta, en FF se ve bien, en Chrome también aunque en IE6 (para variar) no hace ni caso!

    Un abrazo y es una alegría verte de vuelta

  • 13 de marzo de 2009 a las 23:50
    Marcos dice...
    Solo puedo que opinar lo mismo. Que buenos post!!
    Un abrazo!

  • 15 de marzo de 2009 a las 17:21
    cmacias dice...
    Pués el próximo va a ser mejor. A ver si lo tengo en estos días, y bueno, gracias por vuestras palabras !

  • 18 de marzo de 2009 a las 13:31
    MarcosBL dice...
    En dos palabras... ¡ Pri-chiosos ! :D

    Un pequeñísimo "improvement" si me permites, para la opción que tiene el texto demasiado largo, de paso que cambias por JS el texto del div, ponle también el "title" con el texto completo, así se verá tal cual ahora, pero si haces mouseover se podrá ver el texto completo.

    ¡ Un pleasure volver a leerte !

  • 19 de marzo de 2009 a las 0:40
    cmacias dice...
    Gracias Marcos, tomaré nota de otro de tus siempre "sabios" consejos ;)

  • 30 de junio de 2009 a las 19:35
    Diseño web dice...
    puto ie6, no lo veo jajajaja. En cuanto llegue a casa lo miro, la verdad es que tengo una buena coleccion de estas cosas, algun dia las compartire 8)

  • 30 de junio de 2009 a las 19:42
    cmacias dice...
    Explorer 6 es una de mis terapias para ejercitar la memoria. Haga lo que haga, siempre temino acordándome de ellos ;)

  • 19 de noviembre de 2009 a las 18:50
    sirhcle dice...
    excelente, gracias!!!

  • 16 de julio de 2010 a las 16:51
    Alex dice...
    Excelente!!! lo andaba buscando desde hace un par de dias por fin lo encontre!! mil gracias!!!

  • 11 de marzo de 2013 a las 17:13
    Karla Jurupe dice...
    Por fin encontre uno que se visualiza en todos los exploradores, gracias!
Deja tu comentario