其实这个功能几个月前都实现了,但是写法有些问题,打算修改下,换个写法。
思路
提取网站下的images里的background文件夹里6张图里的随机取一张图,作为网页背景。
js直接放在了header.php尾部。
用在自己网站的代码
<script>
bg_img= ['<?php $this->options->themeUrl('images/background/1.jpg'); ?>',
'<?php $this->options->themeUrl('images/background/2.jpg'); ?>',
'<?php $this->options->themeUrl('images/background/3.jpg'); ?>',
'<?php $this->options->themeUrl('images/background/4.jpg'); ?>',
'<?php $this->options->themeUrl('images/background/5.jpg'); ?>',
'<?php $this->options->themeUrl('images/background/6.jpg'); ?>']; //调用图片路径(我网站模板是用的themeUrl函数获取当前模板路径,根据实际情况决定怎么写)
document.getElementsByTagName("body")[0].style.background = "url("+bg_img[Math.floor(Math.random()*(bg_img.length))]+")";//随机背景图
document.getElementsByTagName("body")[0].style.backgroundPosition = "center";
document.getElementsByTagName("body")[0].style.backgroundRepeat = "no-repeat";
document.getElementsByTagName("body")[0].style.backgroundAttachment = "fixed";
</script>
不用php也可以这样写
<script>
bg_img = ["http://xxxx/1.jpg",
"http://xxx/2.jpg",
"http://xxx/3.jpg",
"http://xxx/4.jpg",
"http://xxx/5.jpg",
"http://xxx/6.jpg"]; //调用图片地址/路径(改为自己的)
document.getElementsByTagName("body")[0].style.background = "url("+bg_img[Math.floor(Math.random()*(bg_img.length))]+")";//随机背景图
document.getElementsByTagName("body")[0].style.backgroundPosition = "center";
document.getElementsByTagName("body")[0].style.backgroundRepeat = "no-repeat";
document.getElementsByTagName("body")[0].style.backgroundAttachment = "fixed";
</script>
写的时候遇到的问题
开始错用了document.body ,发现这个除了IE,其他浏览器都不认。
改为了document.getElementsByTagName。
开始为了图方便 把JS文件放到头部了。导致执行这个js的时候,body还没有出现的情况,一般js要放在html末尾(
关于getElementsByTagName()
getElementsByTagName() 方法可返回带有指定标签名的对象的集合。
语法
document.getElementsByTagName(tagname)
返回值
类型:NodeList 对象,描述:指定标签名的元素集合
浏览器支持
所有主要浏览器都支持 getElementsByTagName() 方法