Hướng dẫn how do i overlay one div over another div in css? - làm cách nào để chồng một div lên một div khác trong css?

Giải pháp được chấp nhận hoạt động rất tốt, nhưng IMO thiếu một lời giải thích về lý do tại sao nó hoạt động. Ví dụ dưới đây được đun sôi theo những điều cơ bản và tách các CSS quan trọng với CSS kiểu dáng không liên quan. Như một phần thưởng, tôi cũng đã bao gồm một lời giải thích chi tiết về cách thức định vị CSS hoạt động.

TLDR; Nếu bạn chỉ muốn mã, hãy cuộn xuống kết quả. if you only want the code, scroll down to The Result.

Vấn đề

Có hai phần tử riêng biệt, anh chị em và mục tiêu là định vị phần tử thứ hai (với id của infoi), do đó nó xuất hiện trong phần tử trước đó (phần có class của navi). Cấu trúc HTML không thể thay đổi.

Giải pháp đề xuất

Để đạt được kết quả mong muốn, chúng tôi sẽ di chuyển hoặc vị trí, phần tử thứ hai mà chúng tôi sẽ gọi #infoi để nó xuất hiện trong phần tử thứ nhất mà chúng tôi sẽ gọi là .navi. Cụ thể, chúng tôi muốn #infoi được định vị ở góc trên bên phải của .navi.

Vị trí CSS Kiến thức bắt buộc

CSS có một số thuộc tính cho các yếu tố định vị. Theo mặc định, tất cả các yếu tố là

2. Điều này có nghĩa là phần tử sẽ được định vị theo thứ tự của nó trong cấu trúc HTML, với một vài ngoại lệ.

Các giá trị

3 khác là
4,
5,
6 và
7. Bằng cách đặt
3 của một phần tử thành một trong các giá trị khác, giờ đây có thể sử dụng kết hợp bốn thuộc tính sau để định vị phần tử:

  • 9
  • .wrapper {
      position: relative;
    }
    
    0
  • .wrapper {
      position: relative;
    }
    
    1
  • .wrapper {
      position: relative;
    }
    
    2

Nói cách khác, bằng cách cài đặt

.wrapper {
  position: relative;
}
3, chúng ta có thể thêm
.wrapper {
  position: relative;
}
4 để định vị phần tử 100 pixel từ đầu trang. Ngược lại, nếu chúng ta đặt
.wrapper {
  position: relative;
}
5, phần tử sẽ được định vị 100 pixel từ cuối trang.

Đây là nơi nhiều người mới CSS bị mất -

.wrapper {
  position: relative;
}
3 có khung tham chiếu. Trong ví dụ trên, khung tham chiếu là phần tử
.wrapper {
  position: relative;
}
7.
.wrapper {
  position: relative;
}
3 với
.wrapper {
  position: relative;
}
4 có nghĩa là phần tử được định vị 100 pixel từ phần trên của phần tử
.wrapper {
  position: relative;
}
7.
-
.wrapper {
  position: relative;
}
3 has a frame of reference. In the example above, the frame of reference is the
.wrapper {
  position: relative;
}
7 element.
.wrapper {
  position: relative;
}
3 with
.wrapper {
  position: relative;
}
4 means the element is positioned 100 pixels from the top of the
.wrapper {
  position: relative;
}
7 element.

Khung vị trí của tham chiếu hoặc bối cảnh vị trí, có thể được thay đổi bằng cách đặt

3 của phần tử cha thành bất kỳ giá trị nào khác ngoài
2. Đó là, chúng ta có thể tạo bối cảnh vị trí mới bằng cách đưa ra một yếu tố cha mẹ:any value other than
2
. That is, we can create a new position context by giving a parent element:

  • #infoi {
      position: absolute;
      top: 0;
      right: 0;
    }
    
    3
  • #infoi {
      position: absolute;
      top: 0;
      right: 0;
    }
    
    4
  • #infoi {
      position: absolute;
      top: 0;
      right: 0;
    }
    
    5
  • #infoi {
      position: absolute;
      top: 0;
      right: 0;
    }
    
    6

Ví dụ: nếu một phần tử

#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
7 được đưa ra
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
8, bất kỳ phần tử con nào cũng sử dụng
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
7 làm bối cảnh vị trí của chúng. Nếu một phần tử con được cung cấp
.wrapper {
  position: relative;
}
3 và
.wrapper {
  position: relative;
}
4, phần tử sẽ được định vị 100 pixel từ phần trên của phần tử
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
7, bởi vì
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
7 hiện là bối cảnh vị trí.

Yếu tố khác cần lưu ý là thứ tự xếp chồng - hoặc làm thế nào các yếu tố được xếp chồng lên nhau theo hướng z. Theo mặc định, phải biết ở đây là thứ tự ngăn xếp của các phần tử được xác định bởi mặt trái của thứ tự của chúng trong cấu trúc HTML. Xem xét ví dụ sau: to be aware of is stack order - or how elements are stacked in the z-direction. The must-know here is the stack order of elements are, by default, defined by the reverse of their order in the HTML structure. Consider the following example:


  
Bottom
Top

