マウスオーバーするとカラーオーバーレイ(テキストではなく画像のみ)が表示されるレスポンシブグリッドの画像(説明付き)を作成しようとしています。画像の高さが反応するため、オーバーレイが画像だけでなくすべてを覆うという問題が発生しています。
これを修正する方法はありますか?
理解を容易にするために、ここで問題を再現しました。 http://jsfiddle.net/r8rFc/
これが私のHTMLです。
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-3 project">
<a href="#">
<div>
<img src="http://placehold.it/500x500" class="img-responsive"/>
<div class="fa fa-plus project-overlay"></div>
</div>
<div style="text-align:center;">
<h3>Project name</h3>
<p>Image description</p>
</div>
</a>
</div>
</div>
そして私のCSS:
.project-overlay {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(41,128,185,0.9);
color: #fff;
padding: 50%;
}
前もって感謝します!
含まれるdivにクラスを追加し、次のCSSを設定します。
.img-overlay {
position: relative;
max-width: 500px; //whatever your max-width should be
}
position: relative
は、position: absolute
を持つ子の親要素で、その親に関連して子を配置するために必要です。
Position:absoluteを指定すると、position:relativeで次に高い要素に自分自身を配置します。この場合、それは.project divです。
画像の直接の親divにposition:relativeのスタイルを与えると、オーバーレイはテキストを含むdivの代わりにそれにキーを合わせます。例: http://jsfiddle.net/7gYUU/1/
<div class="parent">
<img src="http://placehold.it/500x500" class="img-responsive"/>
<div class="fa fa-plus project-overlay"></div>
</div>
.parent {
position: relative;
}
あなたの質問を理解したら、画像の上にオーバーレイを置き、すべてをカバーしたくないですか?
オーバーレイはウィンドウではなくこのdivに対して相対的に配置する必要があるため、親DIV(jsfiddleのコンテンツで名前を変更)の位置を相対に設定します。
.content
{
position: relative;
}
私はいくつかのポックをし、あなたのフィドルを更新して、オーバーレイがあなたが望むものであると思う(私が思うに)、ちょうど私に知らせてください:) http://jsfiddle.net/b9Vyw/ =
これを機能させるのに少し苦労しました。 Brouxhahaの答えを使用すると、探していたものの90%を得ることができました。しかし、パディング調整では、テキストを好きな場所に配置できません。 topとleftを使用することは、私の目的にとってはうまくいくように見えました。
.project-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
color: #fff;
top: 80%;
left: 20%;
}
<div class="col-md-4 py-3 pic-card">
<div class="card ">
<div class="pic-overlay"></div>
<img class="img-fluid " src="images/Site Images/Health & Fitness-01.png" alt="">
<div class="centeredcard">
<h3>
<span class="card-headings">HEALTH & FITNESS</span>
</h3>
<div class="content-inner mt-5">
<p class="lead p-overlay">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae ipsam nemo quasi quo quae voluptate.</p>
</div>
</div>
</div>
</div>
.pic-card{
position: relative;
}
.pic-overlay{
top: 0;
left: 0;
right:0;
bottom:0;
width: 100%;
height: 100%;
position: absolute;
transition: background-color 0.5s ease;
}
.content-inner{
position: relative;
display: none;
}
.pic-card:hover{
.pic-overlay{
background-color: $dark-overlay;
}
.content-inner{
display: block;
cursor: pointer;
}
.card-headings{
font-size: 15px;
padding: 0;
}
.card-headings::after{
content: '';
width: 80%;
border-bottom: solid 2px rgb(52, 178, 179);
position: absolute;
left: 5%;
top: 25%;
z-index: 1;
}
.p-overlay{
font-size: 15px;
}
}
enter code here