在’ main.css '中,您会发现很多项目的CSS。在顶部,创建一个针对“ root ”伪类的块。在其中定义变量,如下面的代码段。该根块包含全局变量,它将像任何常规的CSS属性一样级联到我们的样式表中。
:root {
–primary: #2F353E;
–secondary: #2B9BCA;
–tertiary: #F3583F;
–quaternary: #E0E1E2;
–quinary: #FFFFFF;
}
03.用变量替换颜色
通过手动或使用find / replace进行样式表,并从根块中与其对应的变量交换任何静态颜色十六进制代码。为此,请使用var函数并传递变量的名称。这告诉浏览器引用该变量的值。例如:
.c-header {
background-color:var(–primary);
color:var(–quinary);
}
找到图标的内联SVG
打开’ index.html ‘,你注意到的第一件事就是一个大的SVG元素。它包含所有页面的图标的路径,每个图标都包含在符号元素中,并赋予唯一的ID。这些符号在需要时使用’ use '元素进行引用,允许重复使用图标而不会重复SVG代码。
添加CSS变量到SVG
使用内联SVG而不是.SVG文件的一个好处是CSS可以访问其内部结构。这意味着我们的CSS变量(除了Edge,在写作时)。在“ index.html ”中,将SVG的样式块替换为下面的代码段。现在,每个SVG的颜色都链接到我们的CSS变量的值。
创建一个列变量
我们也可以为颜色以外的属性使用CSS变量。在根块中创建一个新变量,将其称为“ 列 ”,并赋值为3.这应该与页面上“ 列 ”UI组件的默认值相匹配。功能完成后,此组件将切换列数。
:root {
–primary: #2F353E;
–secondary: #2B9BCA;
–tertiary: #F3583F;
–quaternary: #E0E1E2;
–quinary: #FFFFFF;
–columns: 3;
}
实施列切换
使用我们的新列变量和calc()函数,我们现在将计算每个音符组件应该多大,以创建正确数量的列。例如,如果列设置为4,则每个音符的宽度应为25%。
.c-note {
width:calc(100% / var(–columns));
}
添加JS类和数据属性
当将JS行为应用于DOM元素时,通过具有JS前缀的类来挂接它。这将元素的功能方面与CSS脱钩。我们为所有的颜色和无线电输入添加一个’ js-update-variable ‘类,并引用一个’ data-attribute '来引用要更新的对应变量。
class=“js-update-variable u-hidden-visually”
data-variable=“primary”>
添加JS来更新CSS变量
打开’ main.js ‘并添加下面的代码段。这循环了我们所有的’ js-update-variable '输入,并添加了逻辑,所以在更改时,其数据变量属性中引用的变量将更新为输入值。颜色色板和列切换应该现在正在工作!
var varTrig = document
.querySelectorAll(“.js-update-variable”);
for(var i = 0; i < varTrig.length; i++){
varTrig[i]
.addEventListener(“change”, function(){
document.documentElement.style
.setProperty(“–” + this.dataset.variable,
this.value);
});
}
10.将JS类附加到保存按钮
只有当用户点击保存按钮时,才能保存用户的配色方案,这样可以让他们尽可能多地尝试主题,而不会自动覆盖当前的配置。要开始,将’ .js-save-colors '添加到“ 保存 ”按钮以作为我们的JS钩子。
data-modal=“js-modal” data-modal
-content=“js-colours-modal-content”>
Save
11.创建颜色数组
返回’ main.js ‘,声明一个名为’ colors ’ 的新变量,并分配一个包含所有要保存的所有颜色变量的新数组,一旦保存按钮被点击。
var colours = [
“primary”,
“secondary”,
“tertiary”,
“quaternary”,
“quinary”
];
12.构建保存按钮事件侦听器
在colors数组下方,为“ js-save-colors ”类创建一个点击事件侦听器,我们以前添加到“保存”按钮。在其中创建一个名为’ htmlStyles ’ 的新变量,并为其分配根HTML元素的计算属性。我们将使用它来访问我们的CSS变量。
document.querySelector(“.js-save-colours”)
.addEventListener(“click”, function() {
var htmlStyles = window
.getComputedStyle(document
.querySelector(“html”)),
}),
记录CSS颜色变量
接下来,在事件侦听器中,创建一个名为“ coloursToSave ” 的新变量,并为其分配一个空对象。接下来,使用第11步中的’ colors ‘数组创建一个FOR循环。在其中,我们将把’ colors ‘数组中提到的变量的完整键/值记录添加到’ coloursToSave '对象。
array to the ‘coloursToSave’ object.
coloursToSave = new Object;
for(var i = 0; i < colours.length; i++) {
coloursToSave[colours[i]] = htmlStyles
.getPropertyValue(“–” + colours[i]);
}
14.将coloursToSave发送到localStorage
现在我们将所有颜色变量保存在“ coloursToSave ”中,我们将它发送到名为localStorage的Web Storage API的组件。这本质上是一个在会话中持续存在的对象。我们可以使用其’ setItem() ‘方法在其中存储其他对象。我们把它发送给我们的’ coloursToSave '对象。
localStorage.setItem(“colours”,
JSON.stringify(coloursToSave));
15.将一个JS类添加到列
除了颜色之外,我们还希望确保我们选择的列号在会话中仍然存在。第一步是为列组件中的所有无线电输入添加“ js-update-columns ”。
="js-update-variable js-update-columns
u-hidden-visually" value=“1”
data-variable=“columns”>
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
打开全栈工匠技能包-1小时轻松掌握SSR
两小时精通jq+bs插件开发
生产环境下如歌部署Node.js
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
网易内部VUE自定义插件库NPM集成
谁说前端不用懂安全,XSS跨站脚本的危害
webpack的loader到底是什么样的?两小时带你写一个自己loader
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算