웹 프론트엔드 CSS 튜토리얼 CSS 스타일 시트의 배경 렌더링 효율성_경험 교환

CSS 스타일 시트의 배경 렌더링 효율성_경험 교환

May 16, 2016 pm 12:09 PM

MzTreeView1.0 트리 컨트롤이 출시된 이후로 많은 피드백을 받았고 많은 네티즌들이 이 컨트롤에 대한 많은 관련 제안과 많은 버그와 단점을 지적했기 때문에 새 버전을 작성할 계획입니다. Tree는 모든 사람의 제안을 구현에 통합합니다. 요즘 새 버전의 트리를 작성하고 있는데 트리 제어에서 가장 중요한 것은 효율성입니다. 특히 노드 수가 많은 경우에는 약간 덜 효율적인 모드가 브라우저를 다운시키게 됩니다. 트리에서는 비동기 데이터 로딩에 대한 지원을 추가하는 등 효율성을 높이는 것이 최우선 과제입니다. 또한 트리 구조의 수직선을 스타일 시트(배경 이미지)를 사용하여 구현하는 아이디어도 있습니다. 스타일 시트 배경 이미지는 한 번만 로드하면 되며, 이제 이 모드(여러 CSS 스타일 시트의 배경 렌더링 효율성_경험 교환 사용) 이미지에 캐싱 메커니즘이 있지만 여전히 각 작은 이미지에 대해 한 번씩 서버에 요청할 수 있으므로 얼마나 좋다고 생각했습니다. 이를 달성하기 위해 스타일 시트를 사용하는 것입니다. 코드가 간소화되고 구조가 명확하며 효과가 훌륭하지만 거의 일주일 동안 테스트한 결과 렌더링 효율성이 완전히 실패했습니다. 스타일 시트가 너무 열악합니다. 새로운 아이디어는 실현되지 못했고 약간의 답답함도 느꼈지만 테스트 결과를 모두와 공유해야겠다는 생각이 들었습니다.

여기서는 트리의 왼쪽에 ┌ ├ └ │가 있는 수직선에 대해 설명하겠습니다. 이 수직선은 내 버전 1.0에서는 작은 그림을 쌓아서 사용합니다. , 이러한 유형의 스타일 시트 사용은

을 사용합니다. 这种代码来实现的,样式表负责填充背景图。

    #mtvroot div td{width:20px;height:20px;}
    #mtvroot .l0{배경:url(line0.gif ) 반복 없음 센터}
    #mtvroot .l1{배경:url(line1.gif) 반복 없음 센터}
    #mtvroot .l2{배경:url(line2.gif) 반복 없음 센터}
#mtvroot .l3{배경:url(line3.gif) 반복 없음 센터}
    #mtvroot .l4{배경:url(line4.gif) 반복 없음 센터}
    #mtvroot .ll{배경:url (line5.gif) 반복 없음 센터}
    #mtvroot .pm0{배경:url(plus0.gif) 반복 없음 센터}
    #mtvroot .pm1{배경:url(plus1.gif) 반복 없음 센터}
    #mtvroot .pm2{배경:url(plus2.gif) 반복 없음 센터}
    #mtvroot .pm3{배경:url(plus3.gif) 반복 없음 센터}
    #mtvroot . 확장 .pm0{배경:url(minus0.gif) 반복 없음 센터}
    #mtvroot .expand .pm1{배경:url(minus1.gif) 반복 없음 센터}
    #mtvroot .expand .pm2{ background:url(minus2.gif) 반복 없음 센터}
    #mtvroot .expand .pm3{배경:url(minus3.gif) 반복 없음 센터}

    상면这段CSS是我재脚本里动态生成成一段样式讵, 我把它贴上来, 多助于后side讲解.运用样式表之后, 果真精精简了许多, 每个节点的生也够快,但我发现,当我的树节点weight达到,比如说300-500个节点之后,节点生成成效率没有影响什么,但每个节点的节点的要开/收缩很慢很慢,需要几秒钟以上甚至10秒,且这个期间的CPU·용率是100%。 대단해요.

