博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现换肤效果
阅读量:4974 次
发布时间:2019-06-12

本文共 2702 字,大约阅读时间需要 9 分钟。

一,js换肤的基本原理

基本原理很简单,就是使用 JS 切换对应的 CSS 样式表文件。例如导航网站 Hao123 的右上方就有网页换肤功能。除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 Cookie 来记录用户之前更换过的皮肤,这样下次用户访问的时候,就可以自动使用上次用户配置的选项。 那么基本工作流程就出来了:访问网页——JS 读取 Cookie ——如果没有,使用默认皮肤——如果有,使用指定皮肤;用户点击换肤选项——JS 控制替换对应的 CSS 样式表——将皮肤选项写进 Cookie 保存。

二,事先需要的准备工作

1,不同的皮肤对应不同的css文件,准备好多套css样式文件:

如蓝色对应:skinColour_blue.css 

黄色对应:skinColour_yellow.css

2,图片存放在不同的皮肤文件夹下:

例如,蓝色对应:blue文件夹;黄色对应:yellow文件夹。

将不同皮肤颜色的图片放在相对应的文件夹里,图片切换原理:在换肤函数里设置img标签的src路径属性来切换图片。

三,换肤实现的过程

1,在网页开头引入css文件

2,在页面上定义2个皮肤切换按钮

蓝色黄色

3,在js的代码,通过函数触发切换<link>标签的css路径,和图片的路径,来实现换肤

//把引入皮肤css路径
标签选出来var cssStyle = document.getElementById('skinColour');//换肤函数function changeSyle(name) {
event.stopPropagation();cssStyle.href = "Content/aps/skinColour_" + name + ".css";//保存肤色名setStorage("skinName", name);//切换图片的路径$('.home-bReturn').attr('src', 'img/' + name + '/home_yzl_8.png');$('.home-bHome').attr('src', 'img/' + name + '/home_yzl_7.png');}//html5设置本地存储function setStorage(sname, vul) {
window.localStorage.setItem(sname, vul);}function getStorage(attr) {
var str = window.localStorage.getItem(attr);return str;}//访问本地存储,获取皮肤名var cssName = getStorage("skinName");//判断是否有皮肤名,就使用获取的皮肤名,没有就用默认的if (cssName && cssName != null) {
cssStyle.href = "Content/aps/skinColour_" + cssName + ".css";//设置图片路径$('.home-bReturn').attr('src', 'img/' + cssName + '/home_yzl_8.png');$('.home-bHome').attr('src', 'img/' + cssName + '/home_yzl_7.png');}else{
//没有皮肤就使用blue默认的路径cssStyle.href = "Content/aps/skinColour_blue.css";//设置默认图片路径$('.home-bReturn').attr('src', 'img/blue/home_yzl_8.png');$('.home-bHome').attr('src', 'img/blue/home_yzl_7.png');}

四,总结换肤遇到的问题

1,js动态生成的标签换肤,例如jq通过字符串拼接,添加到页面上的img图片标签

1),通过本地存储获取皮肤名函数取到皮肤名值,判断这个值是否有,有的话,就用取到皮肤名,没取到值就用默认的blue蓝色

//html5获取本地存储皮肤    var cssName2 = getStorage("skinName");    //判断皮肤名,切换图片路径    var imgSrcCinema;    if (cssName2 && cssName2 != null) {
imgSrcCinema = cssName2; } else {
imgSrcCinema = 'blue'; };

2),在js动态生成的地方写法:通过字符串拼接,+变量来实现

        var liImg = '<div class="film-vidctn3"><img class="videoimg" src="../../img/' + imgSrcCinema + '/cinema-yzl_09.png"></div>';

        $("." + pos).html(liImg);

 2,点击按钮变色的效果换肤:

可以在不同的css文件里定义同名class,样式根据不同皮肤各自另外写。

例如:在蓝色皮肤skinColour_blue.css 

/*js点击时的样式*/.zhleftclick{
background-color: rgba(0, 201, 212, 0.5) !important;}

在黄色皮肤skinColour_yellow.css

/*1,js点击时的样式*/.zhleftclick{
background-color: #43490f !important;}

在js里添加class就可以解决不同皮肤下的点击效果,原理是:在不同的皮肤状态下引用的皮肤css文件不一样来达到。

$('.icon01').off('mousedown touchstart').on('mousedown touchstart', function () {
$('.icon01').removeClass('zhleftclick').addClass('zhleftclick'); })

 

转载于:https://www.cnblogs.com/yuer20180726/p/11151421.html

你可能感兴趣的文章
一个图片裁剪控件
查看>>
poj2104(主席树。k_th number)
查看>>
java内存模型(一)
查看>>
飞入动画
查看>>
mysql通过binlog恢复删除数据
查看>>
正则表达式
查看>>
【windows】之查看端口占用
查看>>
coocs2d-x-2.2(-js相同)版本android打包笔记
查看>>
分析DuxCms之AdminUserModel
查看>>
uva 12304 2D Geometry 110 in 1! (Geometry)
查看>>
HTML连载13-CSS基本格式以及文字相关的属性
查看>>
idea 修改Git密码和账号方法
查看>>
mysql用户权限
查看>>
C/C++中的abort、atexit、exit和_Exit
查看>>
R语言从基础入门到高级
查看>>
JSP:在本地获取图片后立即展示选择的图片
查看>>
docker 安装mongo
查看>>
DDL、DML和DCL的区别与理解
查看>>
洛谷 P1204 [USACO1.2]挤牛奶Milking Cows
查看>>
9.5 模拟赛
查看>>