Các phần tử html chồng chéo

John Imbong là một nhà thiết kế tự do ăn HTML vào bữa sáng với một miếng thịt xông khói (mmmm…thịt xông khói). Anh ấy cũng là CTO cho Gourmee. com và là một trong những … Thông tin thêm về John ↬

Bản tin email

Email (đập vỡ) của bạn

Mẹo hàng tuần về giao diện người dùng & UX.
Được hơn 200.000 người tin cậy.

  • Các phần tử html chồng chéo
    Xem trực tiếp vào tháng 12. thứ 8

  • Các phần tử html chồng chéo
    Hệ thống thiết kế thành công

  • Các phần tử html chồng chéo
    Danh sách kiểm tra thiết kế giao diện thông minh

  • Các phần tử html chồng chéo
    Bắt đầu miễn phí
  • Các phần tử html chồng chéo
    Giao diện người dùng SmashingConf 2023

  • Các phần tử html chồng chéo
    SmashingConf San Francisco. Tất cả về Frontend. Ngày 23–26 tháng 5 năm 2023

Kể từ khi CSS2 được đề xuất vào năm 1998, việc sử dụng các bảng đã dần dần mờ nhạt và đi vào sử sách. Do đó, bố cục CSS kể từ đó đồng nghĩa với sự thanh lịch trong mã hóa

Kể từ khi CSS2 được đề xuất vào năm 1998, việc sử dụng các bảng đã dần dần mờ nhạt và đi vào sử sách. Do đó, bố cục CSS kể từ đó đồng nghĩa với sự thanh lịch trong mã hóa

Trong số tất cả các khái niệm CSS mà các nhà thiết kế đã từng sử dụng, có lẽ cần phải trao giải thưởng cho việc sử dụng Lề âm vì đây là phương pháp định vị ít được nói đến nhất. Nó giống như một điều cấm kỵ trên mạng—mọi người đều làm nhưng không ai muốn nói về nó

Bạn cũng có thể muốn xem các bài viết trên Tạp chí Smashing sau đây

  • Bố cục cột có chiều cao bằng nhau với đường viền và lề âm trong CSS
  • Định tâm theo chiều ngang và dọc tuyệt đối trong CSS
  • Bí ẩn về thuộc tính float CSS
  • Nắm vững các nguyên tắc CSS. Hướng dẫn toàn diện

1. Thiết lập kỷ lục thẳng

Tất cả chúng ta đều sử dụng lợi nhuận trong CSS của mình, nhưng khi nói đến lợi nhuận âm, mối quan hệ của chúng ta bằng cách nào đó sẽ trở nên tồi tệ hơn. Việc sử dụng lợi nhuận âm trong thiết kế web bị chia rẽ đến mức trong khi một số người trong chúng ta hoàn toàn thích nó, thì cũng có những người chỉ đơn giản nghĩ rằng đó là công việc của quỷ dữ

Thêm sau khi nhảy. Tiếp tục đọc bên dưới ↓

Gặp gỡ Hội thảo trực tuyến Smashing về giao diện người dùng & giao diện người dùng, với các bài học thực tế, phiên trực tiếp, bản ghi video và phần Hỏi & Đáp thân thiện. Trên các hệ thống thiết kế, UX, hiệu suất web và CSS/JS. Với Brad Frost, Stephanie Troeth và rất nhiều người khác

Chuyển đến hội thảo ↬

Các phần tử html chồng chéo

Lợi nhuận âm trông như thế này

#content {margin-left:-100px;}

Biên độ âm thường được áp dụng với liều lượng nhỏ nhưng như bạn sẽ thấy sau này, nó có khả năng nhiều hơn thế. Một vài điều cần lưu ý về lợi nhuận âm là

  • Chúng là CSS cực kỳ hợp lệ. Tôi không đùa về điều này. W3C thậm chí còn nói rằng, “_Các giá trị âm cho các thuộc tính ký quỹ được cho phép…_” ‘Nuff nói. Tham khảo bài viết để biết thêm chi tiết
  • Lợi nhuận âm không phải là một hack. Điều này đặc biệt đúng. Chính vì không hiểu đúng về lợi nhuận âm nên nó có hình ảnh hack. Nó chỉ trở thành hack nếu bạn sử dụng nó để sửa lỗi bạn đã mắc phải ở nơi khác
  • Nó đi với dòng chảy. Nó không phá vỡ dòng chảy của trang nếu được áp dụng cho các phần tử không có dấu phẩy. Vì vậy, nếu bạn sử dụng lề âm để dịch chuyển một phần tử lên trên, thì tất cả các phần tử kế tiếp cũng sẽ được dịch chuyển
  • Nó tương thích cao. Lợi nhuận âm được hỗ trợ hoàn toàn trên tất cả các trình duyệt hiện đại (và IE6 trong hầu hết các trường hợp)
  • Nó phản ứng khác khi áp dụng float. Lợi nhuận âm không phải là CSS hàng ngày của bạn, vì vậy chúng nên được áp dụng cẩn thận
  • Dreamweaver không hiểu nó Lề âm không hiển thị trong Chế độ xem thiết kế của DW. Tại sao bạn vẫn kiểm tra trang web của mình trong Dạng xem Thiết kế?

