[css] CSS에서 부모의 자식 불투명도를 상속하고 싶지 않습니다.

CSS의 부모로부터 자식 불투명도를 상속하고 싶지 않습니다.

부모 인 하나의 div가 있고 첫 번째 div 안에 자식 인 다른 div가 있습니다.

부모 div에서 opacity 속성을 설정하고 싶지만 자식 div가 opacity 속성을 상속하지는 않습니다.

어떻게해야합니까?



답변

불투명도를 사용하는 대신 rgba를 사용하여 배경색을 설정하십시오. 여기서 ‘a’는 투명도입니다.

따라서 대신 :

background-color: rgb(0,0,255); opacity: 0.5;

사용하다

background-color: rgba(0,0,255,0.5);


답변

불투명도는 실제로 CSS에서 상속되지 않습니다. 렌더링 후 그룹 변환입니다. 다시 말해,<div> 불투명도가 설정된 경우 div와 모든 자식을 임시 버퍼로 렌더링 한 다음 지정된 불투명도 설정으로 해당 전체 버퍼를 페이지에 합성하십시오.

여기서 정확히하고자하는 것은 찾고있는 정확한 렌더링에 따라 다르며, 이는 확실하지 않습니다.


답변

다른 사람들 이이 스레드 및 다른 유사한 스레드에서 언급 했듯이이 문제를 피하는 가장 좋은 방법은 RGBA / HSLA를 사용하거나 투명 PNG를 사용하는 것입니다.

그러나이 스레드 (또는 내 웹 사이트)의 다른 답변에 연결된 것과 비슷한 어리석은 해결책을 원한다면 thatsNotYoChild.js라는이 문제를 자동으로 해결하는 새로운 스크립트가 있습니다.

http://www.impressivewebs.com/fixing-parent-child-opacity/

기본적으로 JavaScript를 사용하여 부모 div에서 모든 자식을 제거한 다음 자식 요소를 더 이상 해당 요소의 자식이 아닌 원래 위치로 다시 배치합니다.

나에게 이것은 최후의 수단이되어야한다. 그러나 누군가 이것을하기를 원한다면 이것을하는 것이 재미있을 것이라고 생각했다.


답변

부모가 투명하고 자녀가 동일하지만 독점적으로 정의되기를 원할 경우 약간의 트릭이 있습니다 (예 : 선택 드롭 다운의 사용자 에이전트 스타일을 덮어 쓰기).

.parent {
     background-color: rgba(0,0,0,0.5);
}

.child {
     background-color: rgba(128,128,128,0);
}


답변

자식 요소의 불투명도는 부모 요소에서 상속됩니다.

그러나 css position 속성을 사용하여 성과를 달성 할 수 있습니다.

텍스트 컨테이너 div는 부모 div 외부에 배치 할 수 있지만 원하는 효과를 투영하는 절대 위치를 지정할 수 있습니다.

이상적인 요구 사항 —- >>>>>>>>>>>>

HTML

            <div class="container">
              <div class="bar">
                  <div class="text">The text opacity is inherited   from the parent div    </div>
              </div>
            </div>

CSS

               .container{
                position:relative;
                                   }
           .bar{
               opacity:0.2;
               background-color:#000;
               z-index:3;
               position:absolute;
               top:0;
               left:0;
              }

              .text{
                color:#fff;

               }

산출:–

텍스트의 상속 된 불투명도 (텍스트 색상은 # 000이지만 표시 할 수는 없습니다.)

부모 div의 불투명도를 상속하므로 텍스트가 표시되지 않습니다.

해결책 ——————- >>>>>>

HTML

       <div class="container">
         <div class="text">Opacity is not inherited from parent div "bar"</div>
         <div class="bar"></div>
       </div>

CSS

               .container{
                position:relative;
                                   }
           .bar{
               opacity:0.2;
               background-color:#000;
               z-index:3;
               position:absolute;
               top:0;
               left:0;
              }

              .text{
                color:#fff;
                z-index:3;
                position:absolute;
               top:0;
               left:0;
               }

출력 :

상속되지 않음

div가 투명 div에 없기 때문에 텍스트가 배경과 동일한 색상으로 표시됩니다.


답변

배경이 색상 또는 이미지인지 여부에 대한 질문은 정의되지 않았지만 @Blowski가 이미 배경색에 대해 답변 했으므로 아래 이미지에 대한 해킹이 있습니다.

background: linear-gradient(rgba(0,0,0,.6), rgba(0,0,0,.6)), url('image.jpg');

이 방법으로 불투명도의 색상을 조작하고 멋진 그라디언트 효과를 추가 할 수 있습니다.

.wrapper {
  width: 630px;
  height: 420px;
  display: table;
  background: linear-gradient(
    rgba(0,0,0,.8),
    rgba(0,0,0,.8)),
    url('http://cdn.moviestillsdb.com/sm/35bc3c6a2b791425de6caf8b9391026e/rambo-iii.jpg');
 }

h1 {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  color: #fff;
  }
<div class="wrapper">
<h1>Question 5770341</h1>
</div>


답변

display: block요소는 display: inline부모 로부터 불투명도를 상속받지 않는 것 같습니다 .

코드 펜 예

유효하지 않은 마크 업이고 브라우저가 비밀리에 분리하고 있기 때문일 수 있습니다. 소스는 그런 일을 보여주지 않기 때문입니다. 뭔가 빠졌습니까?