Javascript中文本代码片段使用
疑问一:什么是文本代码片段?
解答:文本代码片段类似与一个容器,在里面可以添加多种元素疑问二:使用文本代码片段有什么好处?
解答:假设已知一个div容器,需要在里面添加多个p标签。按照常规思路,我们可以利用一个for循环对其循环添加,如下:
//往div容器利用for遍历添加元素
let div = document.querySelector("div")
for(let i = 0;i<10;i++)
{
let p = document.createElement("p")
div.innerHTML += p // 或者 div.appendChild(p)
}
但是这种方法会使得网页一直重排,性能会大大降低,比如循环10次,网页就需要重排10次,那么重复100次、1000次、10000次。。。。因此,这个时候我们可以使用文本代码代码片段,使它只需要重排一次
疑问三:文本代码片段的原理是什么?
解答:文本代码片段可以理解为是一个缓存区,就按我们生活中的例子来说,可以理解为物流中心,每天有很多快递从全国各地发出,然后进入物流中心,对其进行地区划分后统一派送,而不是由快递员一件一件的拿着到处派送,这样会浪费大量的时间和人力,而且效率也底下。
文本代码段也是如此,先把需要添加到网页上的元素先全部添加到文本代码片段上,然后再将文本代码片段添加到需要插入的地方,这样,网页只需要重排一次即可。
那么,我们了解了文本代码片段的好处之后,该如何使用呢?
假如,我们需要在box里面添加多个p标签,直到充满box元素
html和css代码如下:
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box{
width: 560px;
height: 330px;
background-color: pink;
margin: 30px auto;
}
p{
width: 60px;
height: 30px;
background-color: red;
margin: 10px;
display: inline-block;
}
</style>
<body>
<div class="box"></div>
</body>
js的代码如下:
let box = document.querySelector(".box") //获取box元素
let len = ((box.offsetWidth/80)|0)*((box.offsetHeight/50)|0) //计算可以添加p标签的个数
let meet = document.createDocumentFragment() //创建文本代码片段
for(let i = 0;i<len;i++){
let p = document.createElement("p") //创建p标签
meet.appendChild(p) //利用循环将创建的p标签添加到文本代码片段中
}
box.appendChild(meet) //将文本代码片段添加到box元素中