当前位置: 首页 > Web前端 > HTML5

你会用到的15个前端小技巧

时间:2023-04-05 19:25:37 HTML5

css干货满满:https://lhammer.cn/You-need-t...1.一行css文字超出...`overflow:hidden;text-溢出:省略号;空白:nowrap;`2。多行文字超出显示...`display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;`3.IOS手机容器滚动条做滑动不流畅`overflow:auto;-webkit-overflow-scrolling:touch;`4.修改滚动条样式,隐藏div元素的滚动条`div::-webkit-scrollbar{display:none;}`div::-webkit-scrollbar滚动条的全部部分div::-webkit-scrollbar-thumb滚动条里面的小框,可以上下移动(或者从左到右,取决于垂直滚动条)还是水平滚动条的轨道div::-webkit-scrollbar-track(the滚动条轨道两端的按钮都配备了Thumbdiv::-webkit-scrollbar-button,可以通过点击div::-webkit-scrollbar-track-piece来微调小框的位置。内轨道,滚动条的中间部分(去掉div::-webkit-scrollbar-corner角,这是两个滚动条div::-webkit-resizer的交点两个滚动条交点上的小控件用于通过拖动来调整元素的大小,注意这个方案存在兼容性问题,一般需要隐藏滚动条的时候,我都是通过定位用色块覆盖,或者增加子元素的大小,父级元素使用overflow-hidden截断了滚动条部分。暴力而直接。5、用css写一个三角形的角标元素,宽高设置为0,通过border属性设置,使其他三个方向的边框颜色透明或背景色保持不变,以及剩余边框的颜色设置为所需的颜色。`div{宽度:0;高度:0;边框:5pxsolid#transparent;border-top-color:red;}`6.解决ios音频无法自动播放或循环播放的问题。ios手机在使用音频或视频播放时,个别机型无法实现自动播放,可以使用如下代码hack。`//解决ios音频无法自动播放或循环播放的问题varmusic=document.getElementById('video');varstate=0;document.addEventListener('touchstart',function(){if(state==0){music.play();state=1;}},false);document.addEventListener("WeixinJSBridgeReady",function(){music.play();},false);//循环music.onended=function(){音乐.load();music.play();}`7.水平和垂直居中我一般只用positioning或者flex两种方式,我觉得够用了。`div{宽度:100px;高度:100px;位置:绝对;顶部:0;右:0;底部:0;左:0;保证金:自动;;证明内容:居中;对齐项目:居中;}`8。隐藏页面元素display-none:元素不存在,去掉dom中的opacity-0:元素透明度会是0,但是元素依然存在,绑定的事件依然有效,依然可以触发执行。visibility-hidden:元素隐藏,但元素仍然存在,页面上无法触发该元素的事件。9.前端工程说到前端工程,很多人会想到webpack,这是错误的。webpack只是前端工程的一部分。在整个工程过程中,他帮助我们解决了大部分问题,但不是全部。前端工程是一种通过工具来提高效率和降低成本的手段。近年来,受到广泛关注和讨论。主要原因是现代前端应用的功能需求不断提高,业务逻辑也越来越复杂。前端作为当前互联网时代唯一不可或缺的技术,可以说是占据了整个开发行业。半个国家。从传统网站到H5、手机APP、桌面APP、小程序。前端技术几乎无所不能全面覆盖。这些表象的背后,其实是行业对开发者的要求发生了翻天覆地的变化。以往在前端编写demo、设置模板、调整页面的刀耕火种方式已经完全不能满足现在对开发效率的要求。前端工程就是在这样的背景下被摆上台面,成为前端工程师必备的手段之一。一般来说,前端工程包括项目初始化、项目开发、集成、构建、打包、测试、部署等过程。工程就是从工程的角度去解决这些问题。比如我们一般使用npminit进行项目初始化,plop创建页面模板。我们喜欢用ES6+开发,但是需要通过babel编码成ES5。我们使用git进行持续集成,但是为了保持开发标准,我们引入了ESLint,一般用于部署。ci/cd或者jenkins等。前端工程是一个比较大的话题,后面会单独讨论。10、contenteditablehtml中的大部分标签是不可编辑的,但是添加contenteditable属性后,标签会变成可编辑的。`

`但是通过该属性将标签变为可编辑状态后,只有输入事件,没有变化事件。也不可能像表格那样通过maxlength来控制最大长度。我也忘了是在什么情况下用过的,以后想起来再补充。11.calc这是一个css属性,我一般称之为css表达式。css的值是可以算出来的。最有趣的是,他可以计算出不同单位之间的差异。一个很好用的函数,缺点是不太好读。接收者无法一眼看出20px是什么。`div{width:calc(25%-20px);}`12.Proxy和Object.defineProperty的区别Proxy是代理的意思。我一般都是教他拦截器,可以拦截对一个对象的操作。用法如下,new创建一个对象,第一个参数是要拦截的对象,第二个参数是对象操作的描述。实例化后,返回一个新对象。当我们对这个新对象进行操作时,我们会调用我们描述中对应的方法。`newProxy(target,{get(target,property){},set(target,property){},deleteProperty(target,property){}})`Proxy不同于Object.definedProperty。Object.defineProperty只能监控属性的读写,而Proxy除了读写之外还可以监控属性的删除、方法调用等。通常我们想要监听数组的变化,基本都是依赖重写数组方法的方式,这也是Vue的方式,Proxy可以直接监听数组的变化。`const列表=[1,2,3];constlistproxy=newProxy(list,{set(target,property,value){target[property]=value;returntrue;//标志设置成功}});list.push(4);`Proxy以非侵入的方式监督对象的读写,而defineProperty需要以特定的方式定义对象的属性。13.Reflect是ES2015中新增的对象。纯静态对象不能被实例化,只能通过静态方法调用。与Math对象类似,只能以类似Math.random的方式调用。Reflect内部封装了一系列对对象的低级操作,一共14个,其中1个被丢弃,13个保留。Reflect的静态方法和Proxy中描述的方法完全一样。也就是说,Reflect成员方法是Proxy处理对象的默认实现。Proxy对象默认的方法是调用Reflect内部的处理逻辑,即如果我们调用了get方法,那么在内部,proxy会将get原封不动的交给Reflect,如下。`constproxy=newProxy(obj,{get(target,property){returnReflect.get(target,property);}})`Reflect和Proxy没有绝对的关系,我们一般把它们放在一起为了方便理解两者中的。那为什么会有Reflect对象呢?其实它最大的用处就是提供了一套统一操作Object的API。判断一个对象是否有属性,可以使用in运算符,但不够优雅,也可以使用Reflect.has(obj,name);删除一个属性,可以使用delete,也可以使用Reflect.deleteProperty(obj,name);获取所有属性名称可以使用Object.keys或Reflect.ownKeys(obj);我们推荐使用Reflect的API来操作对象,因为它是未来。14、解析get参数通过replace方法获取url中的参数键值对,可以快速解析get参数。`constq={};location.search.replace(/(1+)=(2+)/g,(_,k,v)=>q[k]=v);console.log(q);`15。解析连接url,可以创建a标签,将href属性赋值给a标签,获取location对象上的protocol、pathname、origin等属性。`//创建标签constaEle=document.createElement('a');//将href路径分配给标签aEle.href='/test.html';//访问aEle中的属性aEle.protocol;//获取协议aEle.pathname;//获取pathaEle.origin;aEle.host;aEle.search;`?&=?&?