关于元素显示和隐藏不同做法的区别

来源:4-5 HTML优化【必会】

大标哥

2020-08-03

老师下面这三种的在渲染上有什么样的区别

第一种使用display:none:
<div className={styles.pic_slide}> {photoList.map((item, i) => ( <img key={item} src={item} alt="" style={{display:index === i ? "inline-block" : "none"}} /> ))} </div>

第二种使用绝对定位:
<div className={styles.pic_slide} style={{ width:600∗lengthpx‘,left:‘{600 * length}px`, left: `600lengthpx,left:{index * -600}px}} > {photoList.map(item => <img key={item} src={item} alt="" />)} </div>

第三种只渲染一个元素:
<div className={styles.pic_slide}> {photoList.map((item, i) => { return index === i && ( <img key={item} src={item} alt="" /> ); })} </div>

写回答

1回答

Mr_Max

2020-08-04

同学你好!

第一种情况指定图片使用display:none隐藏,其周围的图片都会受到影响,会引发开销较高的回流和重绘,当然也取决于指定图片的位置。

第二种情况使用绝对定位,指定图片本身会受影响,但其他图片不受影响不会触发回流。fixed同理。

第三种情况显示一个指定元素,看其放置在哪里,是否影响页面上已有元素。

0
0

前端性能优化企业级解决方案 6大角度+大厂视野

只要项目还在线,性能优化永远是时刻要关注的问题

1109 学习 · 226 问题

查看课程