Trong ví dụ này, nếu hai phần tử id4 được định vị ở cùng một vị trí trên trang, phần tử id5 sẽ bao gồm phần tử id6. Vì id5 xuất hiện sau id6 trong cấu trúc HTML, nó có thứ tự xếp chồng cao hơn.

Thứ tự xếp chồng có thể được thay đổi với CSS bằng các thuộc tính id9 hoặc infoi0.

Chúng ta có thể bỏ qua thứ tự xếp chồng trong vấn đề này vì cấu trúc HTML tự nhiên của các phần tử có nghĩa là phần tử chúng ta muốn xuất hiện trên

9 xuất hiện sau phần tử khác.

Vì vậy, trở lại vấn đề trong tay - chúng tôi sẽ sử dụng bối cảnh vị trí để giải quyết vấn đề này.

Giải pháp

Như đã nêu ở trên, mục tiêu của chúng tôi là định vị phần tử #infoi để nó xuất hiện trong phần tử .navi. Để làm điều này, chúng tôi sẽ kết thúc các phần tử .navi#infoi trong một phần tử mới infoi6 để chúng tôi có thể tạo bối cảnh vị trí mới.

Sau đó tạo bối cảnh vị trí mới bằng cách cho infoi7

#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
8.

.wrapper {
  position: relative;
}

Với bối cảnh vị trí mới này, chúng ta có thể định vị #infoi trong vòng infoi7. Đầu tiên, cho #infoi

.wrapper {
  position: relative;
}
3, cho phép chúng tôi định vị #infoi hoàn toàn trong infoi7.

Sau đó thêm class5 và class6 để định vị phần tử #infoi ở góc trên cùng bên phải. Hãy nhớ rằng, vì phần tử #infoi đang sử dụng infoi7 làm bối cảnh vị trí của nó, nó sẽ nằm trong phần trên bên phải của phần tử infoi7.

#infoi {
  position: absolute;
  top: 0;
  right: 0;
}

Bởi vì infoi7 chỉ là một container cho .navi, định vị #infoi ở góc trên bên phải của infoi7 mang lại hiệu ứng được định vị ở góc trên bên phải của .navi.

Và chúng tôi có nó, #infoi bây giờ dường như ở góc trên bên phải của .navi.

Kết quả

Ví dụ dưới đây được đưa xuống những điều cơ bản, và chứa một số kiểu dáng tối thiểu.

Một giải pháp thay thế (lưới)

Dưới đây là một giải pháp thay thế sử dụng lưới CSS để định vị phần tử .navi với phần tử #infoi ở phía bên phải. Tôi đã sử dụng các thuộc tính dài dòng #infoi0 để làm cho nó rõ ràng nhất có thể.

Một giải pháp thay thế (không bao bọc)

Trong trường hợp chúng tôi không thể chỉnh sửa bất kỳ HTML nào, có nghĩa là chúng tôi không thể thêm phần tử trình bao bọc, chúng tôi vẫn có thể đạt được hiệu ứng mong muốn.

Thay vì sử dụng

.wrapper {
  position: relative;
}
3 trên phần tử #infoi, chúng tôi sẽ sử dụng
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
8. Điều này cho phép chúng tôi định vị lại phần tử #infoi từ vị trí mặc định của nó bên dưới phần tử .navi. Với
#infoi {
  position: absolute;
  top: 0;
  right: 0;
}
8, chúng ta có thể sử dụng giá trị
9 âm để di chuyển nó từ vị trí mặc định của nó và giá trị
.wrapper {
  position: relative;
}
2 là #infoi9 trừ đi một vài pixel, sử dụng .navi0, để định vị nó gần bên phải.

Làm cách nào để ghi đè một div trên một div khác?

Thêm CSS..
Chỉ định chiều rộng và chiều cao của lớp "container".Đặt vị trí thành "tương đối" và thêm thuộc tính ký quỹ ..
Đặt cả chiều rộng và chiều cao của lớp "hộp" thành "100%".Chỉ định vị trí với giá trị "tuyệt đối".....
Kiểu lớp "Lớp phủ" bằng cách sử dụng các thuộc tính Z-Index, lề và nền ..

Làm cách nào để chồng chéo một yếu tố với CSS khác?

Sử dụng nhà phát triển thuộc tính CSS Z-Index có thể xếp các phần tử lên nhau.Chỉ số z có thể có một giá trị dương hoặc một giá trị âm.Lưu ý-nếu các phần tử chồng chéo không có chỉ số z được chỉ định thì phần tử đó sẽ hiển thị được đề cập cuối cùng trong tài liệu. developer can stack elements onto one another. Z-Index can have a positive or a negative value. NOTE − If elements that overlap do not have z-index specified then that element will show up that is mentioned last in document.

Chúng ta có thể phủ lên div không?

Tạo một hiệu ứng lớp phủ đơn giản có nghĩa là đặt hai div với nhau ở cùng một nơi nhưng cả hai div đều xuất hiện khi cần, tức là trong khi lơ lửng hoặc trong khi nhấp vào một trong các div để làm cho cái thứ hai xuất hiện.Lớp phủ rất sạch sẽ và cung cấp cho trang web một cái nhìn gọn gàng.Nó trông tinh vi và đơn giản để thiết kế.