Foros del Web » Programando para Internet » Javascript »

CSS según resolución

Estas en el tema de CSS según resolución en el foro de Javascript en Foros del Web. Pues eso, tengo tres plantillas CSS que quiero cargar según la resolución del usuario, pero no me funciona el código, a ver si podeis ayudarme: ...
  #1 (permalink)  
Antiguo 07/08/2010, 18:24
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
CSS según resolución

Pues eso, tengo tres plantillas CSS que quiero cargar según la resolución del usuario, pero no me funciona el código, a ver si podeis ayudarme:

Código:
<script type="text/javascript">
if(screen.width<=750) document.write('<link href="css/r750.css" rel="stylesheet" type="text/css" />');
	else if(screen.width<=1180) document.write('<link href="css/r1180.css" rel="stylesheet" type="text/css" />');
		else document.write('<link href="css/r1440.css" rel="stylesheet" type="text/css" />');
document.write('<link href="css/r1440.css" rel="stylesheet" type="text/css" />')
</script>
¿Alguna idea? Gracias
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #2 (permalink)  
Antiguo 07/08/2010, 20:10
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: CSS según resolución

Una alternativa en CSS3 es utilizar expresiones de JavaScript dentro del mismo código CSS, por ejemplo:

Código CSS:
Ver original
  1. #pageWidth
  2.     {
  3.     width:expression((document.body.clientWidth < 980)? "750px" : "980px");
  4.     }

Respecto a la opción que buscas, el código JavaScript para incrustar archivos CSS sería el siguiente:

Código Javascript:
Ver original
  1. var link = document.createElement('link');
  2. link.setAttribute('href', 'r750.css');
  3. link.setAttribute('rel', 'stylesheet');
  4. link.setAttribute('type', 'text/css');
  5. var head = document.getElementsByTagName('head').item(0);
  6. head.appendChild(link);
  #3 (permalink)  
Antiguo 08/08/2010, 07:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: CSS según resolución

Gracias por la rápida contestación.

Mmmh.... aunque la alternativa en CSS3 parece realmente fácil, según tengo entendido CSS3 aún no está adoptado por la mayoría de los navegadores, por lo que el tema de compatibilidad me preocupa.

Creo que me quedaré con javascript. De todas formas, no me termina de funcionar. Algo andaré haciendo mal.

Entre las etiquetas head, coloco este código:

Código:
<script type="text/javascript">
var link = document.createElement('link');
if(screen.width<=750) {
	link.setAttribute('href', 'r750.css');
	link.setAttribute('rel', 'stylesheet');
	link.setAttribute('type', 'text/css');
	var head = document.getElementsByTagName('head').item(0);
	head.appendChild(link);
	}
	else if(screen.width<=1180) {
		link.setAttribute('href', 'r1180.css');
		link.setAttribute('rel', 'stylesheet');
		link.setAttribute('type', 'text/css');
		var head = document.getElementsByTagName('head').item(0);
		head.appendChild(link);
		}
		else {
			link.setAttribute('href', 'r1440.css');
			link.setAttribute('rel', 'stylesheet');
			link.setAttribute('type', 'text/css');
			var head = document.getElementsByTagName('head').item(0);
			head.appendChild(link);
			}

</script>
Yo creo que mi error a lo mejor está en que tengo los archivos CSS en una carpeta con el mismo nombre: ...css/r1440.css
El caso es que he probado también a poner: link.setAttribute('href', 'css/r1440.css');
pero tampoco va ¿alguna idea?
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #4 (permalink)  
Antiguo 08/08/2010, 07:07
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: CSS según resolución

Es curioso, porque si pongo el código tal cual sin utilizar ninguna estructura if y poniéndole la ruta de la carpeta, sí que funciona.
Pero en cuanto lo meto en el if, ya no.

Y además estoy seguro de que se mete correctamente en el if
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #5 (permalink)  
Antiguo 08/08/2010, 07:14
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: CSS según resolución

Ok, ya he visto el error. El código funciona perfectamente. Había sido un espacio en blanco en el nombre del archivo ¬.¬''

Gracias de nuevo. Chao!
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #6 (permalink)  
Antiguo 08/08/2010, 07:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: CSS según resolución

Hola

Prueba a poner una id al tag que vincula tu hoja css, por ejemplo hojaStilos

Código Javascript:
Ver original
  1. var hCSS ="estilospordefecto.css";
  2. if(screen.width <=750){
  3. hCSS = "e750.css";
  4. }
  5. else if(screen.width<=1180) {
  6. hCSS = "e1180.css";
  7. }else{
  8. hCSS = "e1440.css";
  9. }
  10. document.getElementById('hojaStilos').href = hCSS;
  11. }
Parece más sencillo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 08/08/2010, 11:23
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: CSS según resolución

Mmmh... estoy probando esto, pero no consigo que funcione:

Código:
<script type="text/javascript">
var hCSS ="estilospordefecto.css";
if(screen.width <=750){
	hCSS = "css/r750.css";
	}
	else if(screen.width<=1180) {
		hCSS = "css/r1180.css";
		}
		else{
			hCSS = "css/r1400.css";
			}
document.getElementById('hojaStilos').href = hCSS;

</script>
<link href="" id="hojaStilos" rel="stylesheet" type="text/css" />
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #8 (permalink)  
Antiguo 08/08/2010, 15:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: CSS según resolución

Hola

Al revés. Primero ha de existir
Código Javascript:
Ver original
  1. <link href="" id="hojaStilos" rel="stylesheet" type="text/css" />
  2. <script type="text/javascript">
  3. var hCSS ="estilospordefecto.css";
  4. if(screen.width <=750){
  5.     hCSS = "css/r750.css";
  6.     }
  7.     else if(screen.width<=1180) {
  8.         hCSS = "css/r1180.css";
  9.         }
  10.         else{
  11.             hCSS = "css/r1400.css";
  12.             }
  13. document.getElementById('hojaStilos').href = hCSS;
  14.  
  15. </script>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 08/08/2010, 15:32
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: CSS según resolución

Gracias! Ahora si que funciona todo perfectamente.
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #10 (permalink)  
Antiguo 08/08/2010, 23:40
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: CSS según resolución

Es una excelente solución la que propone "Adler". Mas práctica (en programacion, mientras menor código mejor).

Solo un detalle vrael: si te preocula la compatibilidad, deberias usar...

Código XML:
Ver original
  1. <link href="estilospordefecto.css" id="hojaStilos" rel="stylesheet" type="text/css" />

Ya que es posible que el explorador no soporte Java Script.

Etiquetas: css, resolución
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:29.