前端笔记101
像骑自行车一样自然地设计网页。 ——Sion
✍文章痕迹
写作时间线
2025-01-?
某日打开github星标榜,发现storybook项目。
2025-03-30
阅读《版式设计原理》
2025-03-31
再次产生创建STUDIO网站的念头,初步想法是使用React
进行构建
2025-04-01~4-02
阅读《大前端三剑客——Vue+React+Flutter》,旋即弃置
2025-06-09
- 受两年前喜欢的hexo主题《Paper》作者影响,尝试学习Sigma
- 观看视频教程《零基础学Figma》[^2]
2025-06-10
- 申请Sigma教育账号
- 阅读《《Figma UI设计技法与思维全解析》 》
2025-06-14
意识到Figam的局限性——只是一个原型设计软件,开始接触react。
2025-06-15
理性看待Figma。Figma可以作为指导性文件来勾勒整体的轮廓而后以此为基础进行开发,同时可以进行简单的封面制作。
2025-07-25
因为MES系统维护需要,借阅《JavaScript 技术手册》,开始系统学习js。
平日走路、工作、骑车,脑海里或多或少会浮现出一些念头,可能是一个照片的绝妙机位,一个有趣的游戏原型,一段悦耳的节奏,可能是一幅以天空为背景的插画,也可能是对网站主页的一个构建。有人说这叫灵感,我却以为这是虚感,不过是一阵风吹来,恰到好处地拂动了脑海里几个不同的念头而已,在这感觉没有落地之前,是毫无意义的。那如何让这些念头变得有意义呢?我觉得要去培养,去一点一滴地呵护它,如同养一盆花一般,让慢慢地成长,才会赋予其意义。
本文动笔的契机就是许多个念头的累积让这颗种子发了芽,至于到底能不能长大开花,甚至结果,我也不管,当下哩,我就静静地看着它,想起来了就浇点水~
写在开始的预期
本次试验要做出来几个原型,大概有这些:
-
星际牛仔片头设计
-
国画风格:留白——文本让位图像
-
45°布局:
-
90°布局:即直排版
-
社会主义革命和建设时期宣传海报风格的当代演绎
-
细朱文为主的拟物线条风格
-
图表,数据可视化相关。
-
个人主页、工作室主页、专题展示页(摄影、篆刻、绘画)
设计工具
figma
figma给我的初步观感:像做PPT一样设计网页。
本文定位只是一个辅助学习用的很随便的草稿,非教程,非笔记
- 我们可以通过多种方式去补足这些知识,“三大构成”就是开始系统认知设计或者UI设计的第一步。“三大构成”包含《平面构成》(The Plane Constitution)、《色彩构成》(The ColorConstitution)和《立体构成》(Three-Dimensional Constitutes),通过这三本书,我们可以在更高的理论层面来对设计有个系统的认知。
- 如果还有时间,伊顿的《设计与形态》《康定斯基论点线面》,福兰可·惠特福特的《包豪斯》也是非常适合设计师夯实基础的著作。
与时下流行的Material Design不同(尽管我也觉得这种设计很美观),笔者本次实践主要目标是向前求索:追寻、挖掘、表现古文古画古书上图像与符号的关联关系。具体到就是(竖排版,模仿自然)。
-
图形绘制能力是几乎所有设计师都必须具备的一项能力,如果说版式设计能力决定了UI设计师60%的能力要素,那么图形绘制能力则让你的技能分从60分精进到80分甚至更高。
-
UI设计师学习的工具有以下几类,首先是
- 图形绘制工具,如Sketch(Windows下有Adobe XD)、Figma、Photoshop,这也是当今设计师用得比较多的主流工具,从难易程度上来说,Sketch(XD)和Figma上手难度最低,操作最简单。
- 交互工具,在UI设计稿完成前,这类工具可以帮我们绘制低保真的线框图;而设计稿完成后,我们需要用这类工具将其处理成高保真演示原型。最常见的交互工具,可以统称为“连连看工具”,只需按照页面的顺序,将点击区域及目标区域进行连接即可。目前大部分的设计工具都提供了此类连线功能,如Sketch、XD、Figma等。当然,也有更复杂的工具,如Flinto、Principle及一些在线设计工具(如墨刀),都可以完成从设计稿导入到连线导出,最终形成可以在手机上真实点击的效果,这类工具的特色是做出更接近手机真实动作效果的演示,比如论坛图、下拉刷新、页面滚动等。
- 进阶类的图形绘制工具,以Photoshop或者Adobe illustrator为代表。用以完成界面中的一些图形化设计工作,如插画、字体、Logo设计。
- 动效(微交互)效果的设计、3D视觉工具等。这类工具有Adobe的After Effect和Cinema 4D,通常学习成本较高,需要花费更多精力才能有所收获。
目前掌握程度简单自评:
清华大学出版社提供了第二章的样章,微信阅读排版不好,还是读这个舒服。
Figam中的Frame(画框)与html中的
<iframe>
内嵌框架元素标签有类似的含义.
- Figma的交互设计比较有趣的一点就是,特定的工具只有在激活的时候才会出现,非激活状态或者不可用状态下是完全隐藏的。
![]() |
![]() |
---|---|
figma可以创建文本样式与组件以便复用 | 文本转化为矢量(Flatten Selection)进行编辑 |
-
导出内容:“①使用切片工具划定需要导出的内容;②选中某个图层,在右侧的属性检查器中,找到“Export”选项,并单击加号,设定导出倍数、后缀和图片格式。”
-
快捷键说明(基本与PPT一致)
- Ctrl + D :副本
- Ctrl + G :编组
- Ctrl + +Shift+G :取消编组
- 拖拽调整数值:与Blender类似
- 选择矢量图形,然后直接粘贴可以将图形贴到矢量图形中。
-
创建蒙版步骤
- 新建一个矢量图层,右键新建蒙版(mask)
- 此时左侧会生成一个蒙版组(Mask Group)
- 把图片放进蒙版组里面
- (调整图片或者矢量图形可以得到不同的画面)
问题
- Figma对竖排没有支持,插件vertja的实现方式是文本框溢出,不能简单转换成css。
🕳前端框架
先挖坑,待学习
JavaScript
基本类型与运算
- 数字:
0xA
十六进制;0b1010001
二进制;0o4545
八进制;8.848e3
、8848000e-3
科学计数法。js中可以表示的数字的最小值Number.MIN_VALUE
是,最大值Number.MAX_VALUE
是。
Number()
可以把数字的字符串转化成数字。
1 | > A='0xB' |
- 字符串,转义相关(超过
\uhhh
用\u{}
,ES6新增特性) - 布尔,
boolean
- 复合类型,
{}
,中间以逗号隔开,可以同时放置各种字段。使用点运算符来随时操作对象的特性(js的重要特点,这个写法太优雅了。)
1 | > let dog001 = {name:'小黑', color: 'black'} |
- 数组
[111,222,333,444]
- 变量声明
let
:变量。在区块{}
内有效,区块外无定义则会报错const
:常量,一次声明而后不能改变。var
:声明变量,有提升行为(全局变量):在未指定值之前,会被定义为undefined
undefined代表“值没有定义”的值,其在JavaScript中不是保留字,在函数中可以被拿来作为变量名称,但尽量不要用它。通过void
可以在任何值或表达式前产生undefined
。类似的还有null
表示没有对象,令对象为null
相当于给它置空。NaN
:当结果无法运算时,便会产生此值。
- 加减乘除运算:js中的数字是IEEE 754标准64位浮点数,使用分数以及指数来表示小数,然而有些小数无法用分数表示,这就导致比如0.3之类的数字会有浮点数误差。如果要避免需要用第三方库
bignumber.js
来解决*
:乘法**
:指数%
:取模/
:除法
严格模式,ES5后新增,若误用了不好或早期规则含混不清的特性,就会报错。使用use strict
来进入严格模式。
8. 比较运算:使用 ===、!==
来进行比较
9. 逻辑运算:&&
、||
、!
这个返回值要研究研究。
1. A && B
:A为真,则不论B真假都返回B;A为假,则直接返回A
2. A || B
:A为真,则不论B真假都返回A;A为假,则直接返回B。(可以看作默认返回值,输入A假,返回B作为默认值)
3. !A
:A为真,返回false
,A为假(0),返回true
1 | 0 || `` && NaN || !undefined || null |
- 条件运算:
表达式 ? 成立返回值 : 失败返回值
。可用于局部的判断语句,减少程序体量。
流程语法
break
可以离开switch、for、while、do…while的区块,break与continue可以搭配标签使用,离开整个区块。
- if分支判断:条件默认
1 | if(条件){ |
1 | if(条件){ |
- Switch 复合分支,使用break进行结束跳转
1 | switch(number){ |
- for 循环,先判断后执行循环语句
1 | for(let number=1; number<10; number++){ |
1. `for of`,循环访问数组中(of)的值`for(let nuumber of [10,20,30])`
2. `for in`,列举对象的特性名称,搭配`[]`运算符使用
js中{}
表示对象,[]
/·
访问对象的属性。
- While循环,先循环语句后执行判断
1 | do{ |
函数
- 声明函数
function
。如果没有return值,则返回undefined
1 | let n1 = 100 |
语句中如果不写分号结束,则js会以分行判断结束。
1 | function gcd(m,n){ |
css
按钮背景动画:
1 | .glowing-button::before, .glowing-button::after, .glowing-button-alt::before, .glowing-button-alt::after { |