pinterest.com 의 절대 div 스태킹 레이아웃을 복제하는 방법
저는 Pinterest.com 의 div 레이아웃을 복제하려고 합니다. 특히 브라우저 크기 조정 시 열 수가 더 많거나 적거나 인접한 열 높이에 따라 세로 쌓기가 달라지지 않도록 조정하는 방법을 찾고 있습니다.소스 코드는 각 분할 위치가 절대임을 나타냅니다.한 공동 설립자가 커스텀 jQuery와 CSS로 완료되었다는 Quora 게시물에 답변했습니다.저는 결과를 왼쪽에서 오른쪽으로 정리했으면 합니다.제가 직접 만들 수 있도록 어떤 지시라도 해주시면 대단히 감사하겠습니다.
핀터레스트 대본을 썼습니다.ID는 레이아웃과 관련이 없으며 다른 상호 작용 관련 JS에 사용됩니다.작동 방식의 기본은 다음과 같습니다.
사전:
- 핀 용기를 완전히 배치합니다.
- 열 너비 결정
- 열(거터) 사이의 여백 결정
배열 설정:
- 상위 컨테이너의 너비를 가져옵니다. 적합할 열 수 계산
- 열 수와 길이가 같은 빈 배열을 만듭니다.레이아웃을 작성할 때 각 열의 높이를 저장하려면 이 배열을 사용합니다(예: 1열의 높이가 배열[0]로 저장됨).
각 핀을 반복합니다.
- 각 핀을 추가하는 순간 가장 짧은 열에 넣습니다.
- "left:" === 열 #(인덱스 배열)에 열 너비 + 여백을 곱한 값
- "top:" === 해당 시점에서 가장 짧은 열에 대한 배열(높이) 값
- 마지막으로 핀 높이를 열 높이(어레이 값)에 추가합니다.
결과는 가볍습니다.크롬에서 50개 이상의 핀으로 된 전체 페이지를 레이아웃하는 데는 <10ms>가 걸립니다.
jQuery Plug-in Masonry에서 이러한 기능을 확인할 수도 있습니다.
우리는 Wookmark에 대해 같은 질문을 여러 번 받았기 때문에 jQuery 플러그인을 출시했습니다.정확히 이런 유형의 레이아웃을 만듭니다.여기서 보기 - Wookmark jQuery 플러그인
모든 옵션을 살펴본 결과, 저는 다음과 같은 방식으로 Pinterest와 유사한 레이아웃을 구현하게 되었습니다.
모든 DIV는 다음과 같습니다.
div.tile {
display: inline-block;
vertical-align: top;
}
이것은 그들이 떠 있을 때보다 그들이 열에 더 잘 위치하도록 만듭니다.
그런 다음 페이지가 로드되면 JavaScript에서 모든 DIV를 반복하여 간격을 제거합니다.다음과 같은 경우에 잘 작동합니다.
- DIV는 높이가 크게 다르지 않습니다.
- 일부 사소한 주문 위반(아래에 있던 일부 요소는 위에서 끌어올릴 수 있음)은 신경쓰지 않습니다.
- 당신은 맨 아래 줄이 다른 높이여도 상관없습니다.
이 접근 방식의 이점 - HTML은 검색 엔진에 적합하며, 방화벽에 의해 비활성화/차단된 JavaScript로 작동할 수 있으며, HTML의 요소 시퀀스는 논리적 시퀀스(이전의 최신 항목)와 일치합니다.
이들은 엔티티를 ID가 있는 열로 분할합니다(나쁜 솔루션...클래스 이름을 사용하는 것이 좋습니다). 그런 다음 열 그룹별로 위치를 계산합니다.
이것을 시도해 보는 게 어때요, 간단한 js 물건들.
http://vanilla-masonry.desandro.com/index.html
또는 jQuery를 사용하여 스크롤 로딩도 가능합니다.
http://masonry.desandro.com/index.html
플로트를 사용하고 최소 너비에 도달하면 최소 너비와 함께 백분율을 사용하여 디브 너비를 크기로 지정하여 디브가 자동으로 떨어지도록 할 수 있습니까?이것이 http://www.goldtree.co.za/work 에서 작동하는 방법입니다.
언급URL : https://stackoverflow.com/questions/7109362/how-to-replicate-pinterest-coms-absolute-div-stacking-layout
'codememo' 카테고리의 다른 글
| 쿼리 패킷 PID를 보내는 동안 Mariadb max 오류가 발생했습니다. (0) | 2023.09.05 |
|---|---|
| 환경 변수나 시스템 속성이 아닌 속성 파일을 통해 액티브 스프링 3.1 환경 프로필을 설정하는 방법 (0) | 2023.09.05 |
| 그루비와 함께 @값 스프링 주석 사용 (0) | 2023.09.05 |
| 드라이브 루트의 Set-Acl이 "객체"의 소유권을 설정하려고 하는 이유는 무엇입니까? (0) | 2023.09.05 |
| NuGet 패키지에서 어셈블리 로드 (0) | 2023.08.31 |