zoukankan      html  css  js  c++  java
  • jQuery 实现多页面换肤

    https://bbs.csdn.net/topics/391856515

    换肤有很多种,这里使用选择皮肤时,jQuery动态加载css,并且保存到cookie中,以实现下一次登陆时,自动使用当前皮肤。
    多页面换肤其实和单页面换肤差不多,只需要把换肤函数作为一个公共函数,每个页面调用。

    具体步骤(看代码):
    简单做了两个页面index.html,base.html,以实现在其中一个切换皮肤后,另外一个页面也可以自动更换皮肤。
    index.html:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link href="css/style1.css" rel="stylesheet" type="text/css">
        <script src="js/jquery-2.0.3.min.js"></script>
        <script src="js/jquery.cookie.js"></script>

        <title>换肤效果</title>
    </head>
    <body>
        <div class="wap">
            <span>我是页面1</span>
            <ul>
                <li value="1">黄色</li>
                <li value="2">绿色</li>
                <li value="3">蓝色</li>
            </ul>
        </div>
    <h2><a href="base.html">转到base.html</a></h2>
        <script src="js/app.js"></script>
    </body>
    </html>

    base.html:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <script src="js/jquery-2.0.3.min.js"></script>
        <script src="js/jquery.cookie.js"></script>

        <title>换肤效果</title>
    </head>
    <body>
    <div class="wap">
        <span>我是页面2</span>
        <ul>
            <li value="1">黄色</li>
            <li value="2">绿色</li>
            <li value="3">蓝色</li>
        </ul>
        <button>确定</button>
    </div>
    <h2><a href="index.html">转到index.html</a></h2>
    <script src="js/app.js"></script>
    </body>
    </html>

    这里只是实现功能,所以样式很简单,只设置背景颜色的更换
    style1.css:
    .wap{
         80%;
        height: 400px;
        margin: 20px auto;
       yellow;
    }
    ul{
        float: right;
    }
    ul li{
        list-style: none;
    }
    ul li:hover{
        gainsboro;
    }
    ul li .selected{
        #e0e0e0;
    }

    style2.css:
    .wap{
         80%;
        height: 400px;
        margin: 20px auto;
       green;
    }
    ul{
        float: right;
    }
    ul li{
        list-style: none;
    }
    ul li:hover{
        gainsboro;
    }
    ul li .selected{
        #e0e0e0;
    }

    style3.css:
    .wap{
         80%;
        height: 400px;
        margin: 20px auto;
        blue;
    }
    ul{
        float: right;
    }
    ul li{
        list-style: none;
    }
    ul li:hover{
        gainsboro;
    }
    ul li .selected{
        #e0e0e0;
    }

    最主要就是js部分,由于功能比较简单,js比较少,我把所有的js都放在一个js文件了
    app.js:
    /*选择皮肤*/
    +function(){
        /*选择皮肤事件*/
        $(".wap").find("ul").find("li").on('click', function () {
            $(this).addClass("selected");/*给当前主题添加selected样式*/
            $(this).siblings().removeClass("selected");
            console.log("gjafsdsa");
            change_theme($(this).val());//改变主题
        });
        console.log("aaa");
        /*读取cookie*/
        var change_theme_id = $.cookie("change_theme_id");
        /*如果cookie 存在 则使用cookie保存的样式*/
        if(change_theme_id){
            change_theme(change_theme_id);
        }
        /* 改变皮肤函数 */
        function change_theme(change_theme_id){
            /*加载css*/
            $("<link>").attr({rel:"stylesheet",
                                type:"text/css",
                                href:"css/style"+change_theme_id+".css"})
                .appendTo("head");
            /*保存到cookie中,保存100天*/
            $.cookie("change_theme_id",change_theme_id,{expires:100});
        }
    }();

    值得注意的是:
    我是使用cookie记录选择设置的主题皮肤样式,但是当cookie到期或者清除了浏览器的COOKIE,亦或者换用其他浏览器浏览时,当前设置的主题就会失效。为了让用户永久保存选择的主题样式,必须将所选的主题与用户信息对应,并写入数据库,下次该用户登录就可以直接读取主题,当然,该方法应用在有用户权限范围的系统,如后台管理系统,个人中心等。

    到了这里,多页面换肤也就完成了,喜欢的小伙伴赶快试试吧

  • 相关阅读:
    Jquery fancybox 可以实现在当前页面弹出框
    http下载
    使用Fat 直接运行Java中自定义的main方法
    Tomcat 中配置直接请求(不带项目名请求)
    java 解压
    文件压缩到zip
    导出excel 头部文件
    NPOI 动态添加行
    ICSharpCode.SharpZipLib.Zip.ZipException: EOF in header
    elasticsearch配置
  • 原文地址:https://www.cnblogs.com/Ao-min/p/13842225.html
Copyright © 2011-2022 走看看