Виведіть елемент спереду за допомогою CSS


87

Я не можу зрозуміти, як перенести зображення спереду за допомогою CSS. Я вже намагався встановити z-індекс на 1000 і розташування на відносний, але він все ще не вдається.

Ось приклад -

#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>


Принести що наперед? Крім того , <кол> є застарілі .
Вучко

Виведіть зображення спереду.
Stylock

Чому ви використовуєте вкладені таблиці для створення меню?
Blender

2
У мене були проблеми з меню в IE8, і вкладені таблиці це виправляли.
Stylock

Це відео надзвичайно корисно, щоб зрозуміти, як воно працює.
J0ANMM

Відповіді:


135

Додайте z-index:-1та position:relativeдо .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
Ваше рішення спрацювало ідеально. Чи можете ви пояснити, чому це працює?
Гермсторм

1
@Germstorm Z-indexконтролює спосіб накладання зображень або divs один на одного. Розділ / зображення з вищим значенням z-індексу займає перше місце, а нижче залишається позаду.
Sowmya

Я насправді чітко не пам’ятаю обставин свого запитання, але моя проблема полягала в тому, що я розумів, що z-indexробить, але все одно це не спрацювало. Що я дізнався з цієї відповіді, це те, що z-indexви також повинні враховувати батьківську ієрархію.
Гермсторм,

2
@Germstorm Недавня відповідь від Soon Khai є правильним поясненням: z-index не впливає, якщо елемент не позиціонований
FelipeAls

2
@SpiderMan Де ти це придумав +1? Це не дійсно.
sjagr


6

У моєму випадку мені довелося перенести html-код елемента, який я хотів, спереду в кінці html-файлу, тому що якщо один елемент має z-індекс, а інший не має z-індексу, це не працює.


Дві частини вашої відповіді не пов’язані (принаймні, без інших деталей). Перша частина є рішенням, оскільки всі інші властивості, що дорівнюють останньому елементу в HTML-коді, відображаються над попередніми. Друга частина - це якийсь коментар про те, як z-index має певний ефект.
FelipeAls

1
хороший момент щодо всіх елементів повинен мати z-індекс, щоб він працював. Дякую!
Салах Салех

3

Інша примітка: z-індекс потрібно враховувати, дивлячись на дочірні об’єкти щодо інших об’єктів.

Наприклад

<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>

Якщо ви дали branch_1__childz-індекс, 99і ви дали branch_2__childz-індекс 1, але ви також дали свій branch_2z-індекс 10і ваш branch_1z-індекс 1, ваш branch_1__childвсе одно не відображатиметься перед вашимbranch_2__child

У будь-якому разі, я намагаюся сказати; якщо батьківський елемент елемента, який ви хочете розмістити спереду, має нижчий z-індекс, ніж його відносний, цей елемент не буде розміщений вище.

Z-індекс відносно його контейнерів. Z-індекс, розміщений на контейнері далі в ієрархії, в основному запускає новий "шар"

Incep [початок] ції

Ось скрипка, з якою можна пограти:

https://jsfiddle.net/orkLx6o8/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.