1.JS为什么单线程
一个简单的原因就是,js在设计之初只是进行一些简单的表单校验,这完全不需要多线程,单线程完全可以胜任这项工作。即便后来前端发展迅速,承载的能力越来越多,也没有发展到非多线程不可的程度。
而且还有一个主要的原因,设想一下,如果js是多线程的,在运行时多个线程同时对DOM元素进行操作,那具体以哪个线程为主就是个问题了,线程的调度问题是一个比较复杂的问题。
HTML5新的标准中允许使用newWorker的方式来开启一个新的线程,去运行一段单独的js文件脚本,但是在这个新线程中严格的要求了可以使用的功能,比如说他只能使用ECMAScript,不能访问DOM和BOM。这也就限制死了多个线程同时操作DOM元素的可能。
2.使用css写出一个三角形角标
元素宽高设置为0,通过border属性来设置,让其它三个方向的border颜色为透明或者和背景色保持一致,剩余一条border的颜色设置为需要的颜色。
3.水平垂直居中
我一般只使用两种方式定位或者flex,我觉得够用了。
父级控制子集居中
4.css一行文本超出...
5.多行文本超出显示...
6.IOS手机容器滚动条滑动不流畅
7.修改滚动条样式
隐藏div元素的滚动条
div::-webkit-scrollbar滚动条整体部分
div::-webkit-scrollbar-thumb滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
div::-webkit-scrollbar-track滚动条的轨道(里面装有Thumb)
div::-webkit-scrollbar-button滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
div::-webkit-scrollbar-track-piece内层轨道,滚动条中间部分(除去)
div::-webkit-scrollbar-corner边角,即两个滚动条的交汇处
div::-webkit-resizer两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
注意此方案有兼容性问题,一般需要隐藏滚动条时我都是用一个色块通过定位盖上去,或者将子级元素调大,父级元素使用overflow-hidden截掉滚动条部分。暴力且直接。
8.解决iosaudio无法自动播放、循环播放的问题
ios手机在使用audio或者video播放的时候,个别机型无法实现自动播放,可使用下面的代码hack。
9.隐藏页面元素
display-none:元素不会占用空间,在页面中不显示,子元素也不会显示。
opacity-0:元素透明度将为0,但元素仍然存在,绑定的事件仍旧有效仍可触发执行。
visibility-hidden:元素隐藏,但元素仍旧存在,占用空间,页面中无法触发该元素的事件。
10.前端工程化
一提到前端工程化很多人想到的都是webpack,这是不对的,webpack仅仅是前端工程化中的一环。在整个工程化过程中他帮我们解决了绝大多数的问题,但并没有解决所有问题。
前端工程化是通过工具提升效率,降低成本的一种手段。
近些年被广泛的