[css] 자식 요소에 영향을주지 않고 배경 이미지의 불투명도 설정
자식 요소의 불투명도에 영향을주지 않고 배경 이미지의 불투명도를 설정할 수 있습니까?
예
바닥 글의 모든 링크에는 사용자 정의 글 머리 기호 (배경 이미지)가 필요하며 사용자 정의 글 머리 기호의 불투명도는 50 % 여야합니다.
HTML
<div id="footer">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
</ul>
</div>
CSS
#footer ul li {
background: url(/images/arrow.png) no-repeat 0 50%;
}
내가 시도한 것
목록 항목의 불투명도를 50 %로 설정하려고 시도했지만 링크 텍스트의 불투명도도 50 %입니다. 자식 요소의 불투명도를 재설정하는 방법이없는 것 같습니다.
#footer ul li {
background: url(/images/arrow.png) no-repeat 0 50%;
/* will also set the opacity of the link text */
opacity: 0.5;
}
또한 rgba를 사용해 보았지만 배경 이미지에는 영향을 미치지 않습니다.
#footer ul li {
/* rgba doesn't apply to the background image */
background: rgba(255, 255, 255, 0.5) url(/images/arrow.png) no-repeat 0 50%;
}
답변
linear-gradient()
와 함께 CSS 를 사용할 수 있습니다 rgba()
.
div {
width: 300px;
height: 200px;
background: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,.5)), url("https://i.imgur.com/xnh5x47.jpg");
}
span {
background: black;
color: white;
}
<div><span>Hello world.</span></div>
답변
이미지를 이미지 편집기로 가져 와서 불투명도를 낮추고 .png로 저장 한 다음 대신 사용하십시오.
답변
이것은 모든 브라우저에서 작동합니다
div {
-khtml-opacity:.50;
-moz-opacity:.50;
-ms-filter:"alpha(opacity=50)";
filter:alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity:.50;
}
투명성이 전체 컨테이너 및 해당 하위 항목에 영향을 미치지 않게하려면이 해결 방법을 확인하십시오. 부모가 상대적으로 위치하는 자녀가 있어야합니다.
http://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/ 에서 데모를 확인하십시오 .
답변
이미지를 글 머리 기호로 사용하는 경우 : before pseudo 요소를 고려할 수 있습니다.
#footer ul li {
}
#footer ul li:before {
content: url(/images/arrow.png);
filter:alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity:.50;
}
답변
div : after 또는 div : before에 이미지를 넣고 해당 “가상 div”에 불투명도를 설정할 수 있습니다
div:after {
background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
opacity: 0.25;
}
여기
http://css-tricks.com/snippets/css/transparent-background-images/에 있습니다
답변
#footer ul li {
position: relative;
opacity: 0.99;
}
#footer ul li::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
background: url(/images/arrow.png) no-repeat 0 50%;
opacity: 0.5;
}
불투명도 .99 (1 미만)로 해킹하면 z- 인덱스 컨텍스트가 생성되므로 전역 z- 인덱스 값에 대해 걱정할 필요가 없습니다. (제거하고 부모 래퍼에 양의 z- 인덱스가있는 다음 데모에서 어떤 일이 발생하는지 확인하십시오.)
요소에 이미 z- 색인이있는 경우이 해킹이 필요하지 않습니다.
이 기술의 데모 .
답변
불행히도이 답변을 작성할 당시에는 직접 수행 할 수있는 방법 없습니다 . 다음을 수행해야합니다.
- 배경에 반투명 이미지를 사용하십시오 (훨씬 더 쉬움).
- 불투명 한 어린이 옆에 div와 같은 추가 요소를 추가하고 배경을 추가하고 반투명하게 한 다음 언급 한 어린이 뒤에 배치하십시오.