Đưa phần tử lên trước bằng CSS


87

Tôi không thể tìm ra cách đưa hình ảnh lên trước bằng cách sử dụng CSS. Tôi đã thử đặt z-index thành 1000 và vị trí là tương đối, nhưng nó vẫn không thành công.

Đây là ví dụ-

#header {
    background: url(http://placehold.it/420x160) center top no-repeat;
}
#header-inner {
    background: url(http://placekitten.com/150/200) right top no-repeat;
}
.logo-class {
    height: 128px;
}
.content {
    margin-left: auto;
    margin-right: auto;
    table-layout: fixed;
    border-collapse: collapse;
}
.td-main {
    text-align: center;
    padding: 80px 10px 80px 10px;
    border: 1px solid #A02422;
    background: #ABABAB;
}
<body>
    <div id="header">
        <div id="header-inner">
            <table class="content">
                <col width="400px" />
                <tr>
                    <td>
                        <table class="content">
                            <col width="400px" />
                            <tr>
                                <td>
                                    <div class="logo-class"></div>
                                </td>
                            </tr>
                            <tr>
                                <td id="menu"></td>
                            </tr>
                        </table>
                        <table class="content">
                            <col width="120px" />
                            <col width="160px" />
                            <col width="120px" />
                            <tr>
                                <td class="td-main">text</td>
                                <td class="td-main">text</td>
                                <td class="td-main">text</td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </div>
        <!-- header-inner -->
    </div>
    <!-- header -->
</body>


Mang cái gì ra phía trước? Ngoài ra <col>NỮA .
Vucko

Đưa hình ảnh lên phía trước.
Stylock

Tại sao bạn lại sử dụng các bảng lồng nhau để làm menu?
Máy xay sinh tố

2
Tôi gặp sự cố với menu trong IE8 và các bảng lồng nhau đã sửa nó.
Stylock

Video này rất hữu ích để hiểu cách hoạt động của nó.
J0ANMM

Câu trả lời:


135

Thêm z-index:-1position:relativevào .content

#header {
    background: url(http://placehold.it/420x160) center top no-repeat;
}
#header-inner {
    background: url(http://placekitten.com/150/200) right top no-repeat;
}
.logo-class {
    height: 128px;
}
.content {
    margin-left: auto;
    margin-right: auto;
    table-layout: fixed;
    border-collapse: collapse;
    z-index: -1;
    position:relative;
}
.td-main {
    text-align: center;
    padding: 80px 10px 80px 10px;
    border: 1px solid #A02422;
    background: #ABABAB;
}
<body>
    <div id="header">
        <div id="header-inner">
            <table class="content">
                <col width="400px" />
                <tr>
                    <td>
                        <table class="content">
                            <col width="400px" />
                            <tr>
                                <td>
                                    <div class="logo-class"></div>
                                </td>
                            </tr>
                            <tr>
                                <td id="menu"></td>
                            </tr>
                        </table>
                        <table class="content">
                            <col width="120px" />
                            <col width="160px" />
                            <col width="120px" />
                            <tr>
                                <td class="td-main">text</td>
                                <td class="td-main">text</td>
                                <td class="td-main">text</td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </div>
        <!-- header-inner -->
    </div>
    <!-- header -->
</body>


2
Giải pháp của bạn đã hoạt động hoàn hảo. Bạn có thể vui lòng giải thích tại sao nó hoạt động không?
Cơn bão

1
@Germstorm Z-indexkiểm soát cách hình ảnh hoặc div xếp chồng lên nhau. Div / hình ảnh có giá trị z-index cao hơn sẽ đứng trước và thấp hơn sẽ ở sau.
Sowmya

Tôi không thực sự nhớ rõ hoàn cảnh của câu hỏi của mình, nhưng vấn đề của tôi là, tôi hiểu những gì z-indexphải làm, nhưng nó vẫn không hoạt động. Điều tôi học được từ câu trả lời này là z-indexbạn cũng phải xem xét hệ thống cấp bậc cha mẹ.
Bão mầm

2
@Germstorm câu trả lời gần đây từ lâu Khải là lời giải thích chính xác: z-index không có tác dụng nếu phần tử được không vị trí
FelipeAls

2
@SpiderMan Bạn nghĩ ra ở +1đâu? Điều đó không hợp lệ.
sjagr


6

Trong trường hợp của tôi, tôi phải di chuyển mã html của phần tử mà tôi muốn ở phía trước ở cuối tệp html, bởi vì nếu một phần tử có chỉ mục z và phần tử kia không có chỉ mục z thì nó không hoạt động.


Hai phần trong câu trả lời của bạn không liên quan (ít nhất là không có chi tiết nào khác). Phần đầu tiên là một giải pháp vì tất cả các thuộc tính khác bằng phần tử sau trong mã HTML được hiển thị phía trên các thuộc tính trước đó. Phần thứ hai là một số nhận xét về cách z-index có tác dụng như thế nào.
FelipeAls

1
điểm tốt về tất cả các phần tử phải có chỉ số z để nó hoạt động. cảm ơn!
Salah Saleh

3

Một lưu ý khác: chỉ số z phải được xem xét khi xem xét các đối tượng con so với các đối tượng khác.

Ví dụ

<div class="container">
    <div class="branch_1">
        <div class="branch_1__child"></div>
    </div>
    <div class="branch_2">
        <div class="branch_2__child"></div>
    </div>
</div>

Nếu bạn đã đưa ra branch_1__childchỉ số z 99và bạn đã đưa ra branch_2__childchỉ số z là 1, nhưng bạn cũng đưa branch_2chỉ số z của 10bạn và branch_1chỉ số z của 1bạn, ảnh branch_1__childvẫn của bạn sẽ không hiển thị trướcbranch_2__child

Dù sao, những gì tôi đang cố gắng nói là; nếu phần tử cha của một phần tử bạn muốn đặt ở phía trước có chỉ số z thấp hơn giá trị tương đối của nó, phần tử đó sẽ không được đặt cao hơn.

Chỉ số z có liên quan đến các vùng chứa của nó. Chỉ mục z được đặt trên một vùng chứa xa hơn trong hệ thống phân cấp về cơ bản bắt đầu một "lớp" mới

Incep [khởi đầu] tion

Đây là một trò đùa để chơi xung quanh:

https://jsfiddle.net/orkLx6o8/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.