① 学习web前端需要记笔记吗
可以说学习任何一门技术原则上都是需要记笔记的。
中国有句俗话:好记性不如烂笔头。
前期记笔记有助于加深印象,以后也可以更快速的记住内容。
② 网易有道云笔记如何取消显示在最前端的设置
我的是“有道的云笔记”
在任务栏放的小图标的位置(如:QQ图标的位置),鼠标右键点击“云笔记”,然后勾选掉“总在前面”的选项就可以了
③ 前端大屏项目自适应(个人笔记)
仔细观察 网易有数 , 网络suger ,他们都采用了css3的缩放transform: scale(X)属性,看到这是不是有种豁然开朗的感觉。
于是我们只要监听浏览器的窗口大小,然后控制变化的比例就好了。
以React的写法为例
监听window的resize事件最好加个节流函数debounce
然后一个简单的组件就封装好了
样式文件index.less
只要把页面放在这个组件中,就能实现跟大厂们类似的效果。这种方式下不管屏幕有多大,分辨率有多高,只要屏幕的比例跟你定的比例一致,都能呈现出完美效果。而且开发过程中,样式的单位也可以直接用px,省去了转换的烦恼~~~
最后附上npm链接: https://www.npmjs.com/package/react-scale-box
④ 前端学习笔记style,currentStyle,getComputedStyle的区别和用法
getComputedStyle与style的区别
我们使用element.style也可以获取元素的CSS样式声明对象,但是其与getComputedStyle方法还有有一些差异的。
只读与可写
正如上面提到的getComputedStyle方法是只读的,只能获取样式,不能设置;而element.style能读能写,能屈能伸。
获取的对象范围
getComputedStyle方法获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码,也会把默认的祖宗八代都显示出来);而element.style只能获取元素style属性中的CSS样式。因此对于一个光秃秃的元素<p>,getComputedStyle方法返回对象中length属性值(如果有)就是190+(据我测试FF:192, IE9:195, Chrome:253, 不同环境结果可能有差异), 而element.style就是0。
⑤ 前端笔记 — canvas
在HTML中添加<canvas>元素,必须设置width跟height属性
如果浏览器不支持canvas元素,就会显示标签中间的内容
要在画布上绘图,需要取得绘图上下文,调用getContext('2d')就可以取得canvas的2d上下文
使用toDataURL方法可以导出canvas上绘制的图像,接受一个参数,图像的MIME类型格式
常用的属性控制
矩形是唯一一种可以直接在上下文中绘制的形状
与矩形有关的方法包括fillRect()、strokeRect()和clearRect(),这三个方法接受4个参数(x, y, width, height)
fillRect()绘制的矩形会填充指定的颜色,颜色通过fillStyle属性指定
strokeRect()绘制的矩形会使用指定的颜色描边,描边颜色通过strokeStyle属性指定
clearRect()方法用于清除画布上的矩形区域
要绘制路径,首选必须调用beginPath()方法,表示开始绘制新路径,绘制路径主要有以下方法
调用closePath()可以将路径的起点与终点连接。路径完成后,可以使用fill()填充,或者使用stroke()描边。最后还可以调用clip(),在路径上创建一个剪切区域
绘制文本主要有两个方法,fillText()和strokeText(),这个两个方法接受4个参数:要绘制的文本字符串、x坐标、y坐标和可选的最大像素宽度。这两个方法都以下列3个属性为基础
上下文提供了辅助确定文本大小的方法measureText(),这个方法接受一个参数,即要绘制的文本,返回一个TextMetrics对象,这个对象有一个width属性,表示文本的宽度
为上下文应用变换,会导致使用不同的变换矩阵应用处理,从而产生不同的结果,可以通过如下方法来修改变换矩阵
如果想把一副图像绘制到画布上,可以使用drawImage()方法,调用这个方法时,可以使用三种不同的参数组合,最简单的方式是传入一个<img>元素,以及绘制该图像的起点x和y坐标
可以多传入两个参数,表示目标宽度和高度
还可以把图像中的某个区域绘制到上下文中,需要传入9个参数:要绘制的图像、源图像的x坐标、源图像的y坐标、源图像的宽度、源图像的高度、目标图像的x坐标、目标图像的y坐标、目标图像的宽度、目标图像的高度
除了给drawImage()方法传入<img>元素外,还可以传入另一个<canvas>元素作为其第一个参数。结合drawImage()和其他方法,可以对图像进行各种基本操作,操作的结果可以通过toDataURL()方法获得,toDataURL()是canvas的方法而不是上下文的方法
上下文会根据以下几个属性,自动为形状或路径绘制阴影,需要在绘制路径之前设置
渐变有CanvasGradient实例表示,要创建一个新的线性渐变,可以调用createLinearGradient()方法,接受4个参数:startX、startY、endX、endY。创建渐变后,使用addColorStop()方法来指定色标,接受两个参数:色标位置和css颜色值。色标位置是一个0(开始的颜色)到1(结束的颜色)之间的数字
表示从一个画布上的点(30, 30)到点(70, 70)的渐变。起点的色标是白色,终点的色标是黑色。然后可以把fillStyle或者strokeStyle设置为这个对象,从而使用渐变来绘制形状或描边
要创建径向渐变,可以使用createRadialGradient()方法,接受6个参数,对应着两个圆的圆心和半径
模式其实就是重复的图像,可以用来填充或描边图像,使用createPattern()方法并传入两个参数:一个<img>元素和一个表示如何重复图像的字符串。其中第二个参数的值与css的background-repeat属性值相同,包括“repeat”、“repeat-x”、“repeat-y”和“no-repeat”
模式与渐变一样,都是从画布的原点(0, 0)开始的,将填充样式设置为模式对象,只表示在某个特定的区域内显示重复的图像,而不是要从某个位置开始绘制重复图像
上下文可以通过getImageData(x, y, width, height)取得原始图像数据
这里返回的对象是ImageData的实例,每个ImageData对象都有三个属性:width、height和data。其中data是一个数组,保存着图像中每一个像素的数据。
在data数组中,每一个像素用4个元素来保存,分别表示红、绿、蓝和透明度。因此第一个像素的数据保存在数组的第0到第3个元素中,数组中的每个元素的值都介于0到255之间(包括0和255)
putImageData()方法可以将imageData表示的图像绘制到画布上
globalAlpha:用于指定所有绘制的透明度,是一个介于0到1之间的值,默认值为1
如果所有的后续操作都要基于相同的透明度,可以先把globalAlpha设置为适当的值,然后绘制
globalCompositionOperation:表示后绘制的图形怎样与先绘制的图形结合,可能的值如下
⑥ 前端笔记 - HTML 特殊标签实现文字滚动
小结:试了 HTML 实现文字滚动效果之后,发现比 iOS 简单方便许多,以后在工作之余会多学学前端知识,求大神带哈😀!
⑦ 前端面试一问三不知怎么办
前端面试一问三不知的时候,千万别慌乱,可以先停一停和面试官说这个问题你需要思考一下再回答,或者说你因为太紧张之类的一时想不起来答案。
有些面试官会直接电话过去要求面试,由于面试者(尤其是学生)处于弱势方,可能并不会拒绝面试要求,但并不意味着面试者处于最佳的物理和精神状态下,有可能会导致面试者不能很好的发挥自己原有的实力。所以如果面试官突然打电话过来。
没有准备好的话,不要怕冒犯面试官,一定要另外约个时间,面试官肯定会再打过来的。遭到否定面试官有可能会否定你描述的一些东西,有可能是你字眼写的太过,比如将“熟悉”的东西写成了“精通”,勾起了面试官的“好奇”。
有可能故意试压,考验你的反应,但遇到否定的时候,不要急于反驳或者是手足无措,而是询问自省和主动讨论。气场不和有的面试官性格严谨沉闷,而面试者可能思维活跃,整个面试过程可能会变成面试官不停的打断面试者让其思维聚焦。
而面试者感到思维不停被打断,很是气恼,影响发挥。这种情况不可避免,但遇到这样的面试官,请保持谦和的态度,重点是展示自己技术的广度、深度,气场不和并不会产生决定性的影响,面试官也不会因为这样的原因而给与错误的评判。
尽量留下好的印象。结束通知有的面试官会在面试结束后说:“我的问题问完了,如果有进一步消息的话,我们会再联系你”。面试的大部分结果,其实当场就出来了,如果你感觉给出结果的时间点不够明确,可以反问他:“如果三天内没有联系,是不是就代表没有通过?”省得让你怀有不确切的希望。
最后,还可以挽留下面试官,讲讲这场面试中你的一些疑惑,获得面试官的反馈,也可以知道自己目前哪一方面做得不足。面试中面对不会的问题面试中遇到问题不会回答,这是非常正常的,毕竟大家在学习过程中遇到的问题,跟我们在工作中遇到的问题是非常不一样的。
除此之外,我们看问题的角度,也是有差别很大的。举个例子,很多人都在看ReactFiber,但是如果问你们,为什么要有Fiber这个东西,可能很多人都回答不上来,因为大家只在社区里面看到说,Fiber是怎么工作的啊。
但是为什么要有Fiber?如果没有会怎样,而这种思考,其实是非常底层的。我相信,很多人可能都没有思考过。那如果遇到的问题不会,你可以先选择不会,说我觉得自己没有信心能答出这个问题,当然我更希望听到你说。
我现在不会,但是你给我两分钟思考一下,我想一下这个问题有没有答案?我觉得这是一个很好的思考习惯,首先你在面对不会的东西是坦然的,我当下不会,很正常,我之前没有思考过这个问题嘛,那我们再花两分钟思考一下。
给一个初步的答案。所以说遇到问题,也不用不会就不会,也可以有一个积极的方式回应。从面试官的角度来说,面试中考察的题目,并不是仅仅考察这道题目本身,题目的对错并不跟最终结果直接挂钩。面试官更希望以题目为契机。
考察面试者分析问题,解决问题的能力,以及交流过程中所体现的逻辑推理和思维方式等。跟面试官聊业务业务跟项目是完全不一样的东西,业务认知和思考也是很重要的一个考察点,这方面面试官可能会问两个点:业务场景和技术突破。
业务场景:面试官会询问面试者他们的产品、业务模式、商业模式等,了解下面试者对于产品的诞生、定位、发展的认知。技术突破:技术与业务相结合这点在阿里也是一直在说但鲜有人做的非常好的地方,所以有的时候也会考察面试者。
看看他们所做的技术是如何从业务出发、给业务带来了哪些改变以及如何去评估两者之间产生的结果。面试结束反向互动面试官在挂断之前,基本会给与候选人反问的机会,一般会表述为“你有什么要问我的吗”?无论面试的怎样。
都希望你能说出心中的疑惑,比如面试中的某个题目、整体的评价反馈、你的建议或者了解所负责的业务,所在的团队等等,而从面试官的角度来看,如果候选人愿意反问你问题,至少能证明他是个好学的人。所以不要放弃这个互动的机会。
面试反馈每场面试结束后,面试官都会在系统里留下面试反馈,如果面试失败,简历会放在人才库里,很多人会在其中捞取简历,以后的面试官也可以看到之前所有的面试记录,之所以讲到这一点,是希望大家在面试中能够保持谦和积极的心态。
认真面对每一场面试,即使这场面试没有成功,但如果展示了好的品质,也会增加被发掘的机会,为你以后面试成功铺路。保持联络如果跟面试官聊的比较好,可以请求加个微信之类的,面试是一个长期的事情,哪怕此次面试没有通过。
以后还可能面试进来的,与面试官保持联络。前端面试题笔记面试会了,面试题也不能落下,这套面试笔记除了有CSS、JS、Vue、React、性能优化、服务器端口、设计模式、数据结构和算法面试题外,加了手写代码面试题。
这下面试官让我们写代码也不怕啦!CSS问题flex布局css3的新特性img中alt和title的区别用纯CSS创建一个三角形如何理解CSS的盒子模型?如何让一个div水平居中如何让一个div水平垂直居中如何清除浮动。
⑧ web前端学习笔记(二)清除浮动的几种方法
1.父标签overflow:hidden
2.样式属性clear,属性值一般是both,left,right。
⑨ 《web前端笔记7》js字符—获取、查找、遍历、提取、替换方法总结
(1)字符串就是零个或多个排在一起的字符。
(2)放在单引号或双引号之中。 'abc' "abc"。
(3)单引号字符串的内部,可以使用双引号。
(4)双引号字符串的内部,可以使用单引号。
(5)反引号`` :反引号允许跨行。
反引号允许字符串跨越多行并可以使用
${…} 在字符串中嵌入表达式。
(1)charAt 方法返回指定位置的字符,参数是从0开始编号的位置。
找一个字符串中的某个位置是那个字符串。
charCodeAt:返回字符串指定位置的 Unicode 码点(十进制表示)
(2)[]
字符串可以被视为字符串数组,因此可以用数组的方括号运算符,用来返回某个位置的字符
但是字符串只是数组的相似性而已实际上、没办法改变字符串中的某个字符
length 只是返回了字符串的长度,该属性没办法改变
字符串使用Unicode字符集,js内部所有的都是Unicode表示的。
JavaScript中的字符串使用的是 UTF-16 编码。
toLowerCase() 和 toUpperCase()方法可以改变大小写。
String对象是js原生提供的三个包装对象之一。用来生成字符串对象。
(1)构造函数
字符串对象是一个类数组对象,很像数组,但不是真正的数组。
(2)将任意的值转成字符
用于连接两个字符串,返回一个新字符串,不改变原字符串。
从原字符串取出子字符串并返回,不改变原字符串。
它的第一个参数是子字符串的开始位置,
第二个参数是子字符串的结束位置(不含该位置)。
如果省略第二个参数,则表示子字符串一直到原字符串结束。
用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。
它的第一个参数表示子字符串的开始位置,
第二个位置表示结束位置(返回结果不含该位置)
如果省略第二个参数,则表示子字符串一直到原字符串结束。
区别:slice 和 substring的区别?
slice:
如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。
如果第一个参数大于第二个参数(正数情况下),slice()方法返回一个空字符串。
substring:
如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。
如果参数是负数,substring方法会自动将负数转为0。
由于这些规则违反直觉,因此不建议使用substring方法,应该优先使用slice。
总结:获取子字符串,使用 slice 或 substring。
用于确定一个字符串在另一个字符串中第一次出现的位置,
返回结果是匹配开始的位置。如果返回-1,就表示不匹配。
indexOf方法还可以接受第二个参数,表示从该位置开始向后匹配。
lastIndexOf
lastIndexOf方法的用法跟indexOf方法一致,主要的区别是lastIndexOf从尾部开始匹配,indexOf则是从头部开始匹配。
总结:查找子字符串时,使用 indexOf 或 includes/startsWith/endsWith 进行简单检查。
endsWith 用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。
用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。
toLowerCase方法用于将一个字符串全部转为小写,
toUpperCase则是全部转为大写。
它们都返回一个新字符串,不改变原字符串
split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。
如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符。
如果省略参数,则返回数组的唯一成员就是原字符串。
split方法还可以接受第二个参数,限定返回数组的最大成员数。
返回一个新字符串,表示将原字符串重复n次。
字符串补全长度的功能。如果某个字符串不够指定长度,
会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
trimStart()消除字符串头部的空格,
trimEnd()消除尾部的空格。
返回一个由替换值(replacement)替换部分或
所有的模式(pattern)匹配项后的新字符串。
模式可以是一个字符串或者一个正则表达式,
替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
如果pattern是字符串,则仅替换第一个匹配项.
web前端笔记4-有讲 如果感兴趣、请参考之前文章
⑩ 《web前端笔记30》css三栏布局、左右两栏宽度固定,中间自适应
三栏布局一般指的是页面中一共有三栏, 左右两栏宽度固定,中间自适应的布局 ,三栏布局的具体实现:
利用浮动和负边距来实现。父级元素设置左右的 padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为父级元素的宽度,因此后面两列都被挤到了下一行,通过设置 margin 负值将其移动到上一行,再利用相对定位,定位到两边。