、防止高频调用的debounce函数
这个debounce函数对于那些执行事件驱动的任务来说是必不可少的提高性能的函数。如果你在使用scroll,resize,key*等事件触发执行任务时不使用降频函数,也行你就犯了重大的错误。下面这个降频函数debounce能让你的代码变的高效:
这个debounce函数在给定的时间间隔内只允许你提供的回调函数执行一次,以此降低它的执行频率。当遇到高频触发的事件时,这样的限制显得尤为重要。
二、禁止重复调用、只允许执行一次的once函数
很多时候,我们只希望某种动作只能执行一次,就像是我们使用onload来限定只在加载完成时执行一次。下面这个函数就能让你的操作执行一次后就不会再重复执行。
这个once函数能够保证你提供的函数只执行唯一的一次,防止重复执行。
三、获取一个链接的绝对地址getAbsoluteUrl
获取链接的绝对地址并不像你想象的那么简单。下面就是一个非常实用的函数,能根据你输入的相对地址,获取绝对地址:
这里使用了a标签href来生成完整的绝对URL,十分的可靠。
四、用JavaScript创建新的CSS规则insertRule
有时候我们会使用一个CSS选择器(比如document.querySelectorAll)来获取一个 NodeList ,然后给它们每个依次修改样式。其实这并不是一种高效的做法,高效的做法是用JavaScript新建一段CSS样式规则:
这些做法的效率非常高,在一些场景中,比如使用ajax新加载一段html时,使用上面这个方法,你不需要操作新加载的html内容。
五、设定时间/频率循环检测函数
debounce函数是借助于某个事件的触发。但有时候并没有这样的事件可用,那我们只能自己写一个函数来每隔一段时间检查一次。
切图 qietu(.com)
十几个函数,对于前端的开发的同学来说,非常实用,比如,如何生成一个唯一的字符串ID,如何转义HTML特殊字符。而对于想提升JS基础能力及面试能力的同学来讲,也非常有用,每一个功能考的都是你的基本功扎不扎实的问题。能学东西
我们可以使用Math.random方法来生成 一个随机字符中,比如,当我们需要生成一个唯一字符串ID的时候,这就非常适合。
代码如下:
CSS 包含了许多函数,而且它能够完成许多早期需要用 JavaScript才能完成的事情。每年都有新的特性被添加进来,这让我们的开发更加轻松,也减少了对JavaScript的依赖。CSS 函数是它所具有的最强大的特性之一,在本文中,我将介绍一些我认为有用的函数。
attr 函数用于获取所选元素的属性值。它接受三个参数,属性名称,类型和默认值。
语法: attr( attribute-name? [,]? )
事例:
<p data-text="the attr function"
data-tooltip="Hi from attr!" class="attr">This text is combined with
</p>
css
p::after {
content: ' ' attr(data-text);
}
p.attr:hover::after {
content: ' ' attr(data-tooltip);
background-color: orange;
color: white
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
这个函数使我们能够计算CSS值,而不是指定确切的值。通常用于计算元素的大小或位置。它支持加法、减法、乘法和除法。
需要特别注意重要一点是+和-运算符必须用空格隔开,不然无法正常工作。*和/运算符不有这限制,但出于一致性的考虑,建议添加空格。
另外,很棒的是,我们可以混合CSS单位,例如,我们可以减去百分比和像素。
我们可以用calc构建一个带有居中元素的示例:
<p class="calc">Centered with calc</p>
css
p.calc {
padding: 10px;
background-color: orange;
color: white;
width: 200px;
text-align:center;
margin-left: calc(50% - 100px)
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
通过这个函数,我们可以使用一个自定义属性的值作为另一个CSS属性的值。简单地说,我们可以定义一个颜色,例如,将它放在自定义属性(CSS变量)中,然后通过调用var函数重用该属性值。
与CSS变量一起,该函数提高了可维护性并减少了重复。一个用例是为网站创建主题。
此函数接受两个参数,即自定义属性和一个默认值,如果出现问题,将使用它们。
:root {
--bg-color: green;
--color: white
}
p.var {
background-color: var(--bg-color);
color: var(--color)
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
就我个人而言,我从未使用过这种方法,但它看起来是很有趣。这个函数返回指定计数器的当前值,需要与 counter-reset和counter-increment 配合使用。
我们可以用它来计算其他元素,比如有序列表。
<div class="counter">
<span>Mars</span>
<span>Bounty</span>
<span>Snickers</span>
</div>
源码:https://codepen.io/protic_milos/pen/GRpYJKd
这个函数创建一个圆形区域来屏蔽它所应用的元素。你可以指定它的半径和位置。通常与图像一起使用来创建圆角形状。此函数是clip-path属性值。
另外,值得一提的是,除了圆之外,您还可以创建椭圆和多边形形状。
<img class="circle"
src="https://devinduct.com/Uploads/PostImages/1122dcb9-954a-4641-9ca6-c38e9472698f.png"
/>
css
img.circle {
clip-path: circle(30%);
}
源码:https://codepen.io/protic_milos/pen/GRpYJKd
正如我之前多次提到的,在很多情况下,开发人员都忽视了CSS的可能性,因此失去了web站点的简单性。每一年我们都可以依靠CSS为我们提供所需的设计能力,这很好,JavaScript 应该把注意力放在其他事情上,而不是设计上。
作者:Milos Protic 译者:前端小智 来源:devinduct
原文:https://devinduct.com/63/5-useful-css-functions
*请认真填写需求信息,我们会在24小时内与您取得联系。