Me preguntaba ¿cuál es la mejor manera de llamar a un archivo CSS al azar en la página de actualización con Javascript?Cargar CSS al azar en la página de actualización
Muchas gracias
Me preguntaba ¿cuál es la mejor manera de llamar a un archivo CSS al azar en la página de actualización con Javascript?Cargar CSS al azar en la página de actualización
Muchas gracias
Gracias por su consejo, no se dio cuenta que era posible con una simple línea de php y en realidad encontró que este método era bastante corto y dulce
<link href="/styles/<?php echo mt_rand(1, 5); ?>.css" rel="stylesheet" type="text/css"/>
encontrado aquí, http://forum.mamboserver.com/showthread.php?t=61029
Muchas gracias
ps. A List Apart también tienen una forma bastante simple y brillante para cambiar las imágenes, http://www.alistapart.com/articles/randomizer/
anexar un elemento <link>
en document.ready
.
var randomFileName=Math.random(); // or whatever
$(document).ready(function() {
$('head').append('<link rel="stylesheet" type="text/css" href="' + randomFileName + '.css">');
});
Untested. Como se mencionó anteriormente, es probablemente una idea mejor (leer: más compatible) para un script del lado del servidor escupir un nombre de archivo aleatorio directamente en el HTML de la página en lugar de usar trucos de JS.
Si está usando PHP, se puede leer el directorio de CSS y elegir un archivo aleatorio como esto:
<?php
$css_dir = '/css';
$files = array();
foreach(glob($cssdir.'/*.css') as $file)
{
$array[] = $file;
}
echo '<link rel="stylesheet" type="text/css" href="' . array_rand($files, 1) . '">';
?>
acaba de intentar esta técnica, pero nada se hizo eco a cabo, por lo tanto no hay ningún archivo CSS se carga – egr103
var link = [];
link[0] = "http://site.com/css/style1.css";
link[1] = "http://site.com/css/style2.css";
link[2] = "http://site.com/css/style3.css";
$(function() {
var style = link[Math.floor(Math.random() * link.length)];
$('<link />',{
rel :'stylesheet',
type:'text/css',
href: style
}).appendTo('head');
});
Editar: Gracias albahaca Siddiqui!
var link = [];
link[0] = "http://site.com/css/style1.css";
link[1] = "http://site.com/css/style2.css";
link[2] = "http://site.com/css/style3.css";
$(function() {
var style = link[Math.floor(Math.random() * link.length)];
if (document.createStyleSheet){
document.createStyleSheet(style);
}else{
$('<link />',{
rel :'stylesheet',
type:'text/css',
href: style
}).appendTo('head');
}
});
He intentado esto pero se pone aplica después de la página se ha cargado por lo que el estilo no consigue aplicar – bsiddiqui
@BasilSiddiqui Gracias por notar .. consulte este [tutorial] (http://www.vidalquevedo.com/how-to-load-css-stylesheets-dynamically-with-jquery) para obtener más orientación. ¡Buen día! :) –
Usted puede hacer esto mediante la generación de enlace al azar usando sólo javascript
<p id="demo"></p>
<script>
var r=Math.random();
var x=document.getElementById("demo")
if (r>0.5)
{
x.innerHTML="<a href='http://w3schools.com'>Visit W3Schools</a>";
}
else
{
x.innerHTML="<a href='http://wwf.org'>Visit WWF</a>";
}
</script>
Si desea utilizar Javascript la mejor manera es para cargar todos los estilos aleatorios en un solo archivo de la manera normal.
Luego agregar el prefijo a todos los css al azar con un número como:
.random-1 h1 {
color: blue;
}
.random-2 h1 {
color: red;
}
/* ... etc... */
Después, simplemente agregar una clase al azar al cuerpo con javascript.
document.getElementsByTagName('body')[0].className+=' random-' + Math.floor((Math.random() * 10) + 1);
Esto debería limitar los problemas de carga y procesamiento, y no tiene que preocuparse por cuándo llamar al javascript. (Además, tiene la opción de cambiar a otro estilo aleatorio con más javascript)
(Los problemas de representación dependerán de qué tipo de cambios esté realizando, aunque esto no es diferente de la ocultación y visualización de los objetos DOM que ve en muchos sitios web.)
Esto también haría que tu script de servidor sea más simple. Simplemente agregue una clase al cuerpo cuando cree la página. –
¿Tiene que ser Javascript? Sería mucho más fácil y menos kludgy en el lado del servidor. –
Estoy de acuerdo con Pekka. –
El problema con esto es que cuando se ejecuta su Javascript, su DOM debe completarse, por lo tanto, es posible que el navegador ya haya comenzado a renderizar la página. Cambiar el CSS en este punto interrumpe este flujo y puede ralentizar el renderizado de la página, así como también el usuario, para ver 'flashes' a medida que el navegador cambia de estilos. –