Crear un Menú Desplegable CSS3 [Tutorial]
Tema: CSS3
Dificultad: Principiante
Tiempo estimado: 20 minutos
Dificultad: Principiante
Tiempo estimado: 20 minutos
En este tutorial programaremos en CSS3 un extracto del Menú de Navegación que puedes encontrar en Página personal de Miguel Ángel Herrán.
(Está basado en el tutorial de
http://designmodo.com/css3-dropdown-menu/
y adaptado a mis propias necesidades).Paso 1 – HTML
Creamos una lista con los elementos del menú. Para crear los submenús añadimos otra lista dentro de la anterior.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<
ul
class
=
"menu"
>
<
li
><
a
href
=
"LosHerran.htm"
>Página
de los Herrán</
a
></
li
>
<
li
><
a
href
=
"libro.htm"
>Libro de
los Herrán</
a
></
li
>
<
ul
>
<
li
><
a
href
=
"libro_argentina.htm"
class
=
"argentina"
>Argentina</
a
></
li
>
<
li
><
a
href
=
"libro_brasil.htm"
class
=
"brasil"
>Brasil</
a
></
li
>
<
li
><
a
href
=
"libro_canada.htm"
class
=
"canada"
>Canadá</
a
></
li
>
</
ul
>
</
li
>
<
li
><
a
href
=
"http://maherran.blogspot.com"
>Blog</
a
></
li
>
<
li
><
a
href
=
"http://rincondemiguelangel.blogspot.com/"
>Rincón
de Miguel Angel</
a
></
li
>
</
ul
>
|
Paso 2 – Plantilla del Menú
Quitamos margen, relleno, borde y subrayado de todos los elementos del menú. Luego añadimos un ancho fijo y un alto al menú, esquinas redondeadas y gradientes CSS3. Para alinear los vínculos horizontalmente haremos flotar las listas a la izquierda. También necesitamos definir la posición como relativa dado que necesitaremos alinear los submenús.
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
|
.menu,
.menu ul,
.menu li,
.menu a {
margin
:
0
;
padding
:
0
;
border
:
none
;
outline
:
none
;
}
.menu {
height
:
40px
;
width
:
465px
;
background
:
#4c4e5a
;
background
: -webkit-linear-gradient(
top ,
#4c4e5a
0% ,
#2c2d33
100% );
background
: -moz-linear-gradient(
top ,
#4c4e5a
0%
,
#2c2d33
100%
);
background
: -o-linear-gradient(
top
,
#4c4e5a
0%
,
#2c2d33
100%
);
background
: -ms-linear-gradient(
top
,
#4c4e5a
0%
,
#2c2d33
100%
);
background
: linear-gradient(
top
,
#4c4e5a
0%
,
#2c2d33
100%
);
-webkit-border-radius:
5px
;
-moz-border-radius:
5px
;
border-radius:
5px
;
}
.menu li {
position
:
relative
;
list-style
:
none
;
float
:
left
;
display
:
block
;
height
:
40px
;
}
|
34
|
.menu ul {
display
:
none
; }
|
Paso 3 – Vínculos del Menú
Para dar estilo a los vínculos del menú
añadiremos algunas propiedades básicas de CSS tales como fuente, color,
relleno, etc.
Posteriormente añadiremos un texto oscuro sombreado y un color de transición
para crear un efecto alisado cuando el color cambia al pasar sobre él (hover).
Para crear separadores entre vínculos añadiremos un borde a derecha e izquierda,
y eliminaremos el borde izquierdo del primer vínculo y el borde derecho del
último. Para el estado hover sólo cambiaremos el color del texto.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
.menu li a {
display
:
block
;
padding
:
0
8px
;
margin
:
6px
0
;
line-height
:
28px
;
text-decoration
:
none
;
border-left
:
1px
solid
#393942
;
border-right
:
1px
solid
#4f5058
;
font-family
:
Helvetica
,
Arial
,
sans-serif
;
font-weight
:
bold
;
font-size
:
12px
;
color
:
#f3f3f3
;
text-shadow
:
1px
1px
1px
rgba(
0
,
0
,
0
,.
6
);
-webkit-transition: color .
2
s ease-in-out;
-moz-transition: color .
2
s ease-in-out;
-o-transition: color .
2
s ease-in-out;
-ms-transition: color .
2
s ease-in-out;
transition: color .
2
s ease-in-out;
}
.menu li:first-child a {
border-left
:
none
; }
.menu li:last-child a{
border-right
:
none
; }
.menu li:hover > a {
color
:
#8fde62
; }
|
Paso 4 – Submenú
Primero vamos a eliminar esta línea de código que añadimos en el segundo paso.
34
|
.menu ul {
display
:
none
; }
|
Ahora daremos estilo al submenú.
Comenzaremos por posicionar el submenú 40px desde arriba y 0px desde la
izquierda del menú, y añadiremos esquinas redondeadas. Pondremos la opacidad a 0
y en el estador hover a 1 para crear el efecto aparición/desaparición. Para el
efecto de deslizamiento arriba/abajo necesitamos poner list height a 0px cuando
está oculto y a 24px en estado hover.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
.menu ul {
position
:
absolute
;
top
:
40px
;
left
:
0
;
opacity:
0
;
background
:
#1f2024
;
-webkit-border-radius:
0
0
5px
5px
;
-moz-border-radius:
0
0
5px
5px
;
border-radius:
0
0
5px
5px
;
-webkit-transition: opacity .
25
s ease .
1
s;
-moz-transition: opacity .
25
s ease .
1
s;
-o-transition: opacity .
25
s ease .
1
s;
-ms-transition: opacity .
25
s ease .
1
s;
transition: opacity .
25
s ease .
1
s;
}
.menu li:hover > ul { opacity:
1
; }
.menu ul li {
height
:
0
;
overflow
:
hidden
;
padding
:
0
;
-webkit-transition: height .
25
s ease .
1
s;
-moz-transition: height .
25
s ease .
1
s;
-o-transition: height .
25
s ease .
1
s;
-ms-transition: height .
25
s ease .
1
s;
transition: height .
25
s ease .
1
s;
}
.menu li:hover > ul li {
height
:
24px
;
overflow
:
visible
;
padding
:
0
;
}
|
Pondremos el ancho de los vínculos del submenú a 100px. En lugar de bordes izquierdo y derecho,
añadiremos un borde inferior y lo quitaremos del último vínculo.
103
104
105
106
107
108
109
110
111
112
|
.menu ul li a {
width
:
100px
;
padding
:
1px
0
1px
30px
;
margin
:
0
;
border
:
none
;
border-bottom
:
1px
solid
#353539
;
}
.menu ul li:last-child a {
border
:
none
; }
|
Para finalizar sólo necesitamos añadir un icono a
cada vínculo de submenú. Para ello, crearemos una clase personalizada
para cada uno de ellos, y una imagen background.
114
115
116
|
.menu a.argentina {
background
:
url
(../images/flags/flag_Argentina.gif)
no-repeat
6px
center
; }
.menu a.brasil {
background
:
url
(../images/flags/flag_Brasil.gif)
no-repeat
6px
center
; }
.menu a.canada {
background
:
url
(../images/flags/flag_Canada.gif)
no-repeat
6px
center
; }
|
Conclusión
Hemos creado satisfactoriamente este menú desplegable CSS3.
Si tienes alguna pregunta, házmelo saber en los comentarios; intentaré ayudarte, aunque no soy un experto en CSS3.
No olvides dejar algún feedback si lo crees oportuno, y compartirlo con tus amigos.
No hay comentarios:
Publicar un comentario