Khoảng cách giữa các mục danh sách css

Nếu hai hoặc nhiều phần tử gần nhau, thì người dùng sẽ cho rằng chúng bằng cách nào đó thuộc về nhau. Khi nhóm nhiều yếu tố thiết kế, người dùng có thể quyết định cách chúng liên quan với nhau bằng khoảng cách giữa chúng. Nếu không có khoảng cách, người dùng sẽ khó đọc lướt trang và biết mục nào có liên quan và mục nào không

Trong bài viết này, tôi sẽ đề cập đến mọi thứ bạn cần biết về khoảng cách trong CSS, các cách khác nhau để đạt được điều đó và khi nào nên sử dụng phần đệm hoặc lề. Hãy đi sâu vào

Mục lục

  • Các loại khoảng cách
    • Lề - Khoảng cách Ngoài
    • Thu gọn ký quỹ
    • Ký quỹ âm
    • Đệm - Khoảng cách bên trong
  • Khoảng cách lưới CSS
  • Khoảng trống CSS Flexbox
  • Định vị CSS
  • Các trường hợp sử dụng và ví dụ thực tế
    • Thành phần tiêu đề
    • Khoảng Cách Trong Hệ Thống Lưới - Flexbox
    • Khoảng Cách Trong Hệ Thống Lưới - CSS Grid
    • Gap theo yêu cầu
    • Xử lý tiền ký quỹ dưới cùng
    • Thành phần thẻ
    • Nội dung bài viết
    • Chỉ trong trường hợp Margin
    • Chế độ viết CSS
    • đóng gói thành phần
  • Sử dụng các thành phần trừu tượng
  • Thành phần miếng đệm
    • Những thách thức với các thành phần miếng đệm
    • Định cỡ các thành phần miếng đệm
    • Sử dụng các yếu tố giả
  • Các hàm toán học CSS. Tối thiểu(), Tối đa(), Kẹp()

Các loại khoảng cách

Khoảng cách trong CSS có hai loại, một loại nằm ngoài phần tử và loại còn lại nằm trong phần tử đó. Đối với bài viết này, tôi sẽ gọi chúng là bên ngoài và bên trong. Giả sử rằng chúng ta có một phần tử, khoảng cách bên trong nó là khoảng cách bên trong và khoảng cách bên ngoài nó là khoảng cách bên ngoài

Khoảng cách giữa các mục danh sách css

Trong CSS, có thể thực hiện giãn cách như bên dưới

.element {
  padding: 1rem;
  margin-bottom: 1rem;
}

Tôi đã sử dụng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
0 cho khoảng cách bên trong và
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
1 cho khoảng cách bên ngoài. Khá đơn giản, phải không?

Lề - Khoảng cách Ngoài

Nó được sử dụng để thêm khoảng cách giữa một phần tử và phần tử khác. Ví dụ, trong ví dụ trước, tôi đã thêm

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
2 để thêm khoảng cách dọc giữa hai phần tử xếp chồng lên nhau

Vì lề có thể được thêm vào theo bốn hướng khác nhau (trên, phải, dưới, trái), điều quan trọng là phải làm sáng tỏ một số khái niệm cơ bản trước khi đi sâu vào ví dụ và các trường hợp sử dụng

Thu gọn ký quỹ

Nói một cách đơn giản, thu gọn lề xảy ra khi hai phần tử dọc có lề và một trong số chúng có lề lớn hơn phần tử còn lại. Trong trường hợp đó, số dư lớn hơn sẽ được sử dụng và phần còn lại sẽ bị bỏ qua

Khoảng cách giữa các mục danh sách css

Trong mô hình mô phỏng ở trên, một phần tử có

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
3 và phần tử kia có
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
4. Phần tử có biên độ lớn hơn sẽ thắng

Để tránh sự cố như vậy, bạn nên sử dụng lề một chiều theo bài viết này. Hơn nữa, Thủ thuật CSS đã thực hiện một cuộc thăm dò giữa

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
3 và
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
4. 61% cử tri thích
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
3 hơn
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
4

Xem cách khắc phục sự cố bên dưới

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
0

Với bộ chọn CSS

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
9, bạn có thể dễ dàng xóa lề khỏi phần tử con cuối cùng để tránh khoảng cách không cần thiết

