javascript+css 网页每次加载不同样式的实现方法


Posted in Javascript onDecember 27, 2009

【明确需求】
网页加载样式表default.css,会展现默认风格。同时为实现多种风格,制作了skin1.css,skin2.css,skin3.css三种定制样式。如果在加载default.css后,再加载其中某一样式表,则会覆盖默认风格,展示新风格;
每次随机加载skin1.css、skin2.css、skin3.css,或者使用默认风格。需要注意的一点是,随机加载也有可能使这一次和上一次的样式相同。
【实现思路】
使用document.write动态向<head />中写入css载入语句;
通过生成的随机数,随机加载样式表;
使用cookie机制记录当前风格,确保下次下次风格与当前风格一定不同。
【实现代码】
比较简单,我这里就直接贴代码了,里面略加注释:

var Init = { 
//样式表文件目录路径 
    baseSkinUrl : "/blog/css/skin/", 
    //样式表文件名称列表 
    styles : ["default", "skin1", "skin2", "skin3"], 
    //样式cookie的key值 
    cookieKey : "css9_blog_random_css", 
    //定义方法,获取min至max间的随机数,包含min及max 
    getRandomNum : function(min, max){ 
        return min + Math.floor(Math.random() * (max - min + 1)); 
    }, 
    //定义方法,获取cookie值 
    getCookie : function(name) { 
        var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); 
        if (arr != null) { 
            return unescape(arr[2]); 
        } 
        return null; 
    }, 
    //定义方法,设置cookie值 
    setCookie : function(sName,sValue,objHours,sPath,sDomain,bSecure){ 
        var sCookie = sName + "=" + encodeURIComponent(sValue); 
        if (objHours) { 
            var date = new Date(); 
            var ms = objHours * 3600 * 1000; 
            date.setTime(date.getTime() + ms); 
            sCookie += ";expires=" + date.toGMTString(); 
        } 
        if (sPath) { 
            sCookie += ";path=" + sPath; 
        } 
        if (sDomain) { 
            sCookie += ";domain=" + sDomain; 
        } 
        if (bSecure) { 
            sCookie += ";secure"; 
        } 
        document.cookie=sCookie; 
    }, 
//定义方法,通过获取随机数随机加载CSS 
    loadCSS : function(){ 
        var length = this.styles.length, 
         random = this.getRandomNum(0, length-1), 
         cookieStyle = this.getCookie(this.cookieKey), 
         currentStyle = "default"; 
        //如果当前随机取到的样式与cookie中样式相同,则重新计算随机数 
while(this.styles[random] == cookieStyle) 
        { 
            random = this.getRandomNum(0, length-1) 
        } 
        currentStyle = this.styles[random]; 
        //将新样式存入cookie,cookie有效时间为24小时 
this.setCookie(this.cookieKey, currentStyle, 24, "/", "css9.net", false); 
        //若样式名称不为"default"默认样式,则向<head />标签中写入定制样式 
if(currentStyle != "default") 
        { 
            document.write('<link rel="stylesheet" type="text/css" 
href="' + this.baseSkinUrl + this.styles[random] + '.css" />'); 
        }         
    } 
} 
Init.loadCSS(); //执行随机加载CSS方法

将上面js代码保存为Init.js文件,并在<head />中加载该js文件。

使用提示: 如果你的网页中已经使用了jquery,那么可以用我之前介绍的jQuery cookie操作插件实现cookie的读写操作,不必再定义代码中的setCookie和getCookie方法。

Javascript 相关文章推荐
微博@符号的用户名提示效果。(想@到谁?)
Nov 05 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
在JavaScript中处理数组之reverse()方法的使用
Jun 09 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
Oct 04 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
微信小程序“摇一摇”的实例代码
Jul 20 Javascript
微信小程序获取微信运动步数的实例代码
Jul 20 Javascript
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
Feb 26 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
Dec 27 #Javascript
jQuery中的常用事件总结
Dec 27 #Javascript
jQuery 动态酷效果实现总结
Dec 27 #Javascript
javascript 清空form表单中某种元素的值
Dec 26 #Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 #Javascript
十分钟打造AutoComplete自动完成效果代码
Dec 26 #Javascript
jQuery 常见开发使用技巧总结
Dec 26 #Javascript
You might like
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
东方红 - 来复式再生机的修复
2021/03/02 无线电
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
Javascript学习指南
2014/12/01 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
详解vue v-model
2020/08/31 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
python3 map函数和filter函数详解
2019/08/26 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Python 操作 MySQL数据库
2020/09/18 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
领导班子自我剖析材料
2014/08/16 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
员工年终考核评语
2014/12/31 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
离婚上诉状范文
2015/05/23 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
Win11开始菜单添加休眠选项
2022/04/19 数码科技