Bảng css html phong cách

Trong thời gian gần đây, mức độ phổ biến của bảng đã rất cao, chúng không chỉ được sử dụng để trình bày dữ liệu dạng bảng mà còn là phương tiện chính để hình thành cấu trúc của tài liệu (mặc dù có một số nhược điểm). Hiện nay, phần tử khối DIV được sử dụng ngày càng nhiều trong bố cục tài liệu.

Bảng vẫn là thành phần chính ngôn ngữ HTML, điều này không thể thiếu để tạo các cấu trúc phức tạp và để trình bày dữ liệu dạng bảng, trong đó các phần tử khối bất lực và không có tính biến đổi như vậy.

Chân bàn

Bảng là một cấu trúc phức tạp và được hình thành từ nhiều Thẻ HTML ov. Ở giai đoạn đầu tiên, nó được xây dựng từ phần tử khối

, đại diện cho nền tảng, cơ sở của bảng. Giai đoạn tiếp theo trong quá trình xây dựng là hàng của bảng, được hình thành bằng cách sử dụng các thẻ ghép nối :

Giai đoạn cuối cùng của việc xây dựng bảng là tạo tế bào. Có hai loại thẻ cho mục đích này:

  • - thẻ được ghép nối sẽ tạo một ô đóng vai trò là tiêu đề cột, thẻ này Là tùy chọn;
  • - thẻ ghép nối bắt buộc tạo các ô - cơ sở của bảng;
Tiêu đề 1 Tiêu đề 2 Tiêu đề 3 Tiêu đề 4 Tiêu đề 5
Ô 1,1 Ô 1,2 Ô 1.3 Ô 1.4 Ô 1.5
Ô 2.1 Ô 2,2 Ô 2,3 Ô 2.4 Ô 2.5
Kết quả 1 Kết quả 2 Kết quả 3 Kết quả 4 Kết quả 5

Hình 1. Bảng

Như bạn có thể thấy từ đoạn mã trên, bảng chứa bốn hàng ( ) và năm cột. Các ô của hàng đầu tiên là tiêu đề cột ( ). Hàng thứ hai đến thứ tư chứa dữ liệu bảng chính ( ). Thẻ , là phổ quát và có thể chứa không chỉ văn bản thuần túy mà còn có thể chứa tất cả các loại thẻ, thậm chí cả các bảng khác!