Thử nghiệm

Một ví dụ khác có liên quan đến sự sụp đổ lề là con và cha mẹ. Giả sử như sau

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
2

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
3

Khoảng cách giữa các mục danh sách css

Lưu ý rằng phần tử con được dán vào đầu phần tử cha của nó. Đó là bởi vì lề của nó bị sụp đổ. Theo W3C, đây là một số giải pháp cho vấn đề đó

  • Thêm một
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    40 vào phần tử cha
  • Thay đổi hiển thị phần tử con thành
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    41

Một giải pháp đơn giản hơn sẽ là thêm

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
42 vào phần tử cha

Khoảng cách giữa các mục danh sách css

Ký quỹ âm

Nó có thể được sử dụng với bốn hướng cho lề và nó rất hữu ích trong một số trường hợp sử dụng. Giả sử như sau

Khoảng cách giữa các mục danh sách css

Cha mẹ có

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
43, khiến đứa trẻ bị lệch từ trên xuống, trái và phải. Tuy nhiên, phần tử con phải dính vào các cạnh của phần tử cha của nó. Chà, lợi nhuận âm để giải cứu

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
8

Khoảng cách giữa các mục danh sách css

Thử nghiệm

Nếu bạn muốn tìm hiểu thêm về lợi nhuận âm, tôi giới thiệu bài viết này của Peter-Paul Koch

Đệm - Khoảng cách bên trong

Như tôi đã đề cập trước đây, phần đệm thêm khoảng cách bên trong bên trong một phần tử. Mục tiêu của nó có thể thay đổi tùy theo trường hợp được sử dụng

Chẳng hạn, nó có thể được sử dụng để tăng khoảng cách xung quanh các liên kết, điều này sẽ dẫn đến vùng có thể nhấp lớn hơn cho liên kết

Khoảng cách giữa các mục danh sách css

Đệm không hoạt động

Điều quan trọng cần lưu ý là phần đệm dọc không hoạt động với các phần tử có

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
44, như
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
45 hoặc
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
46. Nếu phần đệm được thêm vào, nó sẽ không ảnh hưởng đến phần tử và phần đệm sẽ ghi đè lên các phần tử nội tuyến khác

Đây chỉ là một lời nhắc thân thiện rằng thuộc tính

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
47 nên được thay đổi cho các phần tử nội tuyến

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

Khoảng cách lưới CSS

Trong lưới CSS, có thể dễ dàng thêm khoảng cách giữa các cột và hàng với thuộc tính

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
48. Đó là cách viết tắt của khoảng cách hàng và cột

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
4

Các thuộc tính longhand cho khoảng cách có thể được sử dụng như dưới đây

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
6

Khoảng trống CSS Flexbox

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
49 là thuộc tính được đề xuất sẽ được sử dụng cho cả CSS grid và flexbox. Nhược điểm là nó chỉ được hỗ trợ trong Firefox tại thời điểm viết bài này

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
8

Thêm vào đó, không thể sử dụng nó với CSS

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
60 để phát hiện xem nó có được hỗ trợ hay không và nâng cao dựa trên điều đó. Nếu bạn thích nó, hãy bỏ phiếu để giúp đưa nó lên Chrome

Định vị CSS

Nó có thể không phải là một cách trực tiếp để tạo khoảng cách cho các phần tử, nhưng nó đóng một vai trò trong một số trường hợp thiết kế. Ví dụ: một phần tử được định vị tuyệt đối cần được định vị

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
61 từ các cạnh bên trái và trên cùng của phần tử cha của nó

Xem xét ví dụ sau. Thẻ có biểu tượng phải được đặt cách nhau từ cạnh trên cùng bên trái của thẻ gốc. Trong trường hợp đó, CSS sau đang được sử dụng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
1

Khoảng cách giữa các mục danh sách css

Các trường hợp sử dụng và ví dụ thực tế

Trong phần này, bạn sẽ trải qua các trường hợp sử dụng khác nhau mà bạn sẽ gặp phải trong công việc hàng ngày khi làm việc trên các dự án CSS

Thành phần tiêu đề

Khoảng cách giữa các mục danh sách css

