DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]
Composition(합성)단계에서는 여러 Layer를 가지고 하나의 화면에 합성시킵니다. 그런데... 그 여러개의 Layer들은 누가 만드는건가요? Layout > Painting > Composition 단계에서 갑자기 여러개의 Layer가 나타나니까 혼란스럽네요. 요약하면... Layer 여러개는 어떤 단계에서 생성되는건지? 혹시, 렌더트리 여러개가 Layer 여러개인건지?
안녕하세요? 강의를 듣다가 궁금한 것이 있어서 글을 남깁니다. 섹션 5에서 stopPropagation() 설명이 나올때 상위로 전파 차단이 라고 설명을 주셨는데, 강의를 모두 듣고 보면 상위로 전파 차단 뿐만이 아니라 즉 캡쳐링 뿐만 아니라 버블링도 차단 해주는 걸로 이해가 되고 있습니다. 혹시 상위로 전파 차단이란 것이 캡쳐링이 아닌 다른 의미로 쓰인건지 궁금합니다. 상위로 전파 차단이 혹사 다른 의미로 쓰였다면 그 의미에 대해서 알 수 있을까요?
DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]
안녕하세요? 수업을 듣다 질문이 있어서 남기게 됐습니다! 브라우저가 렌더링 과정이 DOM & CSSOM -> Render Tree -> layout 단계 -> Paint -> Compositing 단계 순서로 이해하고 있습니다. 이번 수업에서는 <script src="url"></script>를 발견하면 DOM 파싱을 멈추고 script 파일을 다운 후에 script가 먼저 실행한 다음 DOM을 다시 파싱 하는 걸로 이해했습니다. 여기서 궁금한게 생겼는데요. <body> 끝에 script 태그가 있고, script 코드 내용에서 DOM에 접근해서 한 요소의 widht, height, background를 변경하는 코드가 있어 먼저 실행 되었다면 브라우저 렌더링 어느 부분에 영향을 미치는지 궁금합니다. 제가 생각하기에는 script가 먼저 실행되고 나머지 파싱이 되는거라는 수업 내용에 따르면 DOM & CSSOM에서 적용이 된 후 다음 단계들을 따를 것 같습니다. 이 수업을 듣기 전에는 리플로우, 리페인트 과정이 있을 거라고 생각했으나 리플로우, 리페인트 과정이 없겠다는 생각이 들어 질문하게 되었습니다. 감사합니다.
⚠ 질문 작성법 - 몇 섹션의 어떠한 강의에 대한 질문인지 작성해주세요. (ex. 섹션2 조건문에 대한 질문) - 질문은 최대한 구체적으로 작성해주세요. - 비슷한 질문이 올라와있는지 확인해주세요. - 코드가 포함된 질문은 아래와 같이 코드블록을 사용해주세요. console.log("hello world"); 안내사항 - 질문에 대한 답변은 보통 주말, 공휴일을 제외한 평일 오전 시간 에 답변해드립니다. - '질문 해결'은 답변 작성일 기준 1일 이후에 설정됩니다. 추가: 아래 환경 외에도 윈도우 크롬브라우져 환경에서도 폰트관련 css등이 전혀 동작하지 않고 있습니다. 확인 바랍니다. ========================== 섹션7 33.[안내] 프로젝트 코드 주소 에서 소스 다운받고 index.html파일을 Linux firefox브라우져에서 열어보면 제대로 표시되지 않습니다. 브라우져상관 없이 정상 실행 되도록 하려면 어떻게 해야 하나요?
취업준비를 위해 react, next 강의를 듣기전에 프레임워크에 대한 깊은 이해를 위해 바닐라js로 spa + csr방식을 체득하기 위해 이 강의를 듣고 있습니다. spa + ssr방식 또한 react,next에서도 사용한다고 알고 있는데 현재 강의에서 spa + csr방식만 잘 체득하고 프레임워크에 대한 공부를 해도 충분할지 제대로 이해하려면 바닐라 js로 spa + ssr방식도 이해하고 직접 구현 해보면서 체득하고 넘어가야지 프레임워크에 대한 깊은 이해가 가능할지가 궁금합니다..
⚠ 질문 작성법 - 몇 섹션의 어떠한 강의에 대한 질문인지 작성해주세요. (ex. 섹션2 조건문에 대한 질문) - 질문은 최대한 구체적으로 작성해주세요. - 비슷한 질문이 올라와있는지 확인해주세요. - 코드가 포함된 질문은 아래와 같이 코드블록을 사용해주세요. console.log("hello world"); 안내사항 - 질문에 대한 답변은 보통 주말, 공휴일을 제외한 평일 오전 시간 에 답변해드립니다. - '질문 해결'은 답변 작성일 기준 1일 이후에 설정됩니다. 섹션4 23 Promise객체 강의에서 12:05시간에 아래와 같은 예제를 설명하는데, const executor = (resolve, reject) => { setTimeout( () => { reject("실패"); }, 3000); }; const promise = new Promise(executor); promise .then((res) => { console.log(res); }) .catch((err) =>{ console.log(err); }); 코드 아래에서 promise.then(...).catch(...); 와 같은 형식으로 사용될 수 있는 이유를 알려주세요. then과 catch는 property라고 했는데, 이와 같이 초기화 하는 내용은 강의에서 못들은것 같고, Promise chaining으로 넘겨짚기에는 각 함수에서 객체를 리턴하지도 않고... 모르겠네요.
"html이 어플레이케이션 중심으로 전환되었다"는 뜻이 html5 에서는 이전과는 달리, 단순 줄글 텍스트 데이터 형식으로 콘텐츠를 표현하는 것이 아니라, canvas나 video와 같이 텍스트 형식을 벗어난 엘리먼트들로 콘텐츠를 표현한다는 의미일까요? 그리고 여기서 정확히 "애플리케이션"이 의미하는 바가 무엇인지 궁금합니다. canvas, video와 같은 엘리먼트의 구현체(?)가 DOM에 객체를 추가하기 위해 계산등을 처리해주기에 이들이 "애플리케이션"으로써 분류된걸까요? 그리고 "마크업"이라는 것을 텍스트 형식으로 표시된 의미론적으로 분류된 텍스트라고 이해해도 될까요? 그렇다면 canvas도 마크업으로써 콘텐츠를 표현하는 것이지만, html 이 parse되어 DOM 으로 만들어질때, 즉 메모리에 객체 형태로 올라갈 때 그 형식이 텍스트가 아닌 다른 무언가이기에 "어플리케이션"이라는 표현이 사용되는 것일까요? 그렇다면 XHTML와 그 이전 버전에서는 canvas, video같은 앨리먼트 없이 오로지 텍스트를 표현하는 태그들만 사용되었던건가요? 좋은 강의 늘 감사합니다.
선생님 강의에 보면 getElementById로 <div class="bookmark-item-add-btn"> 이 부분 가져오는데, 강의를 여러번 돌려봐도 아이디는 없고 클래스만 설정했는데 어떻게 코드가 강의에선 잘 돌아가는지 모르겠어요 ㅠㅠ 똑같이 따라하려는데 안되네요 ㅠㅠ
안녕하세요. 좋은 강의 감사합니다! 26. 클래스와 스타일을 다루는 가장 강력한 방법 – classList, style, 그리고 리플로우까지 에서 인라인 스타일로 스타일을 바꾸면 리플로우/리페인트가 자주 발생할 수 있어 성능에도 안 좋을 수 있다고 설명하셨는데요. 예시로 들어주신 코드에서는 어차피 자바스크립트 엔진이 싱글 스레드라 클래스든 인라인 스타일이든 모두 반영된 후에, 리플로우/리페인트가 발생하기 때문에 성능적으로는 유의미한 차이가 없을 것 같은데요. 좀 더 구체적인 설명을 해주실 수 있을까요? ChatGPT 답변도 같이 첨부합니다. https://chatgpt.com/share/69181628-34d0-8007-8e81-02401c649370
코드 관련 질문은 아래와 같이 '코드블럭' 기능을 이용해주세요! + 오류 메세지도 함께 올려주시면 좋아요 🙂 안녕하세요 강의에 따라 그림이 로드 되는 것까지는 성공했지만 이후 handleLoadMore를 넣고 배열이 나오지 않아요... 그리고 handleLoadMore함수가 어떻게 실행까지 이어지는지 알려주세요 예) handleLoadMore가 new CityList의 인수로 지정되고 cityList 함수에 부여되어 00줄 console.log함수로 출력 추가한 코드만 넣었습니다...! 주석 단 부분으로 확인해보니 이렇게 작동됨은 확인했습니다! const cityList = new CityList({ $app, initialState: this.state.cities, handleLoadMore: async () => { const newStartIdx = this.state.startIdx + 40; const newCities = await request(newStartIdx, this.state.region, this.state.sortBy, this.state.searchWord); } }); //console.log(cityList) ⚠ 답변은 평일 오전 10시에 순차적으로 작성해드립니다. ⚠ '질문 해결'은 답변 작성일 기준 1일 이후에 적용됩니다.