前端实现换肤

1、使用link标签rel="alternate stylesheet"动态换肤

link标签的rel属性

rel="stylesheet"属性指定将一个样式表立即应用到文档.

rel="alternate stylesheet"属性将其作为备用样式表而在默认情况下禁用它

通过js拿到link标签对象,disabled属性设置,可以实现变化页面导入样式表

disabled = true;表示它不会立即生效

disabled = false;表示立即生效

代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css 换肤</title>
    <link rel="alternate stylesheet" type="text/css" href="red.css" title="红色"/>
    <link rel="alternate stylesheet" type="text/css" href="green.css" title="绿色"/>
    <link rel="stylesheet" type="text/css" href="default.css" title="默认"/>
</head>
<body>
选择样式:
<input id="default" type="radio" name="skin" value="default.css" checked><label for="default">默认</label>
<input id="red" type="radio" name="skin" value="red.css"><label for="red">红色</label>
<input id="green" type="radio" name="skin" value="green.css"><label for="green">绿色</label>
</body>

<script>
    const $ = document.querySelectorAll.bind(document);
    var eleLinks = $('link[title]');
    var eleRadios = $('input[type="radio"]');
    [].slice.call(eleRadios).forEach(function (radio) {
        radio.addEventListener('click', function () {
            var value = this.value;
            [].slice.call(eleLinks).forEach(function (link) {
                link.disabled = true;
                if (link.getAttribute('href') == value) {
                    link.disabled = false;
                }
            });
        });
    });
</script>
</html>

 2、less实现换肤

注:该方法可以自定义样式,改变主题颜色。

需引入less.js

//在less样式表中使用变量
@themeColor: #33b8ff;


body{
  color: @themeColor;
}

//在js中通过window.less.modifyVars修改@themeColor
window.less.modifyVars({
    "@themeColor": "red"
})

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值