Trong trường hợp này, tiêu đề có logo, điều hướng và hồ sơ người dùng. Bạn có đoán được khoảng cách nên được thực hiện như thế nào trong CSS không?

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
00

Khoảng cách giữa các mục danh sách css

Tiêu đề có phần đệm ở bên trái và bên phải. Mục đích của việc này là để nội dung không bị dính vào các cạnh

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
01

Đối với điều hướng, mỗi liên kết phải có đủ phần đệm từ các cạnh dọc và ngang, do đó, khu vực có thể nhấp của nó có thể lớn, điều này sẽ nâng cao khả năng truy cập

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
02

Và đối với khoảng cách giữa mỗi mục, bạn có thể sử dụng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
1 hoặc thay đổi
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
47 của
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
64 thành
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
41. Các phần tử khối nội tuyến thêm một khoảng trống nhỏ giữa các phần tử anh chị em của nó, do thực tế là nó xử lý các phần tử như các ký tự

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
03

Cuối cùng, hình đại diện và tên người dùng có lề bên trái

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
04

Lưu ý rằng nếu bạn đang xây dựng một trang web đa ngôn ngữ, bạn nên sử dụng các thuộc tính logic CSS như bên dưới

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
05

Khoảng cách giữa các mục danh sách css

Lưu ý rằng khoảng cách xung quanh dấu phân cách hiện bằng nhau. Lý do là các mục điều hướng không có chiều rộng cụ thể và thay vào đó, chúng có phần đệm. Do đó, chiều rộng của các mục điều hướng dựa trên nội dung của chúng. Dưới đây là các giải pháp

  • Đặt chiều rộng tối thiểu cho các mục điều hướng
  • Tăng phần đệm ngang
  • Thêm một lề bổ sung ở phía bên trái của dấu phân cách

Giải pháp dễ nhất và tốt hơn là giải pháp thứ ba, đó là thêm một

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
66

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
06

Thử nghiệm

Khoảng Cách Trong Hệ Thống Lưới - Flexbox

Lưới là một trong những trường hợp được sử dụng nhiều nhất cho khoảng cách. Xem xét ví dụ sau

Khoảng cách giữa các mục danh sách css

Khoảng cách phải ở giữa các cột và hàng. Hãy xem xét đánh dấu HTML sau

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
07

Thông thường, tôi thích giữ các thành phần được đóng gói và tránh thêm lề cho chúng. Vì lý do đó, tôi có phần tử

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
67, nơi thành phần thẻ của tôi sẽ nằm trong

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
08

Với CSS ở trên, bốn thẻ sẽ nằm trong mỗi hàng. Đây là một giải pháp khả thi để thêm khoảng cách giữa chúng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
09

Bằng cách sử dụng hàm CSS

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
68, số tiền ký quỹ được khấu trừ từ
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
69. Như bạn thấy, giải pháp này không phải là dễ dàng. Những gì tôi thích là như sau

  • Thêm
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    80 vào mục lưới
  • Thêm một giá trị âm
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    66 có cùng giá trị
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    80 vào lưới gốc

Tôi đã học được giải pháp trên từ CSS Wizardy nhiều năm trước (tôi quên mất tiêu đề bài viết, nếu bạn biết thì hãy cho tôi biết)

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
20

Lý do tôi sử dụng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
66 âm, là vì thẻ đầu tiên có
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
80 trong khi thực tế thì không cần thiết. Vì vậy, nó sẽ đẩy trình bao bọc sang bên trái và hủy bỏ khoảng trống không cần thiết đó

Thử nghiệm

Một khái niệm tương tự khác là thêm phần đệm vào cả hai bên và khi đó lề là số âm. Dưới đây là một ví dụ về những câu chuyện của Facebook

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
21

Khoảng Cách Trong Hệ Thống Lưới - CSS Grid

Và bây giờ, đến phần thú vị. Với lưới CSS, bạn có thể thêm khoảng cách rất dễ dàng với

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
48. Ngoài ra, bạn không cần quan tâm đến chiều rộng của mục lưới cũng như lề dưới cùng. CSS Grid làm mọi thứ cho bạn

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
22

Và đó là nó. Điều đó không dễ dàng và đơn giản hơn nhiều sao?

Gap theo yêu cầu