2. Làm việc với lợi nhuận âm

Lợi nhuận âm rất mạnh khi được sử dụng đúng cách. Có 2 loại kịch bản trong đó tỷ suất lợi nhuận âm chiếm vị trí trung tâm

Lề âm trên các phần tử tĩnh

Các phần tử html chồng chéo

Phần tử tĩnh là phần tử không áp dụng float. Hình ảnh bên dưới minh họa cách các phần tử tĩnh phản ứng với lề âm

  • Khi một phần tử tĩnh được cấp một lề âm ở trên cùng/bên trái, nó sẽ kéo phần tử theo hướng đã chỉ định đó. Ví dụ

    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
  • Nhưng nếu bạn áp dụng nó ở dưới cùng/phải, nó sẽ không di chuyển phần tử xuống dưới/phải như bạn nghĩ. Thay vào đó, nó kéo bất kỳ phần tử kế tiếp nào vào phần tử chính, chồng lên nó

    /* 
    * All elements succeeding #mydiv1 move up by
    * 10px, while #mydiv1 doesn’t even move an inch.
    */
    
    #mydiv1 {margin-bottom:-10px;}
    
  • Nếu không áp dụng chiều rộng, việc thêm Lề âm vào bên trái/phải của phần tử sẽ kéo phần tử theo cả hai hướng làm tăng chiều rộng của phần tử. Ở đây, lề đóng vai trò như một phần đệm

Lề âm trên các phần tử nổi

Hãy coi đây là đánh dấu thực tế của chúng tôi

HTML

First
Second
  • Nếu một lề âm được áp dụng đối diện với một float, nó sẽ tạo ra một khoảng trống dẫn đến sự chồng chéo của nội dung. Điều này rất tốt cho bố cục lỏng trong đó một cột có chiều rộng 100% trong khi cột kia có chiều rộng xác định, chẳng hạn như 100px

    /* A negative margin is applied opposite the float */
    #mydiv1 {float:left; margin-right:-100px;}
    
  • Nếu cả hai phần tử được thả nổi bên trái và

    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
    0 được áp dụng cho
    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
    1, coi
    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
    2 như thể nó có chiều rộng nhỏ hơn 20px so với thực tế (do đó, chồng lên nó). Điều thú vị là nội dung của
    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
    2 hoàn toàn không phản ứng và tiếp tục giữ nguyên chiều rộng hiện tại của nó

  • Nếu lề âm bằng với chiều rộng thực, thì nó sẽ chồng lấp hoàn toàn. Điều này là do lề, phần đệm, đường viền và chiều rộng cộng lại thành tổng chiều rộng của một phần tử. Vì vậy, nếu lề âm bằng với phần còn lại của kích thước thì chiều rộng của phần tử thực sự trở thành

    /* Moves the element 10px upwards */
    
    #mydiv1 {margin-top:-10px;}
    
    4

3. Kỹ thuật hiệu quả

Vì bây giờ chúng ta biết rằng việc áp dụng lề âm là mã CSS2 hợp lệ, nên việc sử dụng nó cung cấp một số kỹ thuật CSS rất thú vị

Làm đĩa đơnthành một danh sách 3 cột

Các phần tử html chồng chéo

Nếu bạn có một danh sách các mục quá dài để hiển thị theo chiều dọc, tại sao không chia chúng thành các cột? . Thật tuyệt vời khi nó cho phép bạn dễ dàng chia danh sách bên dưới thành 3 cột riêng biệt, như vậy

HTML

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
0

CSS

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
1

Bằng cách thêm

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
5 (gấp đôi chiều cao dòng của
/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
6) vào
/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
7, tất cả các phần tử sẽ di chuyển lên trên một cách hoàn hảo. Sử dụng lề âm sẽ phù hợp hơn so với áp dụng định vị tương đối vì bạn chỉ phải áp dụng nó cho cột đầu tiên của cột mới thay vì cho từng thẻ
/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
6. Tuyệt nhỉ?

