Я не программист, но я могу модифицировать скрипты из-за некоторых базовых навыков программирования.
У меня есть мой CSS (нужно только работать для современных браузеров):
html {
background: url(bg/random.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Я хочу сделать следующее:
Выполнение этого для каждого раза, когда вы перезагружаете страницу, легко, и я уже успел это сделать. Но здесь идет сложная часть:
В основном высокая производительность не является проблемой. Но чем более гладкая она работает, тем лучше. Я был бы очень рад немного помочь. Неважно, если это PHP, JS, jQuery или что-то еще.
Чтобы получить все файлы в каталоге, вам нужно использовать PHP:
function directoryToArray($directory, $recursive) {
$array_items = array();
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($directory. "/" . $file)) {
if($recursive) {
$array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
}
$file = $directory . "/" . $file;
$array_items[] = preg_replace("/\/\//si", "/", $file);
} else {
$file = $directory . "/" . $file;
$array_items[] = preg_replace("/\/\//si", "/", $file);
}
}
}
closedir($handle);
}
return $array_items;
}
(Shoutout @Ruel и его сообщение для этого кода)
Затем вы можете отбросить массив в свой javascript:
<script type="text/javascript">
var images = new Array(
<?php
$images = directoryToArray("bg", true);
for($i = 0; $i < count($images); $i++)
{
echo "\"{$images[$i]}\"";
if($i != (count($images)-1))
echo ",";
}
?>
</script>
Теперь, когда у вас есть массив, просто измените изображение наMouseMove:
$("body").mousemove(function(){
$(this).css("background", "url('" + images[Math.floor(Math.random() * images.length)]+"')");
});
Во-первых, получите все изображения в каталоге с PHP.
<?php
$images = array_map('basename', glob('path/to/images/*{.gif,*.GIF,*.jpg,*.JPG,*.jpeg,*.JPEG,*.png,*.PNG}', GLOB_BRACE));
?>
Это получает все изображения в path/to/images
папки path/to/images
. basename()
разделяет весь абсолютный путь и просто получает массив имен файлов.
Теперь нам нужно будет что-то сделать с ними в JavaScript, поэтому на вашей веб-странице пусть помещается в массив JavaScript:
<script>
var images = <?php print json_encode($images); ?>;
</script>
Используя json_encode()
, мы преобразовали массив PHP в массив, который может использовать JavaScript.
Затем представьте предварительную загрузку изображений (я сам поклонник jQuery).
<script>
(function ($) {
$(function () {
var images = <?php print json_encode($images); ?>;
$.each(images, function (i, image) {
$('<img src="path/to/images/'+image+'" style="width: 1px; height: 1px; left: -9999px;">').appendTo($('body'));
});
});
})(jQuery);
</script>
Then we can attach a 'mousemove' event:
<script>
(function ($) {
$(function () {
var images = <?php print json_encode($images); ?>;
$.each(images, function (i, image) {
$('<img src="path/to/images/'+image+'" class="random_image">').appendTo($('body'));
});
var x = 0, y = 0;
$(document).mousemove(function (v) {
var nx = v.clientX, ny = v.clientY;
if (Math.abs(nx-x) + Math.abs(ny-y) > 50) {
$('.random_image').removeClass('show').eq(Math.floor(Math.random()*images.length)).addClass('show');
x = nx;
y = ny;
}
}).mousemove();
});
})(jQuery);
</script>