CSSを使用して要素を前面に移動します


87

を使用して画像を前面に表示する方法がわかりませんCSS。z-indexを1000に、positionをrelativeに設定しようとしましたが、それでも失敗します。

ここに例があります-

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


何を前面に出しますか?また、<col>非推奨です
vucko 2013

画像を前面に表示します。
Stylock 2013

ネストされたテーブルを使用してメニューを作成するのはなぜですか?
Blender 2013

2
IE8のメニューに問題があり、ネストされたテーブルで修正されました。
Stylock 2013

このビデオは、それがどのように機能するかを理解するのに非常に役立ちます。
J0ANMM 2017年

回答:


135

追加z-index:-1position: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
あなたのソリューションは完璧に機能しました。これが機能する理由を説明していただけますか?
Germstorm 2014年

1
@GermstormZ-indexは、画像またはdivが相互にスタックする方法を制御します。z-index値が高いDiv / imageが前面に表示され、値が小さい方が後ろに残ります。
Sowmya 2015年

質問の状況をはっきりと覚えていませんが、何z-indexができるのか理解できたのにうまくいかなかったのが問題でした。この回答から私が学んだz-indexことは、親階層も考慮に入れる必要があるということです。
Germstorm 2015年

2
@Germstorm Soon Khaiからの最近の回答は正しい説明です:要素が配置されていない場合、z-indexは効果がありません
FelipeAls 2015

2
@SpiderManどこで思いついたの+1?それは無効です。
sjagr 2015


6

私の場合、必要な要素のhtmlコードをhtmlファイルの最後の先頭に移動する必要がありました。これは、一方の要素にz-indexがあり、もう一方の要素にz-indexがない場合は機能しないためです。


あなたの答えの2つの部分は関連していません(少なくとも他の詳細はありません)。HTMLコードの後半の要素に等しい他のすべてのプロパティが前の要素の上に表示されるため、最初の部分は解決策です。2番目の部分は、z-indexがどのように効果を発揮するかについてのコメントです。
FelipeAls 2015

1
すべての要素の良い点は、それが機能するためにz-indexを持っている必要があります。ありがとう!
Salah Saleh 2016

3

別の注意:子オブジェクトを他のオブジェクトと比較して見るときは、z-indexを考慮する必要があります。

例えば

<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__childのzインデックスを99、あなたが与えたbranch_2__child1のzインデックスをしますが、あなたの与えたbranch_2のzインデックスを10し、あなたbranch_1のzインデックス1あなた、branch_1__childまだあなたの目の前には表示されませんbranch_2__child

とにかく、私が言おうとしているのは、前面に配置する要素の親のzインデックスが相対値よりも低い場合、その要素は高く配置されません。

z-indexは、そのコンテナーを基準にしています。階層のさらに上のコンテナに配置されたz-indexは、基本的に新しい「レイヤー」を開始します

インセプション[開始]

遊ぶためのフィドルは次のとおりです。

https://jsfiddle.net/orkLx6o8/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.