Chồng chéo để nhấn mạnh thêm

Các phần tử html chồng chéo

Các yếu tố chồng chéo về mục đích cũng là một ẩn dụ thiết kế tốt. Nó thêm điểm nhấn cho các yếu tố cụ thể vì hiệu ứng chồng chéo tạo ra ảo giác về chiều sâu. Một ví dụ điển hình là phần bình luận của Phlashers. com, sử dụng kỹ thuật chồng chéo để thu hút sự chú ý đến số lượng bình luận mà một bài đăng có. Kết hợp điều này với tài sản

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
9 và một chút sáng tạo và bạn đã hoàn thành

Đập vỡ hiệu ứng văn bản 3D

Các phần tử html chồng chéo

Đây là một thủ thuật gọn gàng. Tạo văn bản giống như Safari, hơi vát bằng cách tạo 2 phiên bản văn bản của bạn với 2 màu khác nhau. Sau đó, sử dụng các lề âm để chồng lên nhau với sự khác biệt khoảng 1 hoặc 2 pixel và bạn đã có văn bản vát thân thiện với rô-bốt có thể lựa chọn. Không cần jpeg hoặc gifs khổng lồ ngốn băng thông như lợn béo

Bố cục 2 cột đơn giản

Lề âm cũng là một cách tuyệt vời để tạo bố cục lỏng 2 cột đơn giản trong đó thanh bên có chiều rộng đặt trước và nội dung có chiều rộng lỏng là

/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
0

HTML

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
8

CSS

/* Moves the element 10px upwards */

#mydiv1 {margin-top:-10px;}
9

Và thế là bạn đã có một bố cục 2 cột ghi thời gian đơn giản. Nó cũng hoạt động hoàn hảo trong IE6. Bây giờ, để ngăn

/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
1 chồng lên văn bản bên trong
/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
2, chỉ cần thêm

/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
2

Khi được sử dụng đúng cách, lề âm cũng có thể cung cấp cái được gọi là Cấu trúc tài liệu linh hoạt, hoàn toàn có tác dụng đối với các bảng. Cấu trúc tài liệu linh hoạt là một kỹ thuật tiếp cận và SEO cho phép bạn sắp xếp đánh dấu của mình theo hầu hết mọi thứ tự tùy thuộc vào ý định của bạn. Tom Wright đã viết một bài báo thú vị thảo luận về các ứng dụng có thể có của lề âm trong bố cục nhiều cột

Di chuyển các yếu tố vào vị trí

Đây là cách sử dụng phổ biến nhất (và đơn giản nhất) cho lợi nhuận âm. Nếu bạn đang chèn một div thứ 10 trong biển 9 div khác và bằng cách nào đó, nó không thẳng hàng đúng cách, hãy sử dụng lề âm để div div thứ 10 đó vào vị trí thay vì phải chỉnh sửa 9 div kia.

4. Sửa lỗi

Các vấn đề về văn bản và liên kết

Sử dụng lợi nhuận âm với số float đôi khi gây khó chịu cho các trình duyệt cũ hơn. Một số triệu chứng bao gồm

  • Làm cho các liên kết không thể nhấp được
  • Văn bản trở nên khó chọn
  • Tab bất kỳ liên kết nào biến mất khi bạn mất tập trung

Dung dịch. Chỉ cần thêm

/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
3 và nó hoạt động

Hình ảnh của tôi đã bị cắt

Nếu bạn không may sử dụng IE6 trong văn phòng, đôi khi nội dung sẽ đột ngột bị cắt khi chồng chéo và thả nổi.

Dung dịch. Một lần nữa, chỉ cần thêm

/* 
* All elements succeeding #mydiv1 move up by
* 10px, while #mydiv1 doesn’t even move an inch.
*/

#mydiv1 {margin-bottom:-10px;}
3 vào phần tử nổi và mọi thứ sẽ trở lại bình thường

5. Sự kết luận

Lợi nhuận âm có một vị trí trong thiết kế web hiện đại vì khả năng định vị các phần tử mà không cần bất kỳ đánh dấu bổ sung nào. Với việc nhiều người dùng chuyển sang các trình duyệt cập nhật hơn (bao gồm cả IE8), tương lai có vẻ rất tươi sáng cho các trang web dựa vào kỹ thuật này