[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- 색인이있는 경우이 해킹이 필요하지 않습니다.

이 기술의 데모 .


답변

불행히도이 답변을 작성할 당시에는 직접 수행 할 수있는 방법 없습니다 . 다음을 수행해야합니다.

  1. 배경에 반투명 이미지를 사용하십시오 (훨씬 더 쉬움).
  2. 불투명 한 어린이 옆에 div와 같은 추가 요소를 추가하고 배경을 추가하고 반투명하게 한 다음 언급 한 어린이 뒤에 배치하십시오.