Điều tôi thực sự thích về lưới CSS là

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
48 chỉ được áp dụng trong trường hợp cần thiết. Hãy xem xét mô hình sau

Khoảng cách giữa các mục danh sách css

Tôi có một phần với hai thẻ. Trên thiết bị di động, tôi muốn khoảng cách ở bên dưới cái đầu tiên và trên máy tính để bàn, khoảng cách sẽ nằm giữa chúng. Không thể có sự linh hoạt này nếu không có lưới CSS. Đầu tiên, xem bên dưới

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
23

Không thoải mái, phải không?

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
24

Và thế là xong. Nhiều, dễ dàng hơn nhiều

Xử lý tiền ký quỹ dưới cùng

Giả sử rằng các thành phần sau ngăn xếp. Mỗi thành phần có một lề dưới

Khoảng cách giữa các mục danh sách css

Lưu ý rằng phần tử cuối cùng có lề. Điều này không chính xác vì lề chỉ nên nằm giữa các phần tử

Nó có thể được sửa bằng một trong các giải pháp dưới đây

Giải pháp 1 - Bộ chọn CSS
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
9

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
25

Giải pháp 2 - Kết hợp anh chị em liền kề

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
26

Mặc dù giải pháp số 1 rất hấp dẫn, nhưng nó có những nhược điểm dưới đây

  • Nó gây ra các vấn đề về tính đặc hiệu của CSS. Không thể ghi đè nó cho đến khi bộ chọn
    .element span {
      display: inline-block;
      padding-top: 1rem;
      padding-bottom: 1rem;
    }
    
    9 được sử dụng
  • Nó sẽ không hoạt động trong trường hợp thiết kế có nhiều hơn một cột. Xem hình bên dưới
Khoảng cách giữa các mục danh sách css

Về giải pháp số 2, nó không có vấn đề về tính đặc hiệu của CSS. Tuy nhiên, nó sẽ chỉ hoạt động với ngăn xếp một cột

Một giải pháp tốt hơn là hủy khoảng cách không cần thiết bằng cách thêm lề âm vào phần tử cha

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
27

Đây là những gì xảy ra. Nó đẩy phần tử xuống dưới cùng với giá trị bằng khoảng cách dưới cùng. Hãy cẩn thận để không vượt quá giá trị lề vì nó sẽ chồng lên các phần tử anh chị em của nó

Thành phần thẻ

Ồ, nếu tôi muốn đi vào tất cả các chi tiết về khoảng cách thành phần thẻ, tôi có thể kết thúc với một cuốn sách. Tôi sẽ đánh dấu một mẫu chung và xem cách áp dụng khoảng cách

Khoảng cách giữa các mục danh sách css

(Xin lỗi, nếu bạn đang đói)

Bạn có thể nghĩ về nơi khoảng cách sẽ được sử dụng trong thẻ này không?

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
28

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
29

Phần đệm ở trên sẽ thêm phần bù cho tất cả các phần tử con bên trong nó. Sau đó, tôi sẽ thêm tất cả các lề

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
30

Đối với đường phân cách giữa xếp hạng và meta thẻ, tôi sẽ thêm nó làm đường viền

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
31

Ối. Đường viền không dính vào các cạnh do phần đệm được áp dụng cho phần tử cha

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
89

Khoảng cách giữa các mục danh sách css

Vâng, bạn đoán nó. Biên độ âm là cách khắc phục

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
32

Rất tiếc, một lần nữa. Có cái gì đó không đúng. Nội dung bị dính vào các cạnh

Khoảng cách giữa các mục danh sách css

Để giải quyết vấn đề, nội dung nên được đệm (Ồ, có vẻ như đệm là một từ mới) từ các cạnh trái và phải

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
33

Khoảng cách giữa các mục danh sách css

Thử nghiệm

Nội dung bài viết

Tôi tin rằng đây là một trường hợp sử dụng rất, rất phổ biến. Vì nội dung bài viết đến từ CMS (Hệ thống quản lý nội dung) hoặc được tạo tự động từ tệp đánh dấu nên không thể thêm lớp cho các phần tử

Xem xét ví dụ sau có chứa sự kết hợp của các tiêu đề, đoạn văn và hình ảnh

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
34