Hãy chú ý đến cấu trúc của bảng; nó có cấu trúc phân cấp lồng nhau chặt chẽ; nếu bạn phá vỡ nó và sắp xếp lại các thẻ theo một thứ tự khác, bảng sẽ không được hiển thị trên trang hoặc sẽ được hiển thị nhưng không chính xác. Những nguyên tắc cơ bản khi thiết kế bảng:

  • Thẻ được ghép nối chân bảng, tất cả các thẻ khác được lồng trong đó;
  • Thẻ được ghép nối
  • cấp thứ hai của bảng hoặc hàng của bảng phải được lồng trong thẻ
    ;
  • Thẻ được ghép nối
  • và chứa dữ liệu dạng bảng;
  • Nếu bạn đặt bất kỳ thẻ hoặc văn bản nào khác bên ngoài thẻ phù hợp
  • - Phần tiêu đề cột;
  • - Phần chân bàn;
  • - Phần dữ liệu tổng hợp, tóm tắt toàn bộ bảng;

    , , , được đặt bên trong bảng
    Cấp thứ ba của bảng hoặc các ô của bảng phải được lồng trong một thẻ
    , khi đó dữ liệu này sẽ bị bỏ qua và không hiển thị trên trang web;

    Tiêu đề bảng

    Bảng cung cấp khả năng thêm tiêu đề bằng thẻ ghép nối

    , được đặt sau thẻ . Về nguyên tắc, nó có thể được chèn vào bất cứ đâu trong bảng, đây không phải là lỗi. Theo mặc định, văn bản tiêu đề sẽ xuất hiện phía trên bảng.

    Tiêu đề bảng
    Tiêu đề 1 Tiêu đề 2 Tiêu đề 3 Tiêu đề 4 Tiêu đề 5
    Ô 1,1 Ô 1,2 Ô 1.3 Ô 1.4 Ô 1.5
    Ô 2.1 Ô 2,2 Ô 2,3 Ô 2.4 Ô 2.5
    Kết quả 1 Kết quả 2 Kết quả 3 Kết quả 4 Kết quả 5

    Cơm. 2. Bảng có tiêu đề.

    Phần bảng

    Bằng cách sử dụng các phần là các thẻ ghép nối, bảng có thể được chia thành các phần logic. Chúng không được trình duyệt hiển thị trên trang, nhưng bạn có thể đặt cách trình bày khác nhau cho từng trang. Có ba phần logic sau:

    và phải chứa thẻ :

    Tiêu đề bảng
    Tiêu đề 1 Tiêu đề 2 Tiêu đề 3 Tiêu đề 4 Tiêu đề 5
    Ô 1,1 Ô 1,2 Ô 1.3 Ô 1.4 Ô 1.5
    Ô 2.1 Ô 2,2 Ô 2,3 Ô 2.4 Ô 2.5
    Kết quả 1 Kết quả 2 Kết quả 3 Kết quả 4 Kết quả 5

    Hợp nhất các ô

    Ở trên, chúng ta đã xem xét một bảng có cấu trúc đơn giản, nhưng nếu bạn cần phức tạp hóa nó, chẳng hạn như kết hợp nhiều ô thành một. Có những thuộc tính đặc biệt cho trường hợp này COLSPANROWSPAN thẻ Và . Cái đầu tiên dùng để kết hợp theo chiều ngang, cái thứ hai dùng để kết hợp theo chiều dọc. Giá trị của thuộc tính là số ô được gộp:

    1. Để hợp nhất theo chiều ngang bốn ô đầu tiên dòng cuối cùng bảng, được yêu cầu bởi thuộc tính COLSPAN của thẻ (có chứa văn bản “Tổng 1”) gán giá trị 4:

    Tổng cộng (1+2+3+4)

    2. Để hợp nhất các ô theo chiều dọc phần chính của tài liệu (phần ), hãy sử dụng thuộc tính ROWSPAN có giá trị là 2:

    Ô (1,1+2,1) Ô (1,2+2,2) Ô (1.3+2.3) Ô (1,4+2,4)

    Xin lưu ý rằng nếu bạn kết hợp các ô với thuộc tính COLSPAN hoặc ROWSPAN, thì bạn phải xóa các ô đã hợp nhất khỏi mã, ngoại trừ ô bắt đầu hợp nhất, số lượng của chúng sẽ phụ thuộc vào giá trị của thuộc tính COLSPAN, ROWSPAN.

    Tức là, trong ví dụ 1, bốn ô được hợp nhất, bắt đầu từ ô đầu tiên, được gán thuộc tính COLSPAN=4 (vì việc hợp nhất bắt đầu bằng nó), ba ô còn lại phải bị xóa (vì chúng được coi là đã hợp nhất). Chỉ ô thứ năm sẽ còn lại trong mã (vì nó không được bao gồm trong liên kết).

    Nguyên tắc tương tự sẽ được áp dụng cho sự thống nhất theo chiều dọc. Trong ví dụ thứ hai, bốn ô đầu tiên của hàng được gán thuộc tính ROWSPAN=2, kết quả là bốn ô thấp hơn đầu tiên bị xóa khỏi mã, bởi vì họ được coi là đoàn kết. Ngoại trừ cái cuối cùng, không được đưa vào hiệp hội.

    Tiêu đề bảng
    Tiêu đề 1 Tiêu đề 2 Tiêu đề 3 Tiêu đề 4 Tiêu đề 5
    Ô (1,1+2,1) Ô (1,2+2,2) Ô (1.3+2.3) Ô (1,4+2,4) Ô 1.5
    Ô 2.5
    Tổng 1+ Tổng 2+ Tổng 3+ Tổng 4 Kết quả 5

    Cơm. 4. Hợp nhất các ô trong bảng bằng thuộc tính COLSPAN, ROWSPAN.

    Bàn trang điểm có thuộc tính CSS

    Sau khi tạo bảng sử dụng HTML, chuyển sang giai đoạn tiếp theo, thiết kế bảng bằng các kiểu CSS áp dụng cho thẻ

    , , và anh ấy có một tổ tiên
    ,,
    .

    Khung di động

    Bạn có thể vẽ khung xung quanh các ô bằng cách sử dụng sử dụng CSS của cải ranh giới, với cú pháp sau:

    Đường viền: “độ dày đường kẻ” “loại phông chữ” “màu sắc”;

    • độ dày đường- có thể được chỉ định bằng pixel (px), cũng như sử dụng các từ dành riêng đặc biệt: mỏng (2 px), trung bình (4 px) và dày (6 px);
    • kiểu chữ- giá trị thuộc tính là các từ đặc biệt: chấm (đường chấm), nét đứt (đường chấm), liền nét (dòng), double (dòng kép), v.v.

    Hình 5. Áp dụng thuộc tính viền cho các ô của bảng để đóng khung cho mỗi ô bằng một khung.

    Nếu bạn muốn khung chỉ nằm giữa các ô và không đóng khung từng ô riêng biệt, bạn cần sử dụng thuộc tính style sụp đổ biên giới, lấy giá trị:

    • sụp đổ- chỉ có một khung giữa các ô;
    • chia- mỗi ô được đóng khung bởi khung riêng của nó;

    Hình 6. Áp dụng thuộc tính thu gọn đường viền cho một bảng. Các ô liền kề cách nhau một khung.

    Kích thước ô

    Theo mặc định, trình duyệt sẽ tạo kích thước ô tùy thuộc vào nội dung của chúng, nếu cần, hãy đặt dạng tĩnh, sử dụng thuộc tính kiểu chiều rộng, chiều cao. Trong trường hợp này, nếu nội dung của ô không vừa trên một dòng thì nó sẽ được chuyển sang dòng tiếp theo.

    Hình 7. Sử dụng thuộc tính chiều rộng và chiều cao để đặt chiều rộng và chiều cao của ô.

    Đệm di động

    Có hai loại thụt lề, bên ngoài và bên trong, loại thụt đầu tiên được đặt giữa viền của các ô liền kề, loại thứ hai từ viền của các ô đến nội dung của chúng. Các thuộc tính CSS tạo thụt lề được liệt kê bên dưới:

    • phần đệm- phần đệm, giá trị được đặt bằng pixel (px);
    • khoảng cách đường viền - lề, giá trị cũng được đặt bằng pixel (px). Thông số này không nên sử dụng nếu (border-collapse:collapse), vì thụt lề được đặt giữa viền của các ô liền kề và nếu có thuộc tính được chỉ định, các ô liền kề chỉ được phân tách bằng một khung;

    Cơm. 8. Áp dụng thuộc tính đệm cho bảng để đặt thụt lề.

    Vị trí tiêu đề

    Theo mặc định, tiêu đề bảng nằm phía trên nó, nhưng vị trí có thể được thay đổi bằng thuộc tính style bên chú thích, nhận các giá trị sau:

    • đứng đầu- tiêu đề nằm phía trên bảng;
    • đáy- tiêu đề nằm bên dưới bảng;

    Màu tế bào

    Để tô màu một ô một màu nhất định bạn cần sử dụng tài sản màu nền:

    Cơm. 10. Căn chỉnh nội dung ô theo thuộc tính text-align và Vertical-align.

    Tạo kiểu cho nội dung ô

    Định dạng nội dung đề cập đến định dạng của văn bản có trong các ô. Khái niệm cơ bản Thuộc tính CSS, được sử dụng cho mục đích này là nét chữ:

    Cơm. 11. Trang trí nội dung ô bằng thuộc tính font.

    Tất cả các kiểu CSS được áp dụng cho bảng


    Thiết kế bảng bằng CSS là một hoạt động thú vị và có trách nhiệm. Bạn cần tiếp cận vấn đề này một cách thành thạo, với kiến ​​​​thức về tất cả các khả năng của phong cách. Ngoài ra, bạn cần có gu thẩm mỹ để không làm mất lòng khách truy cập bằng sự sáng tạo của mình.

    Hầu hết mọi thứ đều có thể được chuyển đổi trong bảng. Thiết kế đẹp bảng CSS liên quan đến việc sử dụng thiết kế đường viền, nền bảng, nền ô, khoảng cách giữa chúng và hơn thế nữa. Hãy nhìn vào những điều cơ bản nhất.

    Đường viền bảng

    Việc tạo kiểu bảng CSS luôn liên quan đến việc chơi đùa với đường viền (border). Theo mặc định, tất cả các bảng không được bao quanh bởi đường viền. Tức là nó bằng 0 pixel. Nhưng điều này có thể được khắc phục bằng cách sử dụng thuộc tính border.

    Bạn có thể chỉ định khung bên ngoài cho toàn bộ bảng:

    bảng (viền: 3px màu đen; )

    Nhờ dòng này, tất cả các bảng trên trang web sử dụng kiểu này sẽ có viền đen. Lưu ý chỉ viền xung quanh các cạnh chứ không viền bên trong bảng. Đối với các ô và hàng, khung được đặt khác nhau.

    th, td (viền: 3px màu đen;)

    Bạn có thể chỉ định bất kỳ độ dày và màu sắc. Hãy nhớ rằng đường viền không được nhân đôi khi các ô được nối với nhau.

    Từ vững chắc có nghĩa là thiết kế liên tục. Bạn có thể chỉ định các giá trị khác.

    Thông thường, khung vững chắc được sử dụng vì nó trông hấp dẫn hơn và không làm phân tán sự chú ý khỏi nội dung chính của trang web.

    Thuộc tính đường viền cũng có thể được chỉ định theo hướng. Đường viền chỉ có thể được đặt cho phần trên, dưới, bên trái hoặc bên phải. Bởi vì trong một số trường hợp, tùy chọn có khung cho toàn bộ bảng cùng một lúc là không phù hợp.

    bảng (đường viền trên cùng: 1px màu đỏ đậm; )

    Bằng cách này, bạn chỉ có thể đặt đường viền cho phần trên cùng của bảng. Tương tự như vậy đối với bất kỳ mặt nào khác, thay vì trên, chúng ta viết: phải, trái hoặc dưới.

    Tiêu đề bảng

    Tiêu đề bảng có thể được chỉ định bằng thẻ

    . Thẻ này có thể có nhiều thuộc tính trong CSS để biết thêm tinh chỉnh. TRONG Kiểu CSSĐiểm hay của bảng là bạn có thể điều khiển các phần tử theo cách bạn muốn.

    Tiêu đề này được hiển thị giống như tiêu chuẩn trong sách (ví dụ: "Bảng 1").

    Bạn cũng có thể chỉ định vị trí của tiêu đề này bằng thuộc tính bên chú thích (trên cùng hoặc dưới cùng). Căn trái hoặc phải được chỉ định bởi thuộc tính text-align.

    Nền bảng

    Nền của bảng có thể là bất kỳ màu sắc hoặc hoa văn nào. Màu sắc được xác định bởi thuộc tính màu nền. Tên của các thuộc tính hoàn toàn tương ứng với những thuộc tính được sử dụng trong lời nói. Điều này làm cho việc ghi nhớ dễ dàng hơn nhiều.

    Màu sắc có thể được chỉ định bằng tên hoặc mã hóa khác nhau. Ngoài ra, bạn có thể chỉ định những điều sau:

    • Minh bạch - yếu tố minh bạch.
    • Kế thừa - màu sắc giống như phần tử cha.
    • Giá trị ban đầu - mặc định.

    Tùy chọn trong suốt có thể được sử dụng trong trường hợp tất cả các bảng trong văn bản trong tệp CSS được thiết kế cùng màu, nhưng có cùng màu. trong trường hợp này không có nhu cầu như vậy.

    Ngoài ra, nền có thể là một hình ảnh. Để thực hiện việc này, thuộc tính hình nền được chỉ định trong tệp style. Đường dẫn được chỉ định như thế này:

    Đường dẫn đến tệp có thể là tương đối hoặc tuyệt đối.

    Việc tô màu phức tạp hơn có thể được thực hiện bằng cách sử dụng gradient:

    • gradient tuyến tính();
    • radial-gradient();
    • lặp lại-tuyến tính-gradient() và lặp lại-radial-gradient() - lặp lại độ dốc.

    Nền tế bào

    Ngoài toàn bộ nền, bạn có thể đặt nền xen kẽ theo cột hoặc hàng. Thuộc tính này được sử dụng rất thường xuyên trong thiết kế, vì sự phân tách trực quan của các dòng giúp thông tin dễ đọc hơn.

    Ngoài việc luân phiên, bạn cũng có thể chỉ định số lượng của một cột hoặc hàng cụ thể. Ví dụ như thế này:

    • tr:nth-child (chẵn) ( ... ) - dấu hiệu của sự xen kẽ dòng;
    • tr:nth-child (1) ( ... ) - cho biết thuộc tính của một hàng cụ thể;
    • td:nth-child (chẵn) ( ... ) - biểu thị sự xen kẽ của các cột;
    • td:nth-child (1) ( ... ) - cho biết thuộc tính của một cột cụ thể.

    Ngoài sự luân phiên và các số, bạn có thể chỉ định số đầu tiên (td:con đầu) hoặc số cuối (td:con cuối).

    Khoảng cách giữa các ô

    Trong CSS, kiểu dáng bảng cho phép bạn xóa khoảng trắng giữa các ô. Theo mặc định là như vậy. Ví dụ: nếu bạn đặt khung trong bảng mà không đặt khoảng cách giữa các đường viền, bạn sẽ nhận được kết quả như sau.

    Đồng ý, nó trông không đẹp lắm và không thuận tiện cho việc đọc. Người dùng sẽ có gợn sóng trong mắt vì điều này. Bạn có thể xóa những khoảng trống này bằng cách viết dòng sau theo kiểu bảng:

    sụp đổ biên giới: sụp đổ

    Nhưng ngược lại, điều đó cũng xảy ra là khoảng cách cần phải tăng lên. Hơn nữa, kích thước của khoảng trống có thể được chỉ định cả giữa các cột và giữa các hàng. Để thực hiện việc này, hãy chỉ định giá trị sau (thay vì thu gọn):

    thu gọn đường viền:riêng biệt

    Nhưng hành động này sẽ chỉ ra rằng các ô cần được phân chia. Cách chính xác để phân tách chúng được chỉ định bởi một thuộc tính bổ sung:

    khoảng cách đường viền: 20px.

    Nếu bạn cần chỉ định khoảng cách khác nhau giữa các hàng và cột thì hai giá trị được chỉ định:

    khoảng cách đường viền: 10px20px.

    Sự khác biệt của trình duyệt

    Hãy nhớ rằng kiểu dáng bảng trong CSS có thể trông khác nhau tùy thuộc vào trình duyệt. Tình hình đặc biệt tồi tệ với các phiên bản cũ hơn, không hỗ trợ đổi mới CSS.

    Trên đây là ví dụ về độ dày đường viền cho các giá trị số.

    Kiểu khung cũng khác nhau rất nhiều.

    Vì vậy, khi phát triển, hãy luôn xem kết quả trên các trình duyệt khác nhau.

    Các nhà phát triển rất tiên tiến có thể kết nối hoàn toàn khác Tệp CSS. Và ai đó sẽ kiểm tra từng hoặc bất kỳ phong cách (lớp) cụ thể nào.

    Hầu hết các vấn đề phát sinh với bóng tối.

    CSS: thiết kế bảng, ví dụ

    Thiết kế có thể rất đa dạng. Tất cả phụ thuộc vào toàn bộ trang web và thiết kế của nó. Mọi thứ nên được kết hợp và không đầy màu sắc. Hương vị của nhà phát triển cũng đóng một vai trò lớn. Cảm nhận về cái đẹp của mỗi người là khác nhau.

    Dưới đây là ví dụ về các bảng khác nhau. Hình trên cho thấy việc sử dụng độ nghiêng và chơi với các ranh giới.

    Nhiều người sẽ quan tâm đến một ví dụ về thiết kế đẹp, gọn gàng, không gây hại mắt người dùng. Tùy chọn này phù hợp trong hầu hết mọi tình huống.

    Các cạnh có thể được làm tròn. Nó trông khá đẹp.

    Phần kết luận

    Như bạn có thể thấy, để đăng ký vẻ bề ngoài bảng trong CSS tồn tại số lượng lớn công cụ. Mỗi tham số cũng có một số lượng lớn các giá trị có thể. Nếu bạn sử dụng tất cả những thứ này cùng một lúc, bạn có thể tạo ra những kiệt tác. Đặc biệt nếu bạn làm điều đó cho tất cả các trình duyệt.

    Điều chính khi thiết kế là không lạm dụng hiệu ứng. Mọi thứ cần phải được thực hiện có chừng mực. Lúc đầu, các nhà thiết kế bố cục thích thử nghiệm và sử dụng tất cả kiến ​​thức của họ cùng một lúc. Kết quả là các bảng trở nên quá bão hòa với các thuộc tính. Hãy cố gắng tránh những sai lầm này.

    Hơn nữa, một số thông số có thể ảnh hưởng lẫn nhau. Ví dụ: không cần chỉ định màu nền của bảng nếu nó cũng được đặt ở đó Hình nền, màu này sẽ chồng lên màu được chỉ định.

    Không có kiểu, bảng của chúng tôi trông rất đơn giản và kín đáo:

    Hình 1. Chế độ xem bảng không có kiểu.

    Hãy thêm phong cách để làm cho nó đẹp hơn:

    Trình đơn thả xuống

    Dòng sông Chiều dài (km) lưu vực thoát nước
    Amazon 6992 6915000
    sông Nile 6852 3349000
    Dương Tử 5800 1800000

    Bây giờ bảng của chúng tôi trông như thế này:


    Hình 2. Khung nhìn của bảng với các kiểu.

    Trong phong cách này, bạn cần chú ý đến quy tắc:

    /* Đặt tô sáng dòng khi di con trỏ */ tr+tr:hover( nền-color: #e6e3da; )

    Điều này sử dụng bộ chọn phần tử liền kề (dấu cộng) và lớp giả :hover, xác định kiểu của phần tử khi di chuột qua nó.

    Chúng ta không cần thay đổi màu nền của tiêu đề bảng khi di chuột phải không? Chúng ta cần thay đổi màu nền cho tất cả các hàng ngoại trừ hàng đầu tiên.

    Bộ chọn tr+tr liền kề sẽ được áp dụng cho tất cả các dòng ngoại trừ dòng đầu tiên. Đọc thêm về các bộ chọn lân cận tại đây. Và lớp giả :hover chỉ ra rằng kiểu từ Quy tắc CSS Chỉ cần thiết khi di con trỏ.

    Bây giờ chúng tôi có khá ví dụ thực tế những cái bàn. Chỉ cần lưu ý rằng có thể có một số bảng trên một trang và không phải tất cả chúng đều cần áp dụng kiểu này. Để kiểu chỉ hoạt động trên một bảng, chúng ta gán một lớp cho nó, đọc các lớp CSS.

    Trong ví dụ bên dưới, nhận xét chỉ dành cho mã được thêm vào.

    Trình đơn thả xuống

    Dòng sông Chiều dài (km) lưu vực thoát nước
    Amazon 6992 6915000
    sông Nile 6852 3349000
    Dương Tử 5800 1800000

    Không có gì thay đổi trong cách hoạt động của ví dụ này, nhưng lẽ ra nó không nên như vậy. Nếu bây giờ bạn lưu ví dụ này vào máy tính của mình và trong ví dụ thêm bảng thứ hai, chẳng hạn, sao chép mã bảng hiện có, nhưng xóa lớp ="river", nhưng kiểu sẽ chỉ được áp dụng cho bảng có lớp Cài đặt. Cái này những điều cơ bản đơn giản CSS.

    Ví dụ thứ hai

    Bây giờ hãy đặt nhiệm vụ sau: chúng ta cần đánh dấu cột đầu tiên bằng màu xám nhạt.

    Để giải quyết vấn đề này, chúng ta sẽ sử dụng lớp giả :first-child. Sử dụng lớp giả này, bạn có thể truy cập vào các ô đầu tiên của mỗi hàng.

    Bảng ví dụ

    Tên: Jack
    Họ: London

    Đây là một ví dụ rất đơn giản. Hãy sử dụng bộ chọn con để truy cập các phần tử này.

    Trong mã của chúng tôi, thẻ

    tổ tiên
    , nghĩa là bộ chọn con sẽ như thế này:

    Bảng ví dụ

    Tên: Jack
    Họ: London

    Và bây giờ chúng tôi thấy rằng phong cách của chúng tôi không hiệu quả. Tại sao? Rốt cuộc, thoạt nhìn, bộ chọn đã được chỉ định chính xác. Vấn đề là sau thẻ

    luôn có một thẻ . Nó ở đó, ngay cả khi nó không được viết bằng mã. Do đó mã sẽ hoạt động:

    Bảng ví dụ

    Tên: Jack
    Họ: London

    Bạn chắc chắn cần phải biết điểm này khi làm việc với bảng.

    Bây giờ còn một điểm nữa, mặc dù nó không liên quan trực tiếp đến bảng, nhưng khi làm việc với chúng, những câu hỏi tương tự thường có thể nảy sinh. Hãy xem nó bằng cách sử dụng mã này làm ví dụ. Ví dụ: chúng tôi muốn đặt màu nền của các ô hàng cuối cùng thành màu đỏ. Chúng ta sẽ sử dụng lớp (class="my-td") cho việc này.

    Bảng ví dụ

    Tên: Jack
    Họ: London

    Kết quả là lớp này hoạt động ở ô thứ hai ("London"), nhưng không hoạt động ở ô đầu tiên mà bộ chọn hoạt động bảng > tbody > tr > td:con đầu lòng.

    Tại sao nó lại xảy ra như vậy?

    Bởi vì bộ chọn bảng > tbody > tr > td:con đầu lòng có nhiều “trọng lượng” (ý nghĩa) hơn đối với CSS, bởi vì nó cụ thể hơn.

    Làm thế nào để khắc phục nó?

    Bạn có thể sử dụng bộ chọn cụ thể hơn để xác định lớp: table > tbody> tr > td.my-td .

    Bạn có thể sử dụng quy tắc !important. Quy tắc này làm tăng mức độ ưu tiên của kiểu; việc sử dụng quy tắc này được coi là một trường hợp cực đoan.

    Bảng ví dụ

    Tên: Jack
    Họ: London

    Trong trường hợp này, thay vì các lớp, bạn có thể sử dụng mã định danh id, mức độ ưu tiên của chúng cao hơn và kiểu sẽ được thực thi.

    Mỗi trình duyệt đều có những ưu tiên riêng, tôi chưa từng đọc về một tiêu chuẩn nghiêm ngặt nào ở đâu cả. Nhưng quy tắc chung Có:

    1. bộ chọn càng cụ thể thì trọng số của nó càng lớn;
    2. id quan trọng hơn lớp.

    Tất nhiên, chủ đề này không liên quan trực tiếp đến các bảng HTML; chúng ta chỉ xem xét một ví dụ về mức độ ưu tiên của bộ chọn bằng cách sử dụng các bảng làm ví dụ.

    Tuy nhiên, liên quan đến CSS, bạn nên nhớ rằng CSS không hoạt động tốt khi chọn các ô trong bảng (thẻ ). Tốt hơn là gán lớp đó cho một chuỗi (thẻ ), sau đó sử dụng bộ chọn có lớp giả td:nth-child(n) để chỉ định ô mong muốn.

    Dữ liệu dạng bảng- thông tin có thể được hiển thị trong bảng và được chia thành các cột và hàng một cách hợp lý. Thẻ HTML được sử dụng để hiển thị dữ liệu dạng bảng trên các trang web

    , là một thùng chứa nội dung của bảng. Nội dung HTML bảng được mô tả từng dòng, mỗi dòng bắt đầu bằng thẻ mở và kết thúc bằng thẻ đóng .

    Bên trong một thẻ

    các ô trong bảng được biểu thị bằng các thẻ được định vị
    hoặc . Đó là các ô chứa tất cả nội dung bảng hiển thị trên trang web.

    Khung bàn

    Theo mặc định, bảng HTML trên trang web được hiển thị không có đường viền; để thêm đường viền vào bảng, giống như tất cả các thành phần khác, thuộc tính CSS border được sử dụng. Nhưng điều đáng chú ý là nếu bạn chỉ thêm khung vào một phần tử

    , sau đó nó sẽ được hiển thị xung quanh toàn bộ bảng. Để các ô của bảng cũng có khung, bạn sẽ cần đặt tài sản biên giới và cho các phần tử
    .

    Bảng, th, td ( border: 1px màu đen; ) Hãy thử »

    Bây giờ cả bảng và ô đều có đường viền, đồng thời mỗi ô và bảng đều có đường viền riêng. Kết quả là giữa các khung xuất hiện khoảng trống, bạn có thể kiểm soát kích thước của không gian này bằng cách sử dụng thuộc tính border-spacing, được đặt cho toàn bộ bảng. Nói cách khác, bạn không thể kiểm soát khoảng cách giữa các ô riêng lẻ.

    Ngay cả khi bạn xóa khoảng cách giữa các ô bằng giá trị thuộc tính khoảng cách đường viền 0, đường viền của các ô sẽ chạm vào nhau, tăng gấp đôi kích thước. Để kết hợp các đường viền ô, hãy sử dụng thuộc tính thu gọn đường viền. Nó có thể có hai nghĩa:

    • riêng biệt: là mặc định. Các ô được hiển thị trên một khoảng cách ngắn với nhau, mỗi ô có đường viền riêng.
    • thu gọn: nối các khung liền kề thành một, tất cả khoảng cách giữa các ô, cũng như giữa các ô và khung bảng, đều bị bỏ qua.
    Tên tài liệu
    TênHọ
    HomerSimpson
    MargeSimpson

    TênHọ
    HomerSimpson
    MargeSimpson
    Thử "

    Kích thước bàn

    Sau khi thêm đường viền vào các ô của bảng, có thể nhận thấy rằng nội dung của các ô quá gần với các cạnh. Để thêm khoảng trắng giữa các cạnh của ô và nội dung của chúng, bạn có thể sử dụng thuộc tính đệm:

    Th, td ( đệm: 7px; ) Hãy thử »

    Kích thước của bảng phụ thuộc vào nội dung của nó, nhưng các tình huống thường phát sinh khi bảng quá hẹp và cần phải kéo dài nó ra. Chiều rộng và chiều cao của bảng có thể được thay đổi bằng cách sử dụng thuộc tính chiều rộng và chiều cao bằng cách chỉ định kích thước yêu cầu hoặc chính bảng hoặc các ô:

    Bảng (chiều rộng: 70%; ) thứ (chiều cao: 50px; ) Hãy thử »

    Căn chỉnh văn bản

    Theo mặc định, văn bản trong các ô tiêu đề bảng được căn giữa, trong khi văn bản trong các ô thông thường được căn trái; bằng cách sử dụng thuộc tính text-align, bạn có thể kiểm soát việc căn chỉnh văn bản theo chiều ngang.

    Thuộc tính CSS căn chỉnh theo chiều dọc cho phép bạn kiểm soát việc căn chỉnh theo chiều dọc của nội dung văn bản. Theo mặc định, văn bản được căn chỉnh theo chiều dọc vào giữa ô. Căn dọc có thể được ghi đè bằng cách sử dụng một trong các giá trị thuộc tính căn chỉnh dọc:

    • top: văn bản được căn chỉnh theo đường viền trên cùng của ô
    • giữa: căn văn bản vào giữa (mặc định)
    • dưới cùng: văn bản được căn chỉnh theo Giơi hạn dươi tế bào
    Tên tài liệu
    TênHọ
    HomerSimpson
    MargeSimpson
    Thử "

    Thay đổi màu nền của các hàng trong bảng

    Trong khi xem bàn lớn chứa nhiều dòng với một lượng lớn thông tin, có thể khó theo dõi dữ liệu nào thuộc về một hàng cụ thể. Để giúp người dùng tìm đường, bạn có thể sử dụng luân phiên hai màu nền khác nhau. Để tạo hiệu ứng được mô tả, bạn có thể sử dụng bộ chọn lớp, thêm nó vào mỗi hàng thứ hai của bảng:

    Tên tài liệu

    TênHọChức vụ
    HomerSimpsonbố
    MargeSimpsonmẹ
    BartSimpsonCon trai
    LisaSimpsoncon gái
    Thử "

    Việc thêm thuộc tính lớp vào mỗi dòng khác khá tẻ nhạt. Lớp giả:nth-child đã được thêm vào CSS3 để cung cấp giải pháp thay thế cho vấn đề này. Bây giờ hiệu ứng xen kẽ có thể đạt được độc quyền sử dụng CSS mà không thay đổi đánh dấu HTML của tài liệu. Sử dụng lớp giả:nth-child, bạn có thể chọn tất cả các hàng chẵn hoặc lẻ của bảng bằng cách sử dụng một trong các từ khóa: chẵn (chẵn) hoặc lẻ (lẻ):

    Tr:nth-child(odd) ( màu nền: #EAF2D3; ) Hãy thử »

    Thay đổi nền hàng khi di chuột

    Một cách khác để cải thiện khả năng đọc dữ liệu dạng bảng là thay đổi màu nền dòng khi bạn di con trỏ chuột qua nó. Điều này sẽ giúp làm nổi bật nội dung mong muốn của bảng và tăng cảm nhận trực quan về dữ liệu.

    Việc thực hiện hiệu ứng như vậy rất đơn giản; để thực hiện việc này, bạn cần thêm pseudo-class:hover vào bộ chọn hàng của bảng và đặt màu nền mong muốn:

    Tr:hover ( màu nền: #E0E0FF; ) Hãy thử »

    Căn chỉnh bảng vào giữa

    Căn chỉnh HTML Việc căn giữa bảng chỉ có thể thực hiện được nếu chiều rộng của bảng nhỏ hơn chiều rộng của phần tử cha của nó. Để căn chỉnh bảng vào giữa, bạn cần sử dụng thuộc tính lề, cung cấp cho nó ít nhất hai giá trị: giá trị đầu tiên sẽ chịu trách nhiệm về lề ngoài của bảng ở trên cùng và dưới cùng, và giá trị thứ hai sẽ chịu trách nhiệm về lề ngoài của bảng ở trên cùng và dưới cùng. tự động căn chỉnh vào trung tâm:

    Bảng ( lề: 10px tự động; ) Hãy thử »

    Nếu bạn cần vết lõm khác nhauở đầu và cuối bảng, bạn có thể đặt thuộc tính lề thành ba giá trị: giá trị đầu tiên chịu trách nhiệm về lề trên, giá trị thứ hai để căn chỉnh theo chiều ngang và giá trị thứ ba cho lề dưới:

    Bảng ( lề: 10px auto 30px; )

    Nhiều nhà quản trị web chắc chắn rằng việc sử dụng bảng HTML trong các mẫu là thực hành xấu. Nhưng trong bài học này chúng ta sẽ chỉ xem xét các bảng CSS. Sự khác biệt giữa các bảng HTML và CSS là gì? Tôi có nên sử dụng bảng CSS không? Nếu vậy thì làm thế nào?

    Cách tạo bảng CSS

    Mô hình bảng CSS dựa trên mô hình bảng HTML4 và được các trình duyệt hỗ trợ tốt. Trong cả hai mô hình, cấu trúc bảng tồn tại song song với việc trình bày trực quan.

    Các yếu tố chính của cấu trúc là các đường. Hàng được xác định rõ ràng và các cột phụ thuộc vào cách xác định hàng và ô.

    Có thể bạn đã từng làm việc với các bảng HTML trước đây. Nếu có thì bạn sẽ không gặp vấn đề gì khi tạo bảng CSS.

    Mỗi phần tử bảng HTML đều có CSS ​​tương đương. Sự khác biệt duy nhất là không có sự khác biệt giữa td và th trong biến thể CSS.

    Dưới đây là danh sách các thành phần bảng HTML và các giá trị CSS tương ứng của chúng.

    Bảng ( display: table ) tr ( display: table-row ) thead ( display: table-header-group ) tbody ( display: table-row-group ) tfoot ( display: table-footer-group ) col ( display: table- cột ) colgroup ( display: table-column-group ) td, th ( display: table-cell ) chú thích ( display: table-caption )

    Chú thích có thể được đặt ở đầu hoặc cuối bảng bằng thuộc tính caption-side:

    #caption (phía chú thích: trên cùng) #caption (phía chú thích: dưới cùng)

    Thật dễ dàng để tìm ra cách tạo bảng CSS dựa trên danh sách bên dưới. Đây là một bảng ví dụ.

    #table (display: table;).row (display: table-row;).cell (display: table-cell;)

    Nếu bạn nhìn vào mã Ví dụ về HTML, khi đó bạn có thể dễ dàng phân biệt cấu trúc bảng (sử dụng các phần tử div và span với các lớp và ID thay vì table , td và tr).

    Ở tất cả mã nhỏ CSS đại diện cho các phần tử div và span dưới dạng bảng.

    Ngoài các thuộc tính ở trên, mô hình bảng CSS còn bao gồm giá trị inline-table , xác định bảng mới như display: table , nhưng trong ngữ cảnh của định dạng được tích hợp trong mã HTML.

    Cột và cách nhóm của chúng

    Vì các ô trong bảng là hậu duệ của các hàng trong bảng nên việc sử dụng một số thuộc tính để tạo thành các cột là điều hợp lý. Mô hình bảng CSS cho phép bạn áp dụng các thuộc tính sau cho các cột và cách nhóm chúng:

    • ranh giới- một thuộc tính thông thường, miễn là thuộc tính thu gọn đường viền không được sử dụng trên thành phần bảng;
    • lý lịch— một thuộc tính bình thường, miễn là hàng và ô có nền trong suốt;
    • chiều rộng— thiết lập độ rộng cột;
    • hiển thị— nếu giá trị là thu gọn (giá trị duy nhất có sẵn), thì ô cột sẽ không được hiển thị (nó được hợp nhất với các cột khác và chiều rộng của bảng được căn chỉnh).

    Ngăn xếp bảng CSS

    Các thành phần bảng khác nhau có cấp độ khác nhau trong một ngăn xếp để cho phép sử dụng các nền khác nhau trên các lớp khác nhau.

    Những lớp này có thể được nhìn thấy trong hình được trình bày.

    1. bảng - lớp dưới cùng
    2. nhóm cột
    3. cột
    4. nhóm chuỗi
    5. dòng
    6. tế bào - lớp trên cùng

    Nền của lớp sẽ chỉ hiển thị nếu lớp phía trên nó có nền trong suốt.

    Cái này cách tuyệt vờiđể xuất ra các ô trống thực sự trống bằng cách sử dụng nền trong suốtđối với họ, qua đó sẽ hiển thị một hàng, cột hoặc bảng.

    Thuật toán mẫu bảng

    Độ rộng của bảng CSS có thể được tính bằng một trong hai thuật toán. Thuật toán được chọn bằng thuộc tính table-layout và hai giá trị:

    • đã sửa(đã sửa) - chiều rộng của mẫu được xác định không phải bởi nội dung mà bằng cách đặt chiều rộng của bảng, ô, khung và khoảng cách giữa các ô;
    • tự động(tự động)—chiều rộng của bảng được đặt dựa trên chiều rộng của cột và khung.

    Mô hình mẫu cố định được tính toán một lần và rất nhanh. MỘT chế độ tự động(mặc định) yêu cầu nhiều lần chuyển qua bảng HTML.

    Nếu bạn xác định rõ ràng chiều rộng của bảng thì bạn nên sử dụng mô hình tính toán chiều rộng cố định.

    Theo mặc định, chiều cao của ô được đặt ở mức tối thiểu cần thiết để hiển thị nội dung. Nhưng bạn có thể xác định rõ ràng chiều cao của ô. Tất cả các ô trong hàng sẽ có chiều cao của ô có giá trị lớn nhất.

    Thuộc tính Vertical-align xác định việc căn chỉnh nội dung trong một dòng

    • đường cơ sở
    • đáy
    • ở giữa
    • phụ, siêu, văn bản trên cùng, văn bản dưới cùng,<длина>, <процент>

    Nhóm giá trị cuối cùng không được áp dụng cho các ô mà cho văn bản trong đó. Các ô trong trường hợp này sẽ được căn chỉnh theo giá trị cơ bản.

    Đường viền bảng CSS

    Có ba thuộc tính thú vị cho khung bảng:

    • sụp đổ biên giới- có thể có các giá trị thu gọn, tách biệt hoặc kế thừa
    • khoảng cách đường viền- có thể quan trọng<расстояние_по_горизонтали>, <расстояние_по_вертикали>, hoặc kế thừa . Xác định khoảng cách giữa các khung ô.
    • ô trống- có thể có các giá trị hiển thị, ẩn hoặc kế thừa. Nếu ô trống hoặc có thuộc tính khả năng hiển thị: ẩn thì nội dung sẽ không được hiển thị theo mặc định. Đặt thuộc tính ô trống: hiển thị sẽ hiển thị nền và đường viền cho ô trống.

    Tôi có cần sử dụng bảng CSS không?

    Bảng CSS có tốt hơn bảng HTML không? Nếu có, lợi thế của họ là gì? Nếu không thì tại sao chúng không nên được sử dụng? Những câu hỏi hay, mà không có câu trả lời rõ ràng.

    Khi xem xét việc sử dụng bảng HTML so với sự kết hợp giữa div và mã CSS, bạn sẽ nhận thấy những nhược điểm sau của bảng:

    • Mã hóa bổ sung- Bảng HTML yêu cầu mã hóa cấu trúc bổ sung so với phần tử div. Nhưng các bảng CSS cũng yêu cầu sử dụng các lớp và mã định danh bổ sung.
    • Cấu trúc cứng rắn— Các bảng HTML được gắn rất chặt chẽ với nội dung. Thứ tự của các ô phải giống như thứ tự nó sẽ được hiển thị. Nhưng hạn chế tương tự cũng áp dụng cho các bảng CSS/
    • Đầu ra trong trình duyệt- trình duyệt thực hiện nhiều lần đi qua Cấu trúc HTML những cái bàn. Nhưng đối với các bảng CSS, tình huống sẽ tương tự.

    Theo quy định trên, bảng không có CSS lợi thế đáng kể trước các bảng HTML khi sử dụng chúng trong các mẫu.

    Bảng CSS là một giải pháp có ngữ nghĩa hơn vì có sự tách biệt rõ ràng giữa cấu trúc dữ liệu và hình thức.

    Phần kết luận

    Bảng CSS khá dễ học và sử dụng. Nhưng chúng không có lợi thế rõ ràng so với các bảng HTML, ngoại trừ việc có nhiều mã ngữ nghĩa hơn.

    Có thể thực hành sẽ cho thấy ưu điểm hoặc nhược điểm của bảng CSS. Bạn có kinh nghiệm sử dụng bảng CSS trong các dự án thực tế không?