Asked Sep 22nd, 3:50 AM 139 1 1
  • 139 1 1
+1

Hỏi về dựng layouts

Share
  • 139 1 1

Chào mn. Mình đang muốn dựng layouts như hình dưới thì nên dùng gì cho hợp lý nhỉ? Mong mọi người gợi ý ạ

Mình đang thử dùng flex thì nó bị khoảng trắng như thế này ạ 😕

Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 3:28 AM

cái này chia 2 cột trái phải trước, rồi mỗi cột bạn xem là 1 layout nhỏ để code tiếp.

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 3:31 AM
  <div class="flex">
    <div class="flex-left">
      <div class="row1">
        <div class="content"></div>
      </div>
      <div class="row2">
        <div class="row2-flex">
          <div class="row2-flex-left">
             <div class="content"></div>
          </div>
          <div class="row2-flex-right">
             <div class="content"></div>
          </div>
          <div class="row2-flex-left">
             <div class="content"></div>
          </div>
          <div class="row2-flex-right">
             <div class="content"></div>
          </div>
          <div class="row2-flex-left">
             <div class="content"></div>
          </div>
          <div class="row2-flex-right">
             <div class="content"></div>
          </div>
          
     
          
        </div>
      </div>
    </div>
    <div class="flex-right">
        <div class="row1">
             <div class="content"></div>
             <div class="content"></div>
             <div class="content"></div>
             <div class="content"></div>
          </div>

    </div>
  </div>
0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 3:32 AM

trong cái .row2 thì dùng thư viện masonry như bạn Kim đã nói

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 3:36 AM

@tuananhbfs như này thì sẽ ko theo thứ tự bài

1 2 3
4 5 6 

đúng ko bạn? Mà sẽ la thứ tự

1 4 7
2 5 8
3 6 9
0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 3:36 AM

@tuananhbfs vì bài này sẽ lấy data từ api ý bạn

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 3:42 AM

@sven_9x uhm. Nhìn hình chụp thì mình đoán là html theo kiểu đó. Còn thứ tự các bài viết thì mình có thể chủ động query ra theo ý muốn mà.

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 3:44 AM

data1: (2),4,5,7,8,10,11.. data2: (2),3,6,9,12... số 2 đặt trên hay dưới tùy mình .

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 4:21 AM

@tuananhbfs mình đang muốn theo thứ tự 1 2 3 4 5 6 ý bạn 😦

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 4:22 AM

@tuananhbfs mình xem mấy cái mansory toàn ko custom đc cái item đầu với width chiếm 2 phần

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 4:27 AM

@sven_9x vậy mình nghĩ bạn phải tự viết thư viện mới giải quyết dc. Data và html cần dc xử lý linh hoạt chứ ko cần khư khư là data cho sao html phải theo vậy. Tiết kiệm thời gian là tiết kiệm tiền bạc mà.

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Sep 23rd, 4:29 AM

nếu dc bạn cho mình xin link cái layout để xem họ dùng cách nào với nhé.

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 5:37 AM

@tuananhbfs à cái này là mình lấy từ design. chứ ko phải 1 trang có rồi

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 23rd, 5:38 AM

@tuananhbfs uhm. thế nên mình mới đang hỏi xem mọi người có cách giải quyết nào phù hợp ko 😦

0
| Reply
Share

1 ANSWERS


Answered Sep 22nd, 6:55 AM
Accepted
0

Loại layout này mình nhớ được gọi tên là Masonry. Bạn search trên Google sẽ ra nhiều cách implement nhé. Nếu đang tự viết theo Flexbox thì bạn tham khảo bài này: https://css-tricks.com/piecing-together-approaches-for-a-css-masonry-layout/

Mình thấy có cái lib là vue-masonry nhưng cũng chưa dùng thử. Bạn cũng tham khảo thêm nha.

Share
Avatar quang hải @sven_9x
Sep 22nd, 7:00 AM

tks b nhiều

+1
| Reply
Share
Sep 22nd, 7:01 AM

@sven_9x you're welcome 😃

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 22nd, 7:50 AM

@huukimit mình thử mà nó ko đc như ý. b có thể demo giúp mình 1 cái đc ko b? Cho các khối với màu thôi cũng đc 😦

+1
| Reply
Share
Sep 24th, 1:50 AM

@sven_9x Bạn đã implement theo hướng trên được chưa?

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 24th, 1:51 AM

@huukimit chưa bạn ạ. mình ko set được cái phần tử đầu tiên chiếm diện tích lớn so với các cái còn lại 😕

0
| Reply
Share
Sep 24th, 2:03 AM
0
| Reply
Share
Avatar quang hải @sven_9x
Sep 24th, 2:14 AM

@huukimit oh. đúng rồi đó bạn. những item 2,3,4 nếu mình ko set ví dụ grid-row: span 1; grid-row: span 2. thì nó sẽ follow height theo độ dài content à bạn?

0
| Reply
Share
Sep 24th, 2:18 AM

@sven_9x bạn bỏ cái grid-auto-rows của cái container đi thử nhé.

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 24th, 2:22 AM

@huukimit oke bạn. để mình thử. tks bạn nhiều nhé

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 24th, 2:23 AM

@huukimit bạn có thể tham khảo này bạn @tuananhbfs

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 24th, 2:26 AM

@huukimit mình thấy các item khi bỏ như bạn bảo cái grid-auto-rows thì có khoảng trắng b ạ

image.png

0
| Reply
Share
Avatar quang hải @sven_9x
Sep 25th, 1:53 AM

@sven_9x b ơii

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Oct 13th, 9:44 AM

@sven_9x dính covid mới về. Dùng Grid thì nó sẽ bị 1 điểm yếu đó là phải có Row. các item khác column mà trên cùng row sẽ bị ràng buộc chứ ko falling tự nhiên. Bạn sẽ ko thể đạt được việc xếp chồng theo cột như hình. Capture.PNG

Bạn có thể dùng tạm nó nếu kiểm soát dc số line của dòng mô tả (title?) .

0
| Reply
Share
Avatar quang hải @sven_9x
Oct 14th, 2:11 AM

@tuananhbfs dùng tạm gì nhỉ b?

0
| Reply
Share
Avatar Lê Tuấn Anh @tuananhbfs
Oct 15th, 10:53 AM

@sven_9x dùng tạm cái của bạn Nguyễn Hữu Kim đó, nếu "nếu kiểm soát dc số line của dòng mô tả (title?) ."

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.