>웹 프론트엔드 >CSS 튜토리얼 >배경이 투명한 이미지에서 삽입 상자 그림자가 사라지는 이유는 무엇입니까?

배경이 투명한 이미지에서 삽입 상자 그림자가 사라지는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-30 00:48:02923검색

Why Does Inset Box-Shadow Disappear Over Images with Transparent Backgrounds?

이미지에 대한 삽입 상자 그림자 문제 이해

웹 디자인에서는 삽입 상자 그림자를 사용하여 요소 내에 깊이와 차원을 만드는 것이 일반적인 기술입니다. 그러나 이미지가 포함된 컨테이너를 처리할 때 항상 간단한 것은 아닙니다. 삽입된 상자 그림자가 삽입된 이미지 위로 사라지는 것처럼 보일 때 문제가 발생합니다.

보이지 않는 그림자의 경우

원래 질문에 제공된 예를 고려하세요.

<code class="css">body {
  background-color: #000000;
}

main {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 90%;
  height: 90%;
  background-color: #FFFFFF;
  box-shadow: inset 3px 3px 10px 0 #000000;
}

main::after {
  box-shadow: inset 3px 3px 10px 0 #000000;
  content: '';
  display: block;
  height: 100%;
  position: absolute;
  top: 0;
  width: 100%;
}</code>
<code class="html"><main>
  <img src="https://upload.wikimedia.org/wikipedia/commons/d/d2/Solid_white.png">
</main></code>

이미지를 포함하여 컨테이너 주위에 삽입 상자 그림자를 적용하는 것이 목표이지만 나타나지 않습니다. 왜 이런 일이 일어나는 걸까요?

이미지 투명성의 문제

이미지에서 그림자가 사라지는 이유는 투명성에 있습니다. 이미지의 배경이 투명한 경우 이는 기본적으로 배경 요소에 대한 창입니다. 이 경우 컨테이너의 배경은 검은색입니다. 결과적으로 이미지의 투명한 영역에서는 삽입된 그림자가 보이지 않게 됩니다.

투명도 장벽 극복

이 문제를 해결하려면 CSS를 사용하는 간단하고 우아한 솔루션을 사용할 수 있습니다. :의사 요소 뒤에. :after 의사 요소를 컨테이너에 추가하면 이미지 위에 배치되고 삽입 상자 그림자를 받는 추가 레이어를 만들 수 있습니다.

아래 업데이트된 CSS 스니펫에서 :after 의사 요소를 적용합니다. 요소를

컨테이너:

<code class="css">main::after {
  box-shadow: inset 3px 3px 10px 0 #000000;
  content: '';
  display: block;
  height: 100%;
  position: absolute;
  top: 0;
  width: 100%;
}</code>

이 수정을 통해 이제 삽입된 상자 그림자가 이미지의 불투명 영역과 투명 영역 모두에 나타나 원하는 그림자 효과를 제공합니다.

위 내용은 배경이 투명한 이미지에서 삽입 상자 그림자가 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.