CSSデザインテンプレートに取り組んでいます。
2つの画像imageOne
とimageTwo
があります。
両方ともposition: relative
そのうちの1つを設定するとposition: absolute
それから、それはもはや反応するように留まらず、反応性がここで重要です。
私が望むのは、imageTwo
の上にimageOne
を配置することです。
Twitterbootstrapのレスポンシブ機能がこれら2つの画像でまだ機能している間に、どうすればそれを実現できますか?
以下は私のコードです:(jsfiddle available here )
<div class="imageOne image"></div>
<div class="imageTwo image"></div>
CSS
.image {
position: relative;
width: 100px;
height: 100px;
border: 1px solid red;
}
.imageOne {
z-index: 0;
}
.imageTwo {
z-index: 1;
}
これらの画像にラッパーdivを追加し、相対位置を変更して.image { position: relative
からabsolute
に変更すると、うまくいきました。 http://jsfiddle.net/uS7nw/2/
<div class="container">
<div class="imageOne image"></div>
<div class="imageTwo image"></div>
</div>
そして
.container {
position: relative;
}
.image {
position: absolute;
width: 100px;
height: 100px;
border: 1px solid red;
}
プロパティを持つcontainer
内に要素がある場合:position: relative;
次に、そのコンテナ内のプロパティを持つ要素:position: absolute;
オフセットの起点はコンテナの左上に設定されます。
例えば、
<div class="relative"> <!-- top: 50px; left: 100px; //-->
<div class="absolute"></div> <!-- top: 0; left: 0; //-->
<div class="absolute"></div> <!-- top: 10px; left: 20px; //-->
</div>
最初の絶対子は、body
に対して(50px、100px)、またはcontainer
から(0,0)に配置されます。
ただし、2番目の子は、container
を基準として(10px、20px)、またはbody
を基準として(60px、120px)に配置されます(上から50 + 10、100 + 20を加算)左側)。
position:relative
でdivに両方をラップしたいと思います
<div style="position:relative">
<div class="imageOne image"></div>
<div class="imageTwo image"></div>
</div>
次に、両方の画像に絶対位置を与えます
.image {
position: absolute;
width: 100px;
height: 100px;
border: 1px solid red;
}
.imageTwo {
z-index: 1;
background:red;
margin-top: -42px;
}
.imageTwo {
z-index: 1;
margin-top: -100px;
}
コンテナにレスポンシブ画像があり、その画像の上に別の画像を配置する場合:
HTML:
.container {
position: relative;
width: 100px;/*Or whatever you want*/
}
.imageOne {
width: 100%;
}
.imageTwo {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div class="container">
<img class="imageOne" src="https://www.google.no/images/srpr/logo11w.png">
<img class="imageTwo" src="https://news.ycombinator.com/y18.gif">
</div>