先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
正文
/** sass寫法 **/
.nav
background: #ccc
li
display: inline-block
a
display: block
padding: 15px
text-decoration: none
color: #000
img
width: 100%
SCSS写法:采用「块语法(Block)」,一般从CSS转为SCSS开发比较无痛,保留了括号、分号等…元素,相对于上面的SASS是比较新的编写方式,学习成本比较低,是目前主流的方式,如下:
/** scss寫法 **/
.nav{
background: #ccc;
li {
display: inline;
a {
display: block;
padding: 15px;
text-decoration: none;
color: #000;
}
img {
width: 100%;
}
}
}
看完上面的程式码,会发现SASS 可以协助解决编写CSS 常遇到的几个问题,如:「 重复编写」、「 后续维护」、「 漏写问题」等问题…,然后加快开发流程,如下:
-
父选择器,重复编写:?如要扩充页面样式,就会不断的加上.nav li … 等父级class 名称,比较费工!
-
属性样式,重复编写:常会看到许多CSS 属性,是许多区块都需要用到,在SASS 没出来前,每个区块都需特别写一遍,现在直接引用即可。
-
后续维护:若哪天需要把.nav 这个class 名称更换,就需全部替换,比较麻烦。
-
漏写问题:SASS / SCSS 有条理的节省了许多代码编写,降低漏写的Bug。
安装+执行SASS 的方式有满多种,有使用第三方应用程式的,也有直接安装在本机上的,这边会建议直接安装在本机上,比较一劳永逸,这边列出几种安装方式,如下:
SASS 安装
-
使用Node.js 安装
$ npm install -g sass
-
使用Ruby 安装
$ gem install compass
-
使用Brew 安装(Mac专用)
$ brew install sass
指令执行完成,基本上就安装好了,若想测试是否安装成功,可以输入 $sass -v
看是否有显示SASS 版本号,若有的话代表安装完成
SASS 执行
首先在专案资料夹下,生成index.html 和两个资料夹css、sass ,然后在sass 下面新增一个style.scss,这支档是我们开发,主要编写样式的档案。
我们现在要试着把sass 资料夹里的style.scss ,编译成浏览器看的懂的.css 副档名型式。
所以下指令把style.scss 档案转译生成style.css,并放置在css 资料夹里,如下:
$ sass sass/style.scss:css/style.css
如果顺利的话,应该会看到「 css 」档案夹里,新增了两个档案,分别是「 style.css 」和「 style.css.map 」,这边比较要留意的是style.css(浏览器主要解读这只档)。
- 需留意「 当前路径」,这会影响到style.scss 档案编译生成style.css 的路径,若不对会报错
- 在index.html 里面,记得引入style.css 档案( style.scss 不需引入),才会有样式出现
若持续有样式需新增,每次一编写完style.scss 就得执行一次 $ sass sass/style. scss :css/style. css
指令,才能在浏览器上看到变化,相信一定会很想撞墙
所以这时可以改下另一个指令(加上 --watch
参数,若原有的style.css / style.css.map 已存在,会自动覆盖,不存在的话会自动生成新的),如下:
$ sass --watch sass/style.scss:css/style.css
执行后,会发现sass 已经开始在监听style.scss ,若这只档案有修改,style.css 变会即时的进行编译,给浏览器做使用,
在开发过程中,一个专案可能不只有一个样式档,假如有多个档案需同时进行监听,这边提供几个方式给大家:
- 重复执行:看有几个档案需监听,就输入几次。
$ sass --watch path/to/filename. scss :path/filename. css
- 一次执行:看有几个档案需监听,一次下指令。
$ sass --watch path/filename1. scss :path/filename1. css path/filename2. scss :path/filename2. css path/filename3. scss :path/filename3. css
- 指定目录下全部监听:监听sass 目录下的sass/scss 档案到指定的css 目录下(下面指令为两个资料夹在同一层)
$ sass --watch sass:css
- 当前目录下全数监听,并直接生成css 档案。
$ sass --watch .
到了这一步,若顺利的话,相信你也学会,如何在编写sass/scss 档案时,指定的css 档案可以同步的进行编译,并让浏览器能够顺利的出现画面。
个人觉的sass 学习比较麻烦的就是安装+执行这个章节,后面就是语法部分,语法就相对简单明了了,原来就有css 开发经验的捧有们,相信也可以很快就入手的
接下来,我们开始前进到语法部分
SASS 提供CSS 语法扩展,如:嵌套功能( Nested Rules ),主要是解决CSS 编写过程中,父元素重复编写问题,可以缩短开发流程、方便后续维护、?样式模组化等… 优点
这是容易入门SASS教学的第一步,直接上代码,我们使用SASS 编写样式,并对比编译后的CSS ,如下:
/** 编译前( sass 语法 ) **/
#main {
width: 200px;
height: 100px;
background: #ddb92a;
.greenbox{
width: 100px;
height: 50px;
background: green;
p, a {
font-size: 20px;
}
}
}
/** 编译后( 转为CSS 语法输出) **/
#main {
width: 200px;
height: 100px;
background: #ddb92a;
}
#main .greenbox{
width: 100px;
height: 50px;
background: green;
}
#main .greenbox p, #main .greenbox a{
font-size: 20px;
}
除此之外,常用的属性也可以进行CSS「 嵌套属性」,比如:font-family
、font-size
、font-weight
,会发现 font 多次出现。
还有常见的 background 系列,比如:background-color
、background-position
、background-size
、background-image
,都可以用嵌套功能,来节省开发时间,这边上代码,如下:
/** 编译前( sass语法) **/
.main {
font: {
family: Helvetica, sans-serif;
size: 15em;
weight: bold;
}
}
/** 编译后( 转为CSS 语法输出) **/
.main {
font-family: Helvetica, sans-serif;
font-size: 15em;
font-weight: bold;
}
到目前,对嵌套功能应该有初步认识了,若之前有看过别人写的SASS / SCSS 档,应该会有种似曾相似的感觉吧
理解了它,接下来我们继续看SASS 还有什么特别的地方,可以让我们学习的…
如果想在嵌套状态下,取得外层的父选择器,那可以使用「 & 」,它会直接抓父选择器给你用。
常会把它用在,如CSS 元件状态: :hover
、:focus
、:hover
、:link
、:visited
等…,或是 :before
、:after
,这边上个代码,如下:
/** 编译前( sass语法) **/
#main {
display: block;
a {
color: #d0b95b;
&:hover, &:active, &:focus {
color: #a08106;
outline: none;
text-decoration: none !important;
}
}
}
/** 编译后( 转为CSS 语法输出) **/
#main {
display: block;
}
#main a {
color: #d0b95b;
}
#main a:hover, #main a:active, #main a:focus {
color: #a08106;
outline: none;
text-decoration: none !important;
}
还有另一种用法,也常常看到,如下:
/** 编译前( sass语法) **/
#main{
&.color- 2 {
background: red;
&:before {
border: 1px solid #ccc;
}
}
&.color- 3 {
background: yellow;
&:before {
border: 1px solid blue;
}
}
}
/** 编译后( 转为CSS 语法输出) **/
#main.color-2 {
background: red;
}
#main.color-2:before {
border: 1px solid #ccc;
}
#main.color-3 {
background: yellow;
}
#main.color-3:before {
border: 1px solid blue;
}
能抓到父选择器,是不是开发起来也方便多了呢?
一开始看到别人编写的SASS 时,觉得「 & 」的写法满酷的,后来才懂… 原来是这样运作呀
在我们实际编写CSS 的过程中,常会遇到多次相同的颜色、字型、字体大小等… 重复出现。
重复出现是好事,因为只要复制+贴上就好了…但假如遇到哪天设计师/客户,需要修改就…(因为全都需要更改)
所以SASS 可以协助我们解决这问题,就如同JS 变量逻辑一样,只需改最源头的变量即可,其他所有引用该变量的地方,值都会自动更改。
SASS 中使用 $
进行变量声明,支持7 种主要数据类型:
- 数字(如:
1
,1. 5
,20px
)
- 字符串,带引号和不带引号(如:
"foo"
,'foo'
,foo
)
- 颜色(如:
red
,#28b0b4
,rgba ( 0 , 0 , 0 , 0.5 )
)
- 布尔值(如:
true
,false
)
- 空值(如:
null
)
- 值列表(list),用空格或逗号分开(如:
2em 1em 0 1em
、Helvetica, Arial
)
- maps:从一个值映射到另一个(如:
( key1: value1, key2: value2 )
)
这边来对比一下,使用SASS 开发的编译前( SASS 语法) & 编译后( 转为CSS 语法输出)的程式码,如下:
/** 编译前( sass 语法) **/
$bnr-font: Helvetica, sans-serif;
$bnr-color: #494947;
.banner1 p {
font-family: $bnr-font;
color: $bnr-color;
padding: 10px 15px;
letter-spacing: 0.2 em;
}
.banner2 p {
font-family: $bnr-font;
color: $bnr-color;
margin: 15px;
}
/** 编译后( 转为CSS 语法输出) **/
.banner1 p {
font-family: Helvetica, sans-serif;
color: #494947;
padding: 10px 15px;
letter-spacing: 0.2 em;
}
.banner2 p {
font-family: Helvetica, sans-serif;
color: #494947;
margin: 15px;
}
如此一来,当哪天收到需要更改某通用按钮颜色、通用字体字型… ,就可以直接更改变量即可,是不是很方便
SASS 扩展了CSS 的 @import
功能,允许在文件内导入其他的SASS 或SCSS 子文件。
在文件进行编译后,被导入的SASS 或SCSS 子文件,会全部合并到同一个CSS 文件,然后呈现出来。
常见的 .sass
或 .scss
导入
这边展示一下基本用法,我们把 _reset. scss
导入到 main. scss
中,直接上代码:
/** 编译前( sass 语法) **/
/** _reset.scss **/
html, body, ul, ol, a {
margin: 0 ;
padding: 0 ;
}
/** main.scss **/
@import ‘reset’ ;
body {
background: #a08106;
font-size: 16px;
}
/** 编译后( 转为CSS 语法输出) **/
html, body, ul, ol, a {
margin: 0 ;
padding: 0 ;
}
body {
background: #a08106;
font-size: 16px;
}
小提醒:若有多个文件需汇入,可同时使用多个
@import
引用文件,如下图
监听父文件即可
编写代码过程中,可以把不同样式区块的SASS 或SCSS 代码,拆开成不同独立的文件,然后使用 @import
把各片段文件,统整汇入到同一支 .sass
或 .scss
文件中,并监听这一支文件即可
在文件进行监听时,所有 @import
进来的 .sass
或 .scss
子文件,也同时被监听,所以当子文件有修改,父文件编译出的 .css 也会自动更新。
使用下划线,SASS 编译自动忽略
若有片段文件不需SASS 编译出新的CSS 文件,可在文件开头添加一个下划线,在编译过程中,系统就会忽略它,而只对开头无下划线的文件,进行新的CSS 文件生成。
上述的范例说明
看一下另一个范例,下面是bootstrap 的目录文件:
1.把多个scss 文件,使用
@import
添加到bootstrap.scss
中。
2.之后只需监听
--watch bootstrap.scss
这一支文件即可,假如内部@import
的文件有变更,都会在bootstrap.css 自动更新。
3.bootstrap.scss 文件内的
@import
档案,不需要加下划线。
开头有下划线的文件,在执行sass 指令时,不会生成新的css 文件,系统会自动忽略。
4.
@import
scss 片段文件,不用加上副档名也可以,系统会自动寻找同名的副档名.scss
或.sass
文件,并依序导入。
一般CSS @import
功能
@import
默认情况,会预设导入同名的 .sass
或 .scss
文件,但在以下情况下,仅当成一般的CSS @import
语句,不会导入任何的SASS 文件,如下:
- 如果文件的副档名是
.css
:@import "foo.css"
;
- 文件名以
http ://
开始:@import "http://foo.com/bar"
;
- 文件名是
url ()
:@import url ( foo )
;
@import
中包含媒体查询(media queries)
若是有重复的代码,会不断使用到,就可用混合指令(Mixin Directives),直接把样式封装成一个类名称,就可以重复调用,如下:
/** 编译前( sass 语法) **/
/** 定义mixin 指令**/
@mixin font-main {
font: {
family: Arial;
size: 16px;
weight: 100 ;
}
color: #000;
}
/** 引用mixin **/
.box p {
@include font-main;
}
/** 编译后( 转为CSS 语法输出) **/
最后
好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。
做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。
学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
若是有重复的代码,会不断使用到,就可用混合指令(Mixin Directives),直接把样式封装成一个类名称,就可以重复调用,如下:
/** 编译前( sass 语法) **/
/** 定义mixin 指令**/
@mixin font-main {
font: {
family: Arial;
size: 16px;
weight: 100 ;
}
color: #000;
}
/** 引用mixin **/
.box p {
@include font-main;
}
/** 编译后( 转为CSS 语法输出) **/
最后
好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。
做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。
学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-ydiZN8vF-1713186926986)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!