我首先的反应是:是不是用了多多的影响了效率?因为我每一个节点每一个节点每了一个
,但是我把
换成了


    以一个500节点량来说吧,1.0里左边大概要堆积2000个左右의 작은 사진. 작은 그림은 더 이상 의미가 없습니다. 나는 새로운 앱을 사용하고 있습니다.测试了各种情况,再对比1.0 특별한 혁신적인 유형의 CPU는 CPU의 사용에 있어 매우 높습니다.左边 #mtvroot 这part分去掉,也就是去掉样式表的依托关系,测试的结果发现效率改善了很多,但耗时依然是可观的,多多 .

    다른 사람과 같지 않은 浏览器,测试的结果也不太一样,inIE里最为恶心,比如说我某个节点有500子节点,我将它收起(CPU100%,等待3-5秒),也就是display="none",这时候若我去收起这个节点的父节点Illuminati에는 个节点,收起应该是即时的事,但结果不然,结果又是3-5秒的 CPU100%,这个让我狂郁闷,也就是说即使HTML对象被display="none"隐藏掉了,但是对它的父级进行任何操작동 时候,IE会对这些被隐藏的对象用样式表 重新渲染一遍,真是搞不懂IE 开发者当初是怎么想的。

    저는 FIREFOX리测试了一下,收起的时候(display= 없음) 是瞬间的, 可以肯定, FF는 对待被隐藏的对象不会再消耗精力.稍微要快些。

    통상적인 화면에서 우리는 더 많은 정보를 얻을 수 있습니다.候会引起它的所以子孙对象 tive 样式表 重 新渲染 ; FireFox 对待被display=none은 새로운 기능을 제공하지 않습니다.

그러면 왜 이 스타일 시트의 렌더링 효율성 문제가 이전에는 발견되지 않았습니까? 헤헤, 웹 페이지를 만들 때 모든 사람이 이렇게 극단적인 경우는 드뭅니다. 배경 이미지를 렌더링하기 위해 스타일 시트가 필요한 페이지에는 수천 개의 배경 이미지가 있습니다. 보통은 몇 군데, 수십 군데밖에 없어서 렌더링의 효율성을 느낄 수 없고, 이런 점에서도 브라우저별 차이를 느낄 수 없습니다. 그러나 트리와 같은 컨트롤을 만들 때 큰 데이터 배열, 생성된 HTML 개체 수 등과 같은 다양한 극단적인 문제에 직면하게 됩니다. 렌더링 효율성의 차이는 JS 스크립트를 작성할 때만 나타나는 문제 중 하나입니다. 마주쳤다. 오늘 이 테스트 결과가 앞으로 모든 분들이 프로그램을 작성하실 때 참고하시고, 디자인하실 때 참고하시길 바라면서 공유합니다.

마지막으로, 제가 작성한 컨트롤에 대한 여러분의 긍정과 지지에 감사드립니다!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

첫 번째 맞춤형 전환을 만듭니다 첫 번째 맞춤형 전환을 만듭니다 Mar 15, 2025 am 11:08 AM

Svelte Transition API는 맞춤형 전환을 포함하여 문서를 입력하거나 떠날 때 구성 요소를 애니메이션하는 방법을 제공합니다.

GraphQL 캐싱 작업 GraphQL 캐싱 작업 Mar 19, 2025 am 09:36 AM

최근에 GraphQL 작업을 시작했거나 장단점을 검토 한 경우 "GraphQL이 캐싱을 지원하지 않음"또는

쇼, 말하지 마십시오 쇼, 말하지 마십시오 Mar 16, 2025 am 11:49 AM

웹 사이트의 컨텐츠 프레젠테이션을 설계하는 데 얼마나 많은 시간을 소비합니까? 새 블로그 게시물을 작성하거나 새 페이지를 만들 때

Redwood.js 및 동물 군을 사용하여 이더 리움 앱 구축 Redwood.js 및 동물 군을 사용하여 이더 리움 앱 구축 Mar 28, 2025 am 09:18 AM

최근 Bitcoin의 가격이 20k 달러가 넘는 USD가 최근에 등반되면서 최근 30k를 끊었으므로 Ethereum을 만드는 데 깊이 다이빙을 할 가치가 있다고 생각했습니다.

Leakenty와 함께 자신의 Bragdoc을 만듭니다 Leakenty와 함께 자신의 Bragdoc을 만듭니다 Mar 18, 2025 am 11:23 AM

개발자로서 어느 단계에 있든, 우리가 완료 한 작업은 크든 작든, 개인적이고 전문적인 성장에 큰 영향을 미칩니다.

CI/CD에 약간 CI/CD에 약간 Apr 02, 2025 pm 06:21 PM

"웹 사이트"는 "모바일 앱"보다 더 잘 맞지만 Max Lynch 의이 프레임이 마음에 듭니다.

vue 3 vue 3 Apr 02, 2025 pm 06:32 PM

그것은#039; VUE 팀에게 그것을 끝내는 것을 축하합니다. 나는 그것이 막대한 노력과 오랜 시간이라는 것을 알고 있습니다. 모든 새로운 문서도 있습니다.

NPM 명령은 무엇입니까? NPM 명령은 무엇입니까? Mar 15, 2025 am 11:36 AM

NPM 명령은 서버 시작 또는 컴파일 코드와 같은 것들에 대한 일회성 또는 지속적으로 실행되는 프로세스로 다양한 작업을 실행합니다.

See all articles