Asked thg 9 22, 2021 3:50 SA 372 1 1
  • 372 1 1
+1

Hỏi về dựng layouts

Share
  • 372 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 TAMIX @tuananhbfs
thg 9 23, 2021 3:28 SA

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 TAMIX @tuananhbfs
thg 9 23, 2021 3:31 SA
  <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 TAMIX @tuananhbfs
thg 9 23, 2021 3:32 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 23, 2021 3:36 SA

@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 flame @sven_9x
thg 9 23, 2021 3:36 SA

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

0
| Reply
Share
Avatar TAMIX @tuananhbfs
thg 9 23, 2021 3:42 SA

@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 TAMIX @tuananhbfs
thg 9 23, 2021 3:44 SA

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 flame @sven_9x
thg 9 23, 2021 4:21 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 23, 2021 4:22 SA

@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 TAMIX @tuananhbfs
thg 9 23, 2021 4:27 SA

@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 TAMIX @tuananhbfs
thg 9 23, 2021 4:29 SA

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 flame @sven_9x
thg 9 23, 2021 5:37 SA

@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 flame @sven_9x
thg 9 23, 2021 5:38 SA

@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 thg 9 22, 2021 6:55 SA
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 flame @sven_9x
thg 9 22, 2021 7:00 SA

tks b nhiều

+1
| Reply
Share
thg 9 22, 2021 7:01 SA

@sven_9x you're welcome 😃

0
| Reply
Share
Avatar flame @sven_9x
thg 9 22, 2021 7:50 SA

@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
thg 9 24, 2021 1:50 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 24, 2021 1:51 SA

@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
thg 9 24, 2021 2:03 SA
0
| Reply
Share
Avatar flame @sven_9x
thg 9 24, 2021 2:14 SA

@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
thg 9 24, 2021 2:18 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 24, 2021 2:22 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 24, 2021 2:23 SA

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

0
| Reply
Share
Avatar flame @sven_9x
thg 9 24, 2021 2:26 SA

@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 flame @sven_9x
thg 9 25, 2021 1:53 SA

@sven_9x b ơii

0
| Reply
Share
Avatar TAMIX @tuananhbfs
thg 10 13, 2021 9:44 SA

@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 flame @sven_9x
thg 10 14, 2021 2:11 SA

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

0
| Reply
Share
Avatar TAMIX @tuananhbfs
thg 10 15, 2021 10:53 SA

@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.