Comunidad de diseño web y desarrollo en internet online

pseudo clase active en el link

Citar            
MensajeEscrito el 09 Ago 2007 07:20 am
Hola a todos, estoy haciendo una web en php, la cual tengo el menú en una pagina que se llama menu.php, que la llamo desde el index con un include("menu.php").
Es este menú, quero que la parte del menu activo, aparezca con otra imagen, pero cuando presiono en el link, y cambio de página, por ejemplo del index.php a index.php?mod=servicios, (decir que el ?mod=servicios, no lo coje del index, si no de un servicios.php que cargo en el index através de la funcion "case") vuelve a poner la imagen original. el codigo del css es es siguiente:

Código CSS
.navenlace a {
background-image: url(../Images/button1.gif);
color: #666666;
text-decoration: none;
display: block;
width: 100%;
height: 35px;
font-family: Tahoma;
font-weight: bold;
text-indent: 25px;
font-size: 10px;
text-transform: uppercase;
text-align: left;
height: 35px;
line-height: 35px;
width: 237px;

}

.navenlace a:hover {
background-image: url(../Images/button.gif);
color: #0033FF;
font-size: 11px;
}

.navenlace a:active a:visited {
background-image: url(../Images/button.gif);
color: #0033FF;
font-size: 11px;
}

He leido que la funcion active, solo funciona en enlaces sobre la misma página, de hecho si en el href pongo<a class="navenlace" href= "#">, sí me funciona, pero si en lugar de "#" le pongo una dirección real como "index.php?mod=servicios", me carga una nueva página, y vuelve a aparecer el menu normal (sin el active)
Como podría hacer para que aparezca el active, independientemente del linK?? El menú, como ya os había dicho, lo carga desde un archivo llamado menu.php.
Se puede hacer con css, o ademas tambien necesito alguna condicion en php tipo "si la dirección de la web es tal, cargar como menu active, el menu correspondiente, si la dirección es cual, cargar como menu active el menu cual etc...."
Para este caso se podría crear un elemento active para esa condicion en css:

#elemento_activo a:active a:link a:visited a:hover {
background-image: url(../Images/button.gif);
color: #0033FF;
font-size: 11px;
}

que sería en que cargase en la condición anterior de php, cuando el elemento está active??
gracias

Por chua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2007 08:14 am
La pseudo clase active solo funciona cuando das click y no sueltas el botón del mouse, normalmente suele verse una borde punteado alrededor.

Lo que tu necesitas es crear una clase .active

Código :

.navenlace a.active, .navenlace a:visited { ... }


Pero tendrás que usar algo de php para agregar la clase a cada enlace. Una función rápida seria revisar una variable GET, y si la variable concuerda con un string que tu ofrezcas se escriba class="active".

Código :

function nav(a, b){
  if(a ==b){
    echo ' class="active" ';
  }
}


Luego solo la usarias asi.

Código :

<li class="navenlace"><a href="index.php?mod=servicios" <?php nav($_GET['mod'], 'servicios'); ?> >Servicios</a></li>

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

firefox
Citar            
MensajeEscrito el 09 Ago 2007 09:36 am
Hola Neo, ante todo gracias por la respuesta.
Pero tengo una duda,
dondo pongo el código

function nav(a, b){
if(a ==b){
echo ' class="active" ';
}
}
Me imagino que en el menu.php.
Me imagino que esto lo que hace es añadir el class="active" dentro de la etiqueta <a> no?

Por chua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2007 03:21 pm
Eso depende de ti.

Puedes crear un archivo con funciones genéricas que uses frecuentemente y ya solo las mandas llamar.

Código :

include('functions.php');


Ya solo la mandarías llamar cuando fuera necesario.

Por Reymond

Claber

1111 de clabLevel

5 tutoriales
1 articulo

Genero:Masculino  

Mobile developer

firefox
Citar            
MensajeEscrito el 09 Ago 2007 05:05 pm
Hola,
he metido la función en un archvio funciones.php incluido en la capeta funciones y me da el siguiente error:
Parse error: syntax error, unexpected ',', expecting '&' or T_VARIABLE in D:\htdocs\berninteriorismo\funciones\funciones.php on line 2

Por chua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2007 05:11 pm
Y la linea 2 del archivo funciones.php dice?

Por Reymond

Claber

1111 de clabLevel

5 tutoriales
1 articulo

Genero:Masculino  

Mobile developer

firefox
Citar            
MensajeEscrito el 09 Ago 2007 09:21 pm
Esto es lo que pone en funciones.php
1<?php
2function nav(a,b){
3 if(a ==b){
4 echo ' class="active" ';
5 }
6}
7?>

Por chua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2007 09:25 pm
Recuerda que en PHP las variables se ponen de esta forma:

Código :

 $variable   <---- con el $ antes de el nombre de la variable 


Saludos.

Por Reymond

Claber

1111 de clabLevel

5 tutoriales
1 articulo

Genero:Masculino  

Mobile developer

firefox
Citar            
MensajeEscrito el 10 Ago 2007 01:37 am
Oh se me pasó, reymond tiene razón las variables en php deben tener el símbolo dolar como prefijo $.
Este código si debería funcionar, un saludo.

Código :

<?php
function nav($a, $b){
  if($a == $b){
    echo ' class="active" ';
  }
}
?>

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.