【问题标题】:Create random background on one section of a single-page scroll website在单页滚动网站的一个部分创建随机背景
【发布时间】:2012-11-14 06:21:13
【问题描述】:

我正在寻找代码来随机化单页滚动网站的一个部分上的背景图像。我已经研究了这样做的方法(php/js/html 的东西;one exsecond ex),但我无法让它们工作,因为我不希望图像适用于所有页面/部分,我不希望它出现在 HTML 的“正文”中。”请指教!

目前,我使用单个类的backgound-image 代码更改 CSS 中的背景。

【问题讨论】:

  • 当你说随机化背景是指在页面加载时,还是在滚动时,两者的处理方式不同。
  • “网站的一部分”到底是什么意思?
  • @chris:我的意思是页面加载。感谢您的提问。
  • @Misch:因为它是一个单页滚动网站,所以每个页面实际上只是同一页面的一部分。如果有帮助,您可以在 jacklynn.com/thirdprinciple 查看它!

标签: css image background background-image


【解决方案1】:

这是随机化背景图像的 PHP 代码:

<?php

$bg = array('bg-01.jpg', 'bg-02.jpg', 'bg-03.jpg', 'bg-04.jpg', 'bg-05.jpg', 'bg-06.jpg', 'bg-07.jpg' ); // array of filenames

$i = rand(0, count($bg)-1); // generate random number size of the array
$selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen        
?>

还有:

<style type="text/css">
.mydiv{
    background: url(images/<?php echo $selectedBg; ?>) no-repeat;
    height:300px;
    width:300px;
}
</style>
<div class="mydiv">

</div>

这是随机化背景图像的 JavaScript 和 JQuery 解决方案:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
var images = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
$('.mydiv').css({
    'background-image': 'url(/path/to/images/' + images[Math.floor(Math.random() *      images.length)] + ')'
});
</script>

查看实际操作(点击左上角的运行以随机化图像):http://jsfiddle.net/Kf6sb/

【讨论】:

  • 谢谢,贾斯汀。我想问题是什么都没有出现。如果有帮助,您可以在此处查看该网站:jacklynn.com/thirdprinciple。我将您拥有的代码放在适当的位置,并从 css 中删除了“背景图像”,但仍然没有任何显示(我现在把它放回去,因为我的客户现在正在网站上获得反馈)。但是您仍然可以在“.top”类的 HTML 中看到代码。也许我做错了?
  • 我注意到我不小心没有更改两个 div 名称,所以我更改了它,但它仍然不起作用。
  • 您的 PHP 代码没有在服务器上运行,它只是将它作为文本打印出来。所以这就是问题所在。如果你想使用上面的代码,你必须打电话给你的主机并弄清楚为什么 PHP 没有运行。或者您可以使用纯 JavaScript 解决方案。我将更新我的答案,说明如何做到这一点。
  • 贾斯汀,非常感谢您的建议,但仍然无法正常工作。我觉得它没有拉图像。由于 300px div,它会移动东西,但里面不会有图像。所以我尝试了你建议的第二件事,把这段代码放在.top 是所有内容所在的当前 div 中:&lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt; &lt;script&gt; var images = ['1.jpg', '2.jpg', '3.jpg']; $('.top').css({ 'background-image': 'url(/css/img/bg' + images[Math.floor(Math.random() * images.length)] + ')' }); &lt;/script&gt; 我很烂。
  • /css/img/bg 更改为css/img/bg//thirdprinciple/css/img/bg/
【解决方案2】:

您也可以使用 javascript/jquery 来执行此操作。与上面 Justin 非常相似,只是它不会由 PHP 处理,也不需要 in page css。

var uri = 'http://example.com';
var img_folder = '/images/';
var img_files = ['bg-01.jpg', 'bg-02.jpg', 'bg-03.jpg', 'bg-04.jpg', 'bg-05.jpg', 'bg-06.jpg', 'bg-07.jpg'];

function randomBackground()
{
   var random_image = img_files[Math.floor(Math.random()*img_files.length)];
   $('body').css({"background-image":"url("+random_image+")"});
}

//when the page loads
$(document).ready(function()
{
    randomBackground();
});

//an example of changing it on a timer at random
setInterval(function(){randomBackground();}, 300000);

//example of changing it on click
$('#someIDofSomeElement').click(function(){randomBackground();}

值得一提的是,这是纯粹的概念,未经测试,但在某种程度上,如果不是这样,这应该可以工作。但是同样,这不是一成不变的方法,正如上面所展示的那样,有 PHP 的方法,或者任何语言可以做到这一点,我还可能想到十几种方法来添加它,以不同的方式做,或者去做吧。

【讨论】:

  • 克里斯,我如何将它连接到适当的页面?我看到了#someIDofSomeElement,但这适用于单页滚动的一部分吗?我对如何实施这个建议有点困惑,但谢谢。
  • 那么上面的代码只会改变背景图像.. 与身体相关的其余 css 及其属性可以留在外部 CSS 文件中,以防止背景移动你会做类似body{background-repeat:no-repeat;background-attachment:fixed;} 在样式表中应用样式不会改变 JS 正在做的事情。
  • 另外我注意到我上面的代码有一个小错误我调整了它,
猜你喜欢
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多