Để làm cho chúng trông đẹp mắt, khoảng cách phải nhất quán và được sử dụng cẩn thận. Tôi đã mượn một số kiểu từ loại quy mô. com

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
35

Khoảng cách giữa các mục danh sách css

Nếu một

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
10 được theo sau bởi một tiêu đề, ví dụ: “Các loại khoảng cách”, thì
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
3 của
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
10 sẽ bị bỏ qua. Bạn đoán nó, đó là do sự sụp đổ ký quỹ

Thử nghiệm

Chỉ trong trường hợp Margin

Tôi thích gọi đây là lề “Chỉ trong trường hợp”, bởi vì đó là ý nghĩa của nó, theo nghĩa đen. Hãy xem xét mô hình dưới đây

Khoảng cách giữa các mục danh sách css

Các yếu tố trông không đẹp khi chúng ở gần nhau. Tôi đã xây dựng chúng với flexbox. Kỹ thuật này được gọi là “Alignment Shifting Wrapping” mà tôi đã biết về tên của nó từ Thủ thuật CSS

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
36

Chúng kết thúc ở một dòng mới khi kích thước khung nhìn nhỏ hơn. Xem bên dưới

Khoảng cách giữa các mục danh sách css

Điều cần giải quyết là trạng thái thiết kế ở giữa, trong đó hai mục vẫn nằm cạnh nhau, nhưng khoảng cách giữa chúng bằng không. Trong trường hợp đó, tôi muốn thêm một

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
13 vào phần tử, để nó ngăn chúng chạm vào nhau, điều này sẽ giúp
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
14 hoạt động nhanh hơn

Khoảng cách giữa các mục danh sách css

Chế độ viết CSS

Theo Mạng nhà phát triển Mozilla (MDN)

Thuộc tính CSS chế độ viết đặt xem các dòng văn bản được bố trí theo chiều ngang hay chiều dọc, cũng như hướng mà khối tiến trình

Bạn đã bao giờ nghĩ về việc lề sẽ hoạt động như thế nào khi nó được sử dụng với một phần tử có

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
15 khác chưa?

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
37

Tiêu đề được xoay 90 độ và phải có khoảng cách giữa tiêu đề và hình ảnh. Hóa ra là lề hoạt động hoàn hảo dựa trên

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
15

Thử nghiệm

Và tôi nghĩ thế là đủ cho các trường hợp sử dụng. Hãy chuyển sang một số khái niệm thú vị

đóng gói thành phần

Một hệ thống thiết kế lớn chứa rất nhiều thành phần. Có hợp lý không khi thêm lề trực tiếp vào chúng?

Xem xét ví dụ sau

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
38

Khoảng cách giữa các nút nên được thêm vào đâu?

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
39

Điều này không tốt. Nếu có trường hợp chỉ có một nút thì sao?

Sử dụng các thành phần trừu tượng

Một giải pháp cho vấn đề trên là có các thành phần trừu tượng với mục tiêu lưu trữ các thành phần khác. Như Max Stoiber đã nói, đó là kiểu chuyển trách nhiệm quản lý lợi nhuận sang phần tử gốc. Hãy suy nghĩ lại về trường hợp sử dụng trước đó với tư duy này

Khoảng cách giữa các mục danh sách css

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
80

Lưu ý rằng tôi đã thêm một trình bao bọc và mỗi nút bây giờ được bao bọc trong phần tử riêng của nó

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
81

Và đó là nó. Hơn nữa, việc áp dụng các khái niệm này vào bất kỳ khung JavaScript nào cũng khá dễ dàng. Ví dụ

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
82

Và công cụ JavaScript mà bạn đang sử dụng nên bọc từng mục trong thành phần riêng của nó

Thành phần miếng đệm

Đúng, ban đọc nó chính xác. Tôi đã được chỉ đến bài viết này thảo luận về khái niệm tránh lề và sử dụng các thành phần đệm thay vì chúng

Giả sử rằng một phần cần có lề

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
17 từ bên trái, có tính đến những hạn chế đó

  • Không thể sử dụng ký quỹ trực tiếp cho thành phần vì đây là một hệ thống thiết kế đã được xây dựng sẵn
  • Nó phải linh hoạt. Khoảng cách có thể ở trang X, nhưng không phải ở trang Y

Lần đầu tiên tôi nhận thấy điều này là khi kiểm tra CSS thiết kế mới của Facebook

Khoảng cách giữa các mục danh sách css

Đó là một

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
18 với kiểu nội tuyến
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
19. Mục đích duy nhất của nó là thêm khoảng trắng giữa cạnh trái và trình bao bọc

Trích dẫn từ playbook React này

Nhưng trong thế giới thực, chúng ta cần khoảng cách bên ngoài các thành phần để sắp xếp chúng thành các trang và cảnh. Và đây là nơi ký quỹ len lỏi vào mã thành phần. cho các thành phần khoảng cách của các thành phần

tôi thực sự đồng ý. Đối với một hệ thống thiết kế lớn, không thể mở rộng để tiếp tục thêm lề vào các thành phần. Điều này cuối cùng sẽ dẫn đến một mã đáng sợ

Những thách thức với các thành phần Spacer

Bây giờ bạn đã có ý tưởng về các thành phần đệm, hãy tìm hiểu một số thách thức dự kiến ​​khi sử dụng chúng. Dưới đây là một số câu hỏi mà tôi nghĩ về

  • Làm thế nào một thành phần đệm sẽ lấy chiều rộng hoặc chiều cao của nó bên trong cha mẹ? . bố cục dọc? . Một miếng đệm bên trong ngăn xếp Vs một miếng đệm thêm một khoảng trống bên trái
  • Chúng ta có nên tạo kiểu cho chúng dựa trên kiểu hiển thị của cha mẹ chúng (Flex, Grid)

Hãy giải quyết từng câu hỏi trên

Định cỡ các thành phần miếng đệm

Có thể tạo một miếng đệm chấp nhận các biến thể và cài đặt khác nhau. Tôi không phải là nhà phát triển JavaScript, nhưng tôi nghĩ họ gọi nó là Đạo cụ. Hãy xem xét những điều sau đây từ hệ thống theo kiểu. com

Chúng tôi có một dấu cách giữa tiêu đề và phần

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
83

Trong khi điều này là một chút khác nhau. Một miếng đệm tạo khoảng cách tự động giữa logo tiêu đề và điều hướng

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
84

Bạn có thể nghĩ rằng làm điều này với CSS khá dễ dàng bằng cách thêm

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
000. Nếu thiết kế cần thay đổi thì sao?

Xem bên dưới. Bạn có thấy sự linh hoạt ở đó không?

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
85

Chà, trong trường hợp đó, kiểu dáng nên được thay đổi. Bạn có thấy sự linh hoạt ở đó không?

Đối với phần định cỡ, một miếng đệm có thể được định cỡ dựa trên phần tử gốc của nó. Đối với những điều trên, có lẽ bạn có thể tạo một chỗ dựa có tên là

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
001, tính toán thành
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
002 trong CSS

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
86

Sử dụng các yếu tố giả

Một ý tưởng khác mà tôi đã nghĩ đến là sử dụng các phần tử giả để tạo bộ đệm

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
87

Có lẽ chúng ta có thể có một tùy chọn để thêm miếng đệm thông qua phần tử giả thay vì phần tử riêng biệt cho nó?

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
88

Cho đến hôm nay, tôi vẫn chưa sử dụng các thành phần đệm trong các dự án của mình, nhưng tôi mong chờ các trường hợp sử dụng mà tôi có thể sử dụng chúng

Các hàm toán học CSS. tối thiểu (), Tối đa (), Kẹp ()

Có thể có lợi nhuận động? . Câu trả lời là CÓ. Chúng ta có thể. Gần đây, các hàm toán học CSS đã được hỗ trợ trong Firefox 75, điều đó có nghĩa là chúng được hỗ trợ trong tất cả các trình duyệt chính theo CanIUse

Hãy nhớ lại trường hợp sử dụng lưới để xem khoảng cách động có thể được sử dụng trong đó như thế nào

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
89

Đây là ý nghĩa của

.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
003. sử dụng khoảng trống bằng
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
004 nhưng không được vượt quá
.element span {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
005

Thử nghiệm

Có được sự linh hoạt như vậy thực sự tuyệt vời và mang lại cho chúng tôi rất nhiều khả năng để xây dựng các bố cục năng động và linh hoạt hơn nữa