首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML:如何在每次访问时更改我的网站背景?

问HTML:如何在每次访问时更改我的网站背景?
EN

Stack Overflow用户
提问于 2010-07-05 21:04:46
回答 4查看 1.3K关注 0票数 1

每次访问时更改网站背景的最佳方法是什么?

1)编写php代码,加载一个包含后台属性的随机css文件;2)编写php代码,生成不同的html (并将后台属性直接包含到html代码3中)?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-05 22:31:46

这可以在你的theme's page.tpl.php variable preprocessor中完成。将随机样式存储在$_SESSION数组中,以便在同一用户会话中的所有页面中重复使用。并将标记附加到模板中使用的$head变量。

代码语言:javascript
复制
YOURTHEME_preprocess_page(&$variables) {
  $style = $_SESSION['YOURTHEME_background_style'];
  if (!$style) {
    $style = array();
    //Generate your random CSS here
    $style = "background-image: url('bg-". rand(0,10) .".png')";
    $_SESSION['YOURTHEME_background_style'] = $style;
  }
  $variables['head'] .= '<style type="text/css">body {'. implode("\n", $style) .'}</style>';
}

通常,在page.tpl.php模板中,$head被放在$style之前,因此来自任何.css文件的CSS规则将覆盖您的随机规则。你可能不得不在你的随机CSS中使用!important来避免这种情况。

票数 1
EN

Stack Overflow用户

发布于 2010-07-05 21:12:35

我可能会:

  1. 使用hook_user op登录来检测登录,然后将背景颜色代码存储在用户对象中。页面模板中的
  2. 使用存储在用户对象上的值为背景颜色创建内联样式。匿名用户什么也不做,并在样式表中定义了default。
票数 0
EN

Stack Overflow用户

发布于 2010-07-05 21:31:28

使用会话cookie。可以通过js (客户端)或类似php (服务器端)的方式进行设置。下面是一个仅限js的解决方案的示例:

代码语言:javascript
复制
<!doctype html>
<html><head><script>

var backgrounds=['foo.png', 'bar.png', 'hahah.png'];

function setBg () {
  var currentBg=readCookie('which_bg');
  if (!currentBg) {
    currentBg=backgrounds[Math.random()*backgrounds.length|0];
    createCookie('which_bg', currentBg);
  }
  document.body.style.backgroundImage='url('+currentBg+')';
}

// from http://www.quirksmode.org/js/cookies.html

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for (var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

</script></head>
<body onload="setBg();">
...
</body></html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3179663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档