php - 循环随机背景图像

标签 php jquery html

我想显示一个随机背景图像,它会在五秒后启动随机其他背景图像的循环。

首先我为我的背景图像创建一个数组:

<?php
  $bg = array('bg1.jpg', 'bg2.jpg', 'bg3.jpg', 'bg4.jpg', 'bg5.jpg', 'bg6.jpg', 'bg7.jpg', 'bg8.jpg', 'bg9.jpg', 'bg10.jpg', 'bg11.jpg');
  $i = rand(0, count($bg)-1);
  $selectedBg = "$bg[$i]";
?>

第二我将随机图像附加到我的 body 上:

<style>
 @media screen and (min-width: 600px) {
    body {
      background-image: url(<?php bloginfo('template_url'); ?>/images/backgrounds/<?php echo $selectedBg; ?>);
    }
 }
</style>

现在我想使用phpjQuery来选择另一个随机图像并更改背景。我怎样才能实现这个目标?

最佳答案

如果您想每 5 秒循环一次背景图像(无需用户重新加载页面),则无法在 PHP 上执行此操作,必须在客户端(Javascript)上完成。

PHP 是一个生成 HTML 代码的工具,该代码将在用户的浏览器上呈现,但它无法在之后更改页面,而这正是 javascript 的用途。

<script type="text/javascript">

    // declare list of backgrounds
    var images = ['bg-01.jpg', 'bg-02.jpg', 'bg-03.jpg', 'bg-04.jpg', 'bg-05.jpg', 'bg-06.jpg', 'bg-07.jpg'];

    // declare function that changes the background
    function setRandomBackground() {
        // choose random background
        var randomBackground = images[Math.floor(Math.random() * images.length)];

        // set background with jQuery
        $('body').css('background-image', 'url("images/' + randomBackground + '")');
    }

    // declare function that sets the initial background, and starts the loop.
    function startLoop() {
        // Set initial background.
        setRandomBackground();

        // Tell browser to execute the setRandomBackground every 5 seconds.
        setInterval(setRandomBackground, 5 * 1000);
    }

    // One the page has finished loading, execute the startLoop function
    $(document).ready(startLoop);

</script>

关于php - 循环随机背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32307026/

相关文章:

javascript - 如何刷新页面中的特定div?

jquery - 通过Class rating css改变ID的值

jquery - 如何剪切背景图像以正确延迟加载?

PHP - 替换拆分

php - 奇怪的是,ajax 响应包含空格

javascript - jquery 的 val() 有时不适用于 IE 上的 select 元素

php - 我有这个wordpress模板注册页面,该页面在行上显示错误,但该行上没有任何内容

css - 图像不显示在 div 中

php - 如何连续存储字段Id?

php - 匹配多个列值以获取记录匹配百分比