✍️
cssadvand
  • [BEM] Exploring SMACSS: Scalable and Modular Architecture for CSS
  • 😀CSS-only infinite scrolling carousel animation (ok)
  • css carousel
  • 🤡 Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 1)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 2)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 3)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 4)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 5)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 6)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 7)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 8)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 9)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 10)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 11)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 12) [Phần đặc biệt]
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 13)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 14)
  • 😘Thuộc tính tabindex="-1" không ngờ lại nguy hiểm vậy đọc bài dưới 😌
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 15)
  • 🥸CSS tạo theme cho dark mode đọc bài (Phần 16)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 16)
  • Mẹo để optimize Google Fonts API mà ít dev để ý đọc (Phần 17)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 17)
  • Thật may nhờ có white-space: pre-line đọc (Phần 18)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 18)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 19)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 20)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 21)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 22)
  • Thuộc tính image-rendering nhờ bài (Phần 23) mà phát hiện ra cách làm bức ảnh mờ trở nên rõ nét
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 23)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết 🤡
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 24)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 25)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 26)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 27)
  • 😘mix-blend-mode pha trộn giữa 1 đối tượng với đối tượng bên dưới đó (Phần 28)
    • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 28)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 29)
  • 🥸aspect-ratio (Phần 30)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 30)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 31)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 32)
  • Một vài thủ thuật CSS mà chính Frontend có thể còn chưa biết (Phần 33)
  • 😘CSS Scroll Triggered Animations Full (ok)
  • 🥹Difference between animation and transition in CSS
  • 😄animation-timeline có phải nó làm việc với thanh cuộn (ok)
  • 😍Từ bài animation-timeline làm việc với thanh cuộn tìm ra cách sử dụng background-clip: text;
  • background-clip: text;
  • 😅Sử dụng list-style-type để tạo icon đẹp (ok)
  • 😁Convert css to scss good (ok)
  • 😁CSS - Hướng dẫn: Tạo ảnh động với hàm steps()
  • 😆Multiple image cross fading in CSS - without (java) khá đẹp script (ok)
  • 😇Function css full 🤩
  • 😅[SVG] SVG viewBox Attribute (ok)
  • 😅Tailwind CSS (ok)
  • 😍Thật không thể tin được sử dụng filter: brightness(0) invert(1); để chuyển màu ảnh 🤣
  • 😅Background text matter.vn (ok)
  • 😆Chọn màu, color, color contrast ratio (ok)
  • 😁Tổng hợp Animating SVG text cực đẹp (ok)
  • 😂Chuyển động tròn :(
  • 😆MOVE-BG mepop.vn (ok)
  • 😆Counter Increment list, number xuongkhopbacninh.com (ok)
  • Boxes That Fill Height, full Height(Or More) (and Don’t Squish) (ok)
  • Equal Height (chiều cao bằng nhau) (oK)
  • 😅Sử dụng nodejs và scss cấu trúc thư mục tốt P.1(ok)
  • 🥲Sử dụng nodejs và js cấu trúc thư mục tốt P.2 (ok)
  • === START STUDY P.1 && P.2 SỬ DỤNG NODEJS VÀ CẤU TRÚC ===
  • 😉1 Giao diện sử dụng thuộc tính data-coreui-toggle="dropdown" (ok)
  • === END STUDY P.1 && P.2 SỬ DỤNG NODEJS VÀ CẤU TRÚC ===
  • 😆Css box-shadow đẹp (ok)
  • === START Tutorials Classical BEM stack ===
  • 😀HTML with BEM (ok)
  • 😀CSS with BEM (ok)
  • === END Tutorials Classical BEM stack ===
  • === START SMACSS ===
  • Categorizing CSS Rules
  • Base Rules
  • Layout Rules
  • Module Rules
  • State Rules
  • Theme Rules
  • Changing State
  • === END SMACSS ===
  • All CSS Grid Properties (ok)
  • 😇Column Grid full example(Responsive)
  • === Start Điều quan trọng nhất cách chia cột và thay đổi vị trí ===
  • CSS Grid căn bản - Phần 1
  • CSS Grid căn bản - Phần 2
  • CSS Grid: Holy Grail Layout
  • Sử dụng CSS Grid để xây dựng web layout
  • Luyện tập CSS Grid qua bài tập tạo layout Airbnb, youtube, Pinterest
  • === End Điều quan trọng nhất cách chia cột và thay đổi vị trí ===
  • Overflow:hidden dots at the end full (ok)
  • Gulp để viết Sass && cai dat
  • Cách nhúng font vào svg (ok)
  • font-face Hướng dẫn conver font và nhúng sử dụng online (ok)
  • 😇Create CSS Animations on Scroll (ok)
  • Hiệu ứng hover bằng js hiện phần description (ok)
  • Text Link on Hover phần 1 (ok)
  • Kết hợp transition & transform-origin phần 2 (ok)
  • Text Hover Phần 3 (ok)
  • Social Media Icons hover effect (ok)
  • css rotate a pseudo :after or :before content:""
  • Hiệu ứng ảnh tự zoom, animation, scale phần 1 full (ok)
  • CodePen Home Image zoom on hover - auto run - view (ok)
  • scroll-padding (ok)
  • Tạo vòm giống styleathome (ok)
  • Tổng hợp những css đẹp để làm trang trí (ok)
  • Cách thay đổi màu svg full (ok_)
  • Disable Auto Zoom in Input “Text” tag - Safari on iPhone (ok)
  • function calc css (ok)
  • Get the scroll distance from bottom to scroll, var distanceFromBottom (ok) vinmec.com (ok)
  • ---------- Start CSSscan không sử dụng ----------------------
  • Unused CSSscan your website for unused CSS selectors (ok)
  • PurifyCSS OnlineRemove unused CSS code from your stylesheets (ok)
  • Remove unused CSS styles from Bootstrap using PurgeCSS (ok)
  • 😆Thêm column, media bootstrap, custom bootstrap (ok)
  • ---------- End CSSscan không sử dụng ----------------------
  • Xây dựng blog đơn giản (Node + React)
  • Các tham số của Gulp
  • File đã thực hành với Gulp (ok
  • gulp-livereload (chưa đọc)
  • Tối ưu hiệu năng Google Fonts (ok)
  • Học CSS GRID thông qua những layout phức tạp
  • [GRID] sử dụng grid xây dựng layout giống Masonry (ok)
  • PageSpeed Insights Chrome Extension (ok)
  • Tăng tốc website bằng cách cải thiện front-end
  • Code chuẩn SEO là gì
  • 10 CSS3 Animation Tools phổ biến
  • Trang check SEO OKE
  • Làm sao để SEO từ khóa?
  • Kiểm soát web typography với việc hiển thị CSS font (ok)
  • Các mẫu phông chữ hiển thị và thuộc tính hiển thị phông chữ của CSS
  • Một số mẹo tối ưu hóa HTML/CSS/JS đúng chuẩn
  • Web Performance
  • Preload, Prefetch, Preconnect (ok)
  • Tối ưu hóa phần Front end cho trình duyệt (part 1)
  • Tối ưu hóa phần Front end cho trình duyệt (part 2)
  • Sử dụng thuộc tính attr html && css (ok)
  • Disable Auto Zoom in Input “Text” tag - Safari on iPhone (ok)
  • CSS submit button weird rendering on iPad/iPhone submit color (ok)
  • Turn off iPhone/Safari input element rounding (ok)
  • scroll bongda.com.vn (ok)
  • Làm chiếc xe ô tô chuyển động giống 2020.yp.vn (ok)
  • Sự khác biệt giữa :empty và :blank trong CSS (ok)
  • Is there a CSS parent selector? (ok)
Powered by GitBook
On this page
  • Sử dụng CSS Grid để xây dựng web layout
  • CSS Grid: Thuật ngữ cơ bản
  • Bắt đầu với CSS Grid
  • Demo: Xây dựng ứng dụng web với CSS Grid
  • CSS Grid: Những điều quan trọng

Was this helpful?

Sử dụng CSS Grid để xây dựng web layout

https://fit.hufi.edu.vn/hocthuat/su-dung-css-grid-de-xay-dung-web-layout

Sử dụng CSS Grid để xây dựng web layout

25/03/2021

CSS Grid layout là một hệ thống lưới hai chiều được thiết kế để giúp các nhà phát triển web chia các phần tử thành các cột và hàng nhằm tạo ra một bố cục nhất quán và liền mạch cho các ứng dụng web.

Logic đằng sau CSS Grid là, nếu một nhà phát triển lấy một phần tử như div và hiển thị một lưới trong đó, thì họ có thể chia phần tử đó thành các cột và hàng, nơi các mục có thể được đặt trong lưới . Với CSS Grid, ta có thể thực hiện tất cả điều này mà không cần phải sử dụng thêm các thuộc tính định vị (trên, phải, trái, dưới).

Trong bài viết này, chúng ta sẽ tập trung vào thiết kế cơ bản bằng cách sử dụng các hàng, cột và khu vực để tạo một ứng dụng web đơn giản bằng cách sử dụng CSS Grid.

CSS Grid: Thuật ngữ cơ bản

  • Grid container – hộp chứa lưới. Đây là khối xây dựng chính của CSS Grid.

  • Grid cell – các unit trên lưới

  • Grid area – một ô đơn lẻ hoặc nhiều ô có dạng hình vuông hoặc hình chữ nhật (nhưng không phải hình chữ L)

  • Grid track – tập hợp các hàng và cột, được xác định bằng cách sử dụng thuộc tính grid-template-columns và grid-template-rows

  • Grid gaps – giúp tạo khoảng cách lưới. Bạn không thể có nội dung trên hoặc trong khoảng cách lưới.

Bắt đầu với CSS Grid

Hiển thị vùng chứa lưới và các phần tử

Vùng chứa lưới là điểm bắt đầu để hiển thị lưới trên một phần tử. Để bắt đầu với lưới, trước tiên chúng ta phải hiển thị lưới trên vùng chứa bằng cú pháp dưới đây:

display: grid;

CSSCOPY

Trong CSS Grid, mối quan hệ giữa vùng chứa lưới và các mục (phần tử) của nó tương ứng là mối quan hệ của cha và con. Mỗi lưới đều có một vùng chứa chứa các mục và mọi phần tử được đặt trên lưới là một mục lưới.

Khi bạn tạo một vùng chứa thành lưới (display: grid;), tất cả các mục con trực tiếp của nó sẽ tự động trở thành các mục lưới.

Nhưng hiển thị các mục dưới dạng lưới không tự nó làm được gì nhiều. Đây là lúc các khái niệm khác như grid-template-columns và grid-template-rows phát huy tác dụng.

Sử dụng đơn vị fr và ký hiệu repeat ()

Mặc dù chúng ta luôn có thể sử dụng các đơn vị đo lường cố định như px trong việc xác định lưới, CSS Grid layout cũng giới thiệu một đơn vị đo lường mới được gọi là đơn vị fr.

Đơn vị fr đại diện cho một tỷ lệ của không gian có sẵn trong vùng chứa lưới và có thể được sử dụng để tạo các đường lưới linh hoạt.

Đây là một ví dụ:

.container {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
}

CSSCOPY

Đoạn mã trên sẽ chia không gian có sẵn thành bốn phần: hai phần sẽ được chỉ định cho cột đầu tiên, trong khi hai phần còn lại sẽ được chỉ định mỗi cột theo khoảng trống còn lại. Điều này giúp đảm bảo tính nhất quán khi xây dựng lưới của bạn.

Ký hiệu repeat () cũng giúp đảm bảo tính nhất quán và có thể được sử dụng để lặp lại tất cả hoặc một phần của danh sách các phần tử như sau:

.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}

CSSCOPY

Demo: Xây dựng ứng dụng web với CSS Grid

HTML

Đầu tiên, ta tạo một mẫu HTML đơn giản và điền vào nó một số văn bản giả để giúp thiết lập một số cấu trúc:

<html>
<head>
  <meta charset=utf-8>
  <title>Demo CSS Grid </title>
  <link rel="stylesheet" href="/main.css">
</head>
<div class="container">     
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>  
  </nav>
  <main><h2>A Demo Site CSS Grid</h2>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Itaque pariatur possimus alias quod ratione incidunt dicta assumenda repudiandae optio eveniet, quisquam fuga! Nam eaque fuga similique quia, esse non libero?</p>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Illo libero doloremque, eum quis laudantium hic iste ab sed ipsum veniam, quam dolor rem cupiditate corrupti aliquam repudiandae officia soluta impedit!</p>
  </main>
  <div class="sidebar img"><h2>Find Me on Social Media</h2>
    <p><a href="https://www.facebook.com/dntrongnghia/">Facebook</a></p>
  </div>
  <div class="about"><h2>About </h2>
    <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Deserunt voluptatem reprehenderit non. Magni sit alias quia, vel quidem autem quos optio quam at porro aliquid necessitatibus aut et eos nulla.</p>
  </div>
  <div class="contact"><h2>Contact</h2>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Animi consequuntur magnam ipsum, commodi quam, non dolorem numquam veritatis, qui nam voluptas asperiores neque magni. Placeat, natus reprehenderit. Fugit, voluptatum commodi.</p>
</div>
<footer>Copỷight 2021 <a href=" https://www.facebook.com/dntrongnghia/">Trong Nghia</a></footer>
</div>
</html>

MarkupCOPY

CSS

Tại đây, ta liên kết biểu định kiểu (CSS) với HTML và triển khai bố cục bằng CSS Grid.

body{
  background: #F1F0EE;
  margin: 0;
}

.container {
  display: grid;        
  grid-template-columns: repeat(4, 1fr); 
  grid-template-rows: 0.2fr 1.5fr 1.2fr 0.8fr; 
  grid-template-areas:
    "nav nav nav nav"
    "main main main main"
    "about about about sidebar"
    "contact contact contact sidebar"
    "footer footer footer footer";
  gap: 0.5rem;
  height: 100vh;
  font-weight: 800;
  font-size: 12px;
  color: #004d40;
  text-align: center;
}

nav{
  background-color: #3770F6;
  grid-area: nav;
}

nav ul{
  list-style: none;
  font-size: 16px;
  font-weight: bolder;
  float: left;
}

li{
  display: inline-block;
}

li a{
  color: #ffffff;
}

a:hover{
  color: #FF7F50;
}

main {
  grid-area: main;
}

main h2 {
  font-weight: bolder;
}

main p{
text-align: left;
}

.sidebar {
  background: #D3D4D7;
  grid-area: sidebar;
}

.about {
  background: #D7D6D3;
  grid-area: about;
}

.contact {
  background: #BDBCBB;
  grid-area: contact;
}

footer {
  background: #3770F6;
  grid-area: footer;

CSSCOPY

Kết quả

CSS Grid: Những điều quan trọng

Có nhiều cách để đạt được các mục tiêu tương tự trong CSS. Sử dụng CSS Grid chỉ là một cách để đặt các phần tử vào các hàng và cột để thiết kế các ứng dụng web nhất quán, liền mạch với giao diện thân thiện với người dùng.

PreviousCSS Grid: Holy Grail LayoutNextLuyện tập CSS Grid qua bài tập tạo layout Airbnb, youtube, Pinterest

Last updated 2 years ago

Was this helpful?