Javascript 如何让用户自定义背景图像?

Javascript 如何让用户自定义背景图像?,javascript,css,image,background,skinning,Javascript,Css,Image,Background,Skinning,现在很多网站都有“主题化”功能,用户可以自定义页面的外观。有时它只是一组固定的主题,但有时人们可以自由选择他们想要的任何样式——例如,他们可以设置页面背景的任何颜色 我想更进一步,让他们也选择背景图像。流程非常简单:用户上传一个文件(通过),然后该文件成为背景图像-但仅限于此用户 不过,我在网上找不到有关此功能的任何信息,我也不知道该怎么做 我在想的另一件事是,如果用户选择了一个背景,也许我可以使用HTML5localstorage,让访问者每次访问页面时都能看到该背景。下面是一个概念证明(主要

现在很多网站都有“主题化”功能,用户可以自定义页面的外观。有时它只是一组固定的主题,但有时人们可以自由选择他们想要的任何样式——例如,他们可以设置页面背景的任何颜色

我想更进一步,让他们也选择背景图像。流程非常简单:用户上传一个文件(通过
),然后该文件成为背景图像-但仅限于此用户

不过,我在网上找不到有关此功能的任何信息,我也不知道该怎么做

我在想的另一件事是,如果用户选择了一个背景,也许我可以使用HTML5
localstorage
,让访问者每次访问页面时都能看到该背景。

下面是一个概念证明(主要基于+上给出的代码):

HTML

<input id="test" type="file" onchange="loadImageFile(this)" />

这里有一个最新的Firefox和Chrome版本。至少看起来还可以。)

这里有一个快速解决这个问题的方法

custom-background.js是一个轻量级jQuery插件,允许用户更改网站的默认背景,并将所选背景保存到本地存储。此插件可以轻松添加到任何网站或web应用程序,而不会影响网站的性能

你可以从这里下载并检查代码

请描述您的问题,这样人们才能真正了解您希望获得多少用户?你允许改变这些背景吗?)您甚至没有对此进行投票,因为如果只涉及客户端,它实际上可能是一项相当有趣的任务。)对于服务器端来说,这是微不足道的,但同样,没有提到服务器端。。。但是,让我们明确一点,你在编辑之前的问题不适合,这就是为什么我认为它是关闭的。它充满了“我想要”和“我尝试过”的问题:如何让用户从本地存储中删除背景图像,将背景设置为“无”?使用
localstorage.removietem
要删除图像,请向
switchBackground()添加另一个分支
(因此,如果
backgroundImage
为空,
backgroundImage
将重置为
none
)。@raina770w你能做一个JS提琴吗?@DaKoder。但是告诉我,我不是已经详细描述了这种方法,很容易将其转换为代码吗?)
$(switchBackground);
var oFReader = new FileReader(),
    rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;

oFReader.onload = function(oFREvent) {
    localStorage.setItem('b', oFREvent.target.result);
    switchBackground();
};

function switchBackground() {
  var backgroundImage = localStorage.getItem('b');
  if (backgroundImage) {
    $('body').css('background-image', 'url(' + backgroundImage + ')');    
  } 
}

function loadImageFile(testEl) {
  if (! testEl.files.length) { return; }
  var oFile = testEl.files[0];
  if (!rFilter.test(oFile.type)) { alert("You must select a valid image file!"); return; }
  oFReader.readAsDataURL(oFile);
}