오버레이 요소 대신 의사 요소를 사용하는 것이 좋습니다. 닫힌 img요소에는 유사 요소를 추가 할 수 없기 때문에 img그래도 요소 를 래핑해야합니다 .
여기 라이브 예 - 텍스트가있는 예
<div class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
CSS의 경우 요소 에 선택적 크기 를 설정 .image하고 상대적으로 배치합니다. 반응 형 이미지를 목표로하는 경우 치수를 생략하면 여전히 작동합니다 (예제) . 차원은 img요소 자체가 아닌 부모 요소에 있어야합니다 .을 참조하십시오 .
.image {
position: relative;
width: 400px;
height: 400px;
}
자식 img요소에 100%부모 너비를 지정 하고 추가 vertical-align:top하여 기본 기준선 정렬 문제를 수정합니다.
.image img {
width: 100%;
vertical-align: top;
}
의사 요소의 경우 콘텐츠 값을 설정하고 .image요소를 기준으로 절대 위치를 지정합니다 . 너비 / 높이는 100%다양한 img크기에서 작동 합니다. 요소를 전환하려면 불투명도를 설정 0하고 전환 속성 / 값을 추가합니다.
.image:after {
content: '\A';
position: absolute;
width: 100%; height:100%;
top:0; left:0;
background:rgba(0,0,0,0.6);
opacity: 0;
transition: all 1s;
-webkit-transition: all 1s;
}
1전환을 용이하게하기 위해 가상 요소 위에 마우스를 올릴 때 불투명도를 사용합니다 .
.image:hover:after {
opacity: 1;
}
여기에서 결과 종료
마우스 오버시 텍스트를 추가하려면 :
가장 간단한 방법은 텍스트를 의사 요소의 content값 으로 추가하는 것입니다 .
여기에 예
.image:after {
content: 'Here is some text..';
color: #fff;
/* Other styling.. */
}
즉 한다 대부분의 경우에 작동; 그러나 img요소 가 두 개 이상있는 경우 마우스 오버시 동일한 텍스트가 표시되지 않도록 할 수 있습니다. 따라서 data-*속성에 텍스트를 설정할 수 있으므로 모든 img요소에 대해 고유 한 텍스트를 가질 수 있습니다 .
여기에 예
.image:after {
content: attr(data-content);
color: #fff;
}
A의 content값 attr(data-content), 의사 요소는에서 텍스트 추가 .image요소의 data-content속성을 :
<div data-content="Text added on hover" class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
스타일을 추가하고 다음과 같이 할 수 있습니다.
여기에 예
위의 예에서 :after의사 요소는 검은 색 오버레이 역할을하고 :before의사 요소는 캡션 / 텍스트입니다. 요소는 서로 독립적이므로보다 최적의 위치 지정을 위해 별도의 스타일을 사용할 수 있습니다.
.image:after, .image:before {
position: absolute;
opacity: 0;
transition: all 0.5s;
-webkit-transition: all 0.5s;
}
.image:after {
content: '\A';
width: 100%; height:100%;
top: 0; left:0;
background:rgba(0,0,0,0.6);
}
.image:before {
content: attr(data-content);
width: 100%;
color: #fff;
z-index: 1;
bottom: 0;
padding: 4px 10px;
text-align: center;
background: #f00;
box-sizing: border-box;
-moz-box-sizing:border-box;
}
.image:hover:after, .image:hover:before {
opacity: 1;
}