CSS를 사용하여 텍스트 나 이미지에 투명한 배경을 주려면 어떻게해야합니까?


2283

CSS 만 사용하여 background 요소를 반투명 있지만 요소의 내용 (텍스트 및 이미지)을 불투명하게 만들 수 있습니까?

텍스트와 배경을 두 개의 별도 요소로 사용하지 않고이 작업을 수행하고 싶습니다.

시도 할 때 :

p {
  position: absolute;
  background-color: green;
  filter: alpha(opacity=60);
  opacity: 0.6;
}

span {
  color: white;
  filter: alpha(opacity=100);
  opacity: 1;
}
<p>
  <span>Hello world</span>
</p>

자식 요소가 부모의 불투명도에 영향을받는 것처럼 보이므로 부모 요소와 opacity:1관련이 opacity:0.6있습니다.


16
안타깝게도 CSS3는이를 새로운 색상 모듈로 수정하는 것을 목표로하고 있습니다. 색상을 지정할 때마다 알파 값을 지정할 수 있습니다. w3.org/TR/css3-color
meandmycode

71
실제로 자식 요소의 불투명도 에는 재정의되지 않고 부모 요소의 불투명도 가 곱해 집니다. 예를 들어 p'불투명도' .6이고 span'불투명도'인 .5경우 범위에서 텍스트의 실제 불투명도 는 다음과 같습니다 0.3.
chharvey

1
그렇게 추측하지만 반투명의 배경이기 때문에, 당신도 필터 / 불투명도 필요가 없습니다 codepen.io/anon/pen/ksJug
스테인 샌더스

5
@chharvey opacity:.5부모와 opacity:2자식 요소를 정의하면 어떻게 될까요?
Alexander

10
@Alexander, 나는 당신이 그 질문을했기 때문에 기쁘다. 수학적으로, 아이가 불투명도 1로 다시 돌아올 것이라고 생각할 것입니다. 그러나 CSSopacity:2;잘못되었습니다 . opacity특성 값은 포함 범위 [0,1] 내에 있어야합니다 .
chharvey

답변:


2276

반투명 PNG 이미지를 사용하거나 CSS 3을 사용하십시오.

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

다음은 css3.info, Opacity, RGBA 및 타협 (2007-06-03) 의 기사입니다 .


<p style="background-color: rgba(255, 0, 0, 0.5);">
  <span>Hello, World!</span>
</p>


86
16 진수 색상 으로이 작업을 수행 할 수 있습니까? #fff처럼?
grm

35
@grm : W3C는 #RRGGBBAA 16 진수 코드 형식을 도입하는 것을 고려했지만 여러 가지 이유로하지 않기로 결정했습니다.
outis

95
@grm with SASS 다음 을 수행 할 수 있습니다.background-color: rgba(#000, .5);
Jürgen Paul

2
투명성을 사용하려는 경우 RGBA를 지원하는 모든 브라우저 는 훨씬 직관적 인 색상 매핑 인 HSLA도 지원합니다 . IE8은이를 지원하지 않는 유일한 의사 의미있는 브라우저이므로 계속해서 모든 색상에 대해 HSL (A)을 사용하지 마십시오.
iono

19
@outis : 좋은 소식입니다. #RRGGBBAA는 현재 색상 수준 4 입니다.
BoltClock

476

Firefox 3 및 Safari 3에서는 Georg Schölly 와 같이 RGBA를 사용할 수 있습니다 .

약간의 요령은 그라디언트 필터를 사용하여 Internet Explorer에서도 사용할 수 있다는 것입니다.

background-color: rgba(0, 255, 0, 0.5);
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#7F00FF00', EndColorStr='#7F00FF00');

첫 번째 16 진수는 색상의 알파 값을 정의합니다.

모든 브라우저의 완벽한 솔루션 :

.alpha60 {
    /* Fallback for web browsers that doesn't support RGBa */
    background: rgb(0, 0, 0) transparent;
    /* RGBa with 0.6 opacity */
    background: rgba(0, 0, 0, 0.6);
    /* For IE 5.5 - 7*/
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
    /* For IE 8*/
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";
}

이것은 RGBa 및 필터를 통해 자식 요소에 영향을 미치지 않고 CSS 배경 투명성에서 비롯된 것입니다. 입니다.

스크린 샷 결과 증명 :

다음 코드를 사용하는 경우입니다.

 <head>
     <meta http-equiv="X-UA-Compatible" content="IE=edge" >
    <title>An XHTML 1.0 Strict standard template</title>
     <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <style type="text/css" media="all">
         .transparent-background-with-text-and-images-on-top {
             background: rgb(0, 0, 0) transparent;   /* Fallback for web browsers that doesn't support RGBa */
            background: rgba(0, 0, 0, 0.6);   /* RGBa with 0.6 opacity */
             filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);  /* For IE 5.5 - 7*/
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";  /* For IE 8*/
         }
     </style>
 </head>

 <body>
     <div class="transparent-background-with-text-and-images-on-top">
         <p>Here some content (text AND images) "on top of the transparent background"</p>
        <img src="http://i.imgur.com/LnnghmF.gif">
     </div>
 </body>
 </html>

크롬 -33 IE11 IE9 IE8


1
그러나 IE8에는 없습니다. 새로운 -ms-filter 구문을 시도했지만 여전히 작동하지 않습니다. (
philfreo

5
이 게시물은 IE8에서이를 수행하는 방법을 보여줍니다. robertnyman.com/2010/01/11/…
Slapout

14
@philfreo : Sebastian 코드의 첫 번째 비트를 "background : rgb (0, 0, 0) transparent;"로 변경하면 이제 IE8에서 작동합니다. 이것은 꽤 오랫동안 나를 괴롭 혔습니다!
Tom Chantler

filter : progid IE 9에서 잘 작동합니다. 색상은 투명도, 빨강, 녹색, 파랑-두 자리 16 진수 값입니다.
Thorsten Niehues

1
@AdrienBe-귀하의 지시에 따라 답변을 편집했습니다. 불행히도 나는이 특정 Q & A의 헤드 스페이스에서 한동안 벗어 났으므로 현재이 대화에 추가 할 수 없습니다.
user664833 2019

108

이것은 CSS 3을 사용하지 않고 얻을 수있는 최상의 솔루션이며 Firefox, Chrome 및 Internet Explorer에서 볼 수있는 한 훌륭하게 작동합니다.

컨테이너 div와 두 명의 자녀를 div같은 레벨에 하나씩, 컨텐츠와 배경에 각각 하나씩 배치하십시오. CSS를 사용하면 내용에 맞게 배경의 크기를 자동으로 조정하고 z- 색인을 사용하여 배경을 실제로 뒷면에 넣습니다.

.container {
  position: relative;
}
.content {
  position: relative;
  color: White;
  z-index: 5;
}
.background {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  background-color: Black;
  z-index: 1;
  /* These three lines are for transparency in all browsers. */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: alpha(opacity=50);
  opacity: .5;
}
<div class="container">
  <div class="content">
    Here is the content.
    <br/>Background should grow to fit.
  </div>
  <div class="background"></div>
</div>


19
"텍스트와 배경을 서로 분리하지 않고 두 요소로 분리하지 않고 말했다." 어쨌든 이것은 좋은 수정이며 유용하지만 어떤 경우에는 불투명 요소가 반투명 요소의 하위 요소가되기를 원할 수 있습니다.
Rolf

나는 다른 SO 질문에 거의 똑같이 대답했지만 jsfiddle 및 스크린 샷 증명 (IE7 +)을 추가했습니다. 관심있는 경우 여기를 참조하십시오 stackoverflow.com/a/21984546/759452
Adrien Be

@Gorkem Pacaci : 만들기 확실히 불투명도 속성이 "정말"크로스 브라우저, 당신은 CSSTRICKS의에서이 코드 사용할 수 있습니다 css-tricks.com/snippets/css/cross-browser-opacity을
아드 리언은 수

의사 요소를 사용 :after하여 추가 마크 업을 피하고 피하십시오.
AndFisher

64

단순한 반투명 배경색의 경우 위의 솔루션 (CSS3 또는 bg 이미지)이 가장 적합합니다. 그러나보다 멋진 작업 (예 : 애니메이션, 여러 배경 등)을 원하거나 CSS3에 의존하고 싶지 않은 경우 "창 기술"을 사용해 볼 수 있습니다.

.pane, .pane > .back, .pane > .cont { display: block; }

.pane {
    position: relative;
}

.pane > .back {
    position: absolute;
    width: 100%; height: 100%;
    top: auto; bottom: auto; left: auto; right: auto;
}

.pane > .cont {
    position: relative;
    z-index: 10;
}
<p class="pane">
    <span class="back" style="background-color: green; opacity: 0.6;"></span>
    <span class="cont" style="color: white;">Hello world</span>
</p>

이 기술은 외부 구획 요소 내부에 두 개의 "계층"을 사용하여 작동합니다.

  • 내용의 흐름에 영향을 미치지 않고 창 요소의 크기에 맞는 하나 ( "뒤로")
  • 내용을 포함하고 창의 크기를 결정하는 데 도움이되는 하나 ( "계속").

position: relative창에서 중요하다; 창 크기에 맞게 레이어를 알려줍니다. ( <p>태그가 절대적이어야 하는 경우 , 분할 창을 a에서 a <p>로 변경하고 <span>모든 것을 절대 위치 <p>태그로 감싸십시오 .)

이 기술이 위에 나열된 유사한 기술에 비해 가장 큰 장점은 분할 창이 지정된 크기 일 필요는 없다는 것입니다. 위에서 코딩 한 것처럼 전체 너비 (일반 블록 요소 레이아웃)에 적합하고 내용만큼만 적합합니다. 바깥 쪽 창 요소는 직사각형 인 한 원하는대로 크기를 조정할 수 있습니다 (즉, 인라인 블록이 작동하고 일반 오래된 인라인은 작동하지 않음).

또한 배경에 많은 자유를줍니다. 실제로 back 요소에 무엇이든 넣을 수 있으며 내용의 흐름에 영향을 미치지 않습니다 (여러 개의 전체 크기 하위 레이어를 원한다면 위치, 절대, 너비 / 높이 : 100 %, 위 / 아래 / 왼쪽 / 오른쪽 : 자동).

배경 삽입 조정 (위 / 아래 / 왼쪽 / 오른쪽) 및 / 또는 배경 고정 (왼쪽 / 오른쪽 또는 위 / 아래 쌍 중 하나를 제거하여)을 허용하는 한 가지 변형은 다음 CSS를 대신 사용하는 것입니다.

.pane > .back {
    position: absolute;
    width: auto; height: auto;
    top: 0px; bottom: 0px; left: 0px; right: 0px;
}

작성된 바와 같이 이것은 Firefox, Safari, Chrome, IE8 + 및 Opera에서 작동하지만 IE7 및 IE6에는 추가 CSS 및 표현식, IIRC가 필요하지만 마지막으로 확인했을 때 두 번째 CSS 변형은 Opera에서 작동하지 않습니다.

주의 사항 :

  • 연속 레이어 내부의 플로팅 요소는 포함되지 않습니다. 당신은 그들이 정리 또는 다른 방법으로 포함되어 있는지 확인해야합니다, 또는 그들은 바닥에서 미끄러 져 나옵니다.
  • 여백은 pane 요소로 이동하고 pading은 cont 요소로 이동합니다. 반대편 (콘트의 여백 또는 패인의 여백)을 사용하지 마십시오. 그렇지 않으면 페이지가 항상 브라우저 창보다 약간 넓은 것과 같은 이상한 점이 발견됩니다.
  • 언급했듯이 모든 것은 블록 또는 인라인 블록이어야합니다. CSS를 단순화 하기 위해 <div>s 대신 을 사용 <span>하십시오.

이 기술의 유연성을 display: inline-block, auto및 특정 widths / min-heights 와 함께 사용하여 보여주는보다 풍부한 데모

.pane, .pane > .back, .pane > .cont { display: block; }
.pane {
	position: relative;
	width: 175px; min-height: 100px;
	margin: 8px;
}

.pane > .back {
	position: absolute; z-index: 1;
	width: auto; height: auto;
	top: 8px; bottom: 8px; left: 8px; right: 8px;
}

.pane > .cont {
	position: relative; z-index: 10;
}

.debug_red { background: rgba(255, 0, 0, 0.5); border: 1px solid rgba(255, 0, 0, 0.75); }
.debug_green { background: rgba(0, 255, 0, 0.5); border: 1px solid rgba(0, 255, 0, 0.75); }
.debug_blue { background: rgba(0, 0, 255, 0.5); border: 1px solid rgba(0, 0, 255, 0.75); }
<p class="pane debug_blue" style="float: left;">
	<span class="back debug_green"></span>
	<span class="cont debug_red">
		Pane content.<br/>
		Pane content.
	</span>
</p>
<p class="pane debug_blue" style="float: left;">
	<span class="back debug_green"></span>
	<span class="cont debug_red">
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.<br/>
		Pane content.
	</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto;">
	<span class="back debug_green"></span>
	<span class="cont debug_red">
		Pane content.<br/>
		Pane content.
	</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto; min-height: auto;">
	<span class="back debug_green"></span>
	<span class="cont debug_red">
		Pane content.<br/>
		Pane content.
	</span>
</p>

다음 은이 기술을 광범위하게 사용하는 데모 입니다.

christmas-card-2009.slippyd.com 스크린 샷


어떤 상황에서 CSS3을 사용하고 싶지 않습니까?
Burkely91

@ Burkely91 CSS3에서 할 수 있다면 절대로 사용하십시오. 그러나 CSS3 배경은 모든 유형의 내용이나 전체 레이아웃 융통성을 지원하지는 않습니다. 위의 엔벨로프 / 레터 예제는 독립적으로 반복되는 가장자리와 중앙 채우기 때문에 CSS3로 풀기가 어렵습니다. 또한이 답변은 원래 CSS3 지원이 널리 보급되기 전에 5 년 전에 작성된 것임을 명심하십시오.
Slipp D. Thompson

2
@Igor Ivancha 변경 사항을 롤백했습니다. 죄송합니다. 들여 쓰기를 선호하는 양식 (탭)에서 귀하의 공간 (2 칸)으로 변경하는 것은 좋지 않습니다. 일상적인 코드 프로젝트에서 2 칸 들여 쓰기를 사용해야 할 충분한 이유가있을 수 있지만, 웹에서 프리젠 테이션을하기 위해서는 탭이 확실한 승리라고 생각합니다. 들여 쓰기가 깊을수록 레벨을 쉽게 식별 할 수 있습니다 탭을 공백으로 안정적으로 쉽게 변환 할 수 있으므로 모든 독자에게보다 호환되는 형식입니다.
Slipp D. Thompson

@Igor Ivancha 또한 모든 CSS 선택기와 속성을 자체 줄에 배치하는 아름답게 코드를 실행 한 것으로 보입니다. 내 예를 의도적으로 줄 바꿈 작성하고 reader- 예를 들어, 가장에 의해 함께 이해되어야한다 논리적 그룹 조각 간격했다 width:& height:그들은 같은 구조의 유형과 더 나은 2 차원 형상으로 이해하지이기 때문에 회선을 공유하는 속성 1 차원 구속 조건 쌍 또한, 일부 라인에는 반복되는 내용이 표시되기 때문에 상당한 양이 포장되어 있습니다.
Slipp D. Thompson

@Igor Ivancha 논리적 구성, 그룹화 및 스타일링은 모든 종류의 글쓰기와 마찬가지로 깔끔하고 이해하기 쉬운 코드를 작성하는 데 매우 중요합니다. 변경 사항은 누군가 게시물에 들어가서 모든 단락 나누기를 제거하고 각 문장마다 강제 줄 바꿈을하는 것과 같습니다. 자신의 일에서 그토록 독창적 인 사람이되고 싶다면 자유롭게 할 수 있습니다. 그러나 다른 사람들의 작업에서 의미 적 특성과 표현을 바보로 쓰지 마십시오.
Slipp D. Thompson

58

반투명을 사용하는 것이 좋습니다 .png .

Photoshop을 열고 2x2픽셀 이미지를 만들면 ( 선택 1x1하면 Internet Explorer 버그가 발생할 수 있습니다! ) 녹색으로 채우고 "레이어 탭"의 불투명도를 60 %로 설정하십시오. 그런 다음 저장하고 배경 이미지로 만드십시오.

<p style="background: url(green.png);">any text</p>

물론 멋진 Internet Explorer 6을 제외하고는 멋지게 작동합니다 . 더 나은 수정 사항이 있지만 다음은 빠른 해킹입니다.

p {
    _filter: expression((runtimeStyle.backgroundImage != 'none') ? runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+currentStyle.backgroundImage.split('\"')[1]+', sizingMethod=scale)' : runtimeStyle.filter,runtimeStyle.backgroundImage = 'none');
}

54

마크 업을 최소화하는 트릭이 있습니다. 의사 요소 를 배경으로 사용 하면 기본 요소와 그 자식에 영향을주지 않고 불투명도를 설정할 수 있습니다.

데모

산출:

의사 요소가있는 배경 불투명도

관련 코드 :

p {
  position: relative;
}
p:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #fff;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  opacity: .6;
  z-index: -1;
}
/*** The following is just for demo styles  ***/

body {
  background: url('http://i.imgur.com/k8BtMvj.jpg') no-repeat;
  background-size: cover;
}
p {
  width: 50%;
  padding: 1em;
  margin: 10% auto;
  font-family: arial, serif;
  color: #000;
}
img {
  display: block;
  max-width: 90%;
  margin: .6em auto;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a ligula ut nunc dignissim molestie.
  <img src="http://i.imgur.com/hPLqUtN.jpg" alt="" />
</p>

브라우저 지원은 Internet Explorer 8 이상입니다.


23

가장 쉬운 방법은 반투명 배경 PNG 이미지 를 사용하는 것 입니다.

필요한 경우 JavaScript를 사용하여 Internet Explorer 6 에서 작동하도록 할 수 있습니다 .

Internet Explorer 6의 투명 PNG에 설명 된 방법을 사용합니다 .

그 외에는 두 개의 나란히있는 형제 요소를 사용하여 가짜로 만들 수 있습니다. 하나는 반투명 한 다음 다른 하나는 상단에 절대로 놓습니다 .


2
필요한 것은 단순한 배경색이며,이 색으로 어떤 PNG 크기를 제안할까요? 1x1은 렌더링이 많은 작업을하게하는데, 픽셀이 너무 많으면이 PNG가 꽤 커집니다 (압축 된 이후에는 파일 크기가 좋아야하지만 여전히 렌더링하려면 압축을 풀어야합니다) ...
Stijn Sanders

3
30px x 30px와 같은 것을 권장합니다 .1x1보다 반복 렌더링 할 때 메모리를 덜 사용하지만 대역폭 사용을 최소화하기에 여전히 작습니다.
Chris

21

이 방법을 사용하면 단색뿐만 아니라 배경에 이미지를 가질 수 있으며 테두리와 같은 다른 속성에 투명성을 갖도록 사용할 수 있습니다. 투명한 PNG 이미지가 필요하지 않습니다.

CSS에서 :before(또는 :after)를 사용 하고 불투명도 값을 지정하여 요소를 원래 불투명도로 유지하십시오. 따라서 : before를 사용하여 가짜 요소를 만들고 원하는 투명한 배경 (또는 테두리)을 제공하고 불투명하게 유지하려는 내용 뒤로 이동하십시오.z-index .

예제 ( 바이올린 ) ( DIVwith 클래스 dad는 컨텍스트와 색상 대비를 제공하는 것이므로이 추가 요소는 실제로 필요하지 않으며 빨간색 사각형은 조금 아래로 이동하고 배경을 뒤에 보이게합니다. fancyBg요소) :

<div class="dad">
    <div class="fancyBg">
        Test text that should have solid text color lets see if we can manage it without extra elements
    </div>
</div>

이 CSS와 함께 :

.dad {
    background: lime; border: 1px double black; margin: 1ex 2ex;
    padding: 0.5ex; position: relative; -k-z-index: 5;
}
.fancyBg {
    border: 1px dashed black; position: relative; color: white; font-weight: bold;
    z-index: 0; /*background: black;*/
}
.fancyBg:before {content:'-'; display: block;
    position: absolute; background: red; opacity: .5;
    top: 2ex; right: -2ex; bottom: -2ex; left: 2ex;
    /*top: 0; right: 0; bottom: 0; left: 0;*/
    z-index: -1;
}

이 경우 .fancyBg:before투명도를 가지려는 CSS 속성이 있습니다 (이 예에서는 빨간색 배경이지만 이미지 또는 테두리 일 수 있음). 그것은 뒤로 이동하는 절대 위치에 .fancyBg있습니다 (값을 0으로 설정하거나 필요에 더 적합한 것을 사용하십시오).


17

문제는 텍스트가 실제로있다 귀하의 예제에서 전체 불투명도를. p태그 내부가 완전히 불투명 하지만p 태그는 반투명합니다.

CSS에서 인식하지 않고 반투명 PNG 배경 이미지를 추가하거나 텍스트와 div를 두 요소로 분리하고 텍스트를 상자 위로 이동할 수 있습니다 (예 : 음수 여백).

그렇지 않으면 불가능합니다.

Chris가 언급 한 것처럼 투명성이있는 PNG 파일을 사용하는 경우 JavaScript 해결 방법을 사용하여 성가신 Internet Explorer에서 작동하도록해야합니다 ...


15

거의 모든 대답은 디자이너가 단색 배경을 원한다고 가정합니다. 디자이너가 실제로 사진을 배경으로 원한다면 현재 유일한 유일한 해결책은 다른 곳에서 언급 한 jQuery Transify 플러그인과 같은 JavaScript입니다. 입니다.

우리가해야 할 일은 CSS 워킹 그룹 토론에 참여하여 배경 불투명도 속성을 제공하는 것입니다! 다중 배경 기능과 함께 작동해야합니다.


14

내가 이것을하는 방법은 다음과 같습니다 (최적의 것은 아니지만 작동합니다).

div반투명하게하려는 것을 만듭니다 . 수업 / 아이디를 제공하십시오. 비워 두세요 , 닫습니다. 높이와 너비를 설정하십시오 (예 : 300 x 300 픽셀). 불투명도 0.5 또는 원하는 색상과 배경색을 지정하십시오.

그런 다음 해당 div 바로 아래 에 다른 클래스 / ID로 다른 div를 만듭니다. 텍스트를 넣을 단락을 그 안에 만듭니다. 주고받는 div위치 : 상대와 상단 : -295px(있다고 제외 295 픽셀). 좋은 측정을 위해 z- 색인을 2로 지정하고 불투명도가 1인지 확인하십시오. 원하는대로 단락의 스타일을 지정하십시오.div 도록하십시오.

그게 다야. 코드는 다음과 같습니다.

.trans {
  opacity: 0.5;
  height: 300px;
  width: 300px;
  background-color: orange;
}
.trans2 {
  opacity: 1;
  position: relative;
  top: -295px;
}
.trans2 p {
  width: 295px;
  color: black;
  font-weight: bold;
}
<body>
  <div class="trans">
  </div>
  <div class="trans2">
    <p>
      text text text
    </p>
  </div>
</body>

이것은 Safari 2.x에서 작동하지만 Internet Explorer에 대해서는 잘 모릅니다.


여분의 요소는 피하고 대신 같은 의사 요소를 사용할 수 있습니다 :before또는:after
frozenkoi

12

다음은 모든 것을 처리하는 jQuery 플러그인입니다. Transify ( Transify-투명도 / 불투명성을 요소의 배경에 쉽게 적용하는 jQuery 플러그인 ).

나는 때때로이 문제를 겪고 있었기 때문에 인생을 훨씬 편하게 해줄 무언가를 쓰기로 결정했습니다. 이 스크립트는 2KB 미만이며 작동하려면 한 줄의 코드 만 필요하며 원하는 경우 배경의 불투명도 애니메이션 처리도 처리합니다.


11

얼마 전에, 나는 CSS 에 대한 크로스 브라우저 배경 투명도 에서 이것에 대해 썼습니다 .

기괴하게 Internet Explorer 6을 사용하면 배경을 투명하게 만들고 텍스트를 완전히 불투명하게 유지할 수 있습니다. 다른 브라우저의 경우 투명 PNG 파일을 사용하는 것이 좋습니다.



9

Photoshop 사람 이라면 다음 을 사용할 수도 있습니다.

 #some-element {
  background-color: hsla(170, 50%, 45%, 0.9); // **0.9 is the opacity range from 0 - 1**
 }

또는:

#some-element {
  background-color: rgba(170, 190, 45, 0.9); // **0.9 is the opacity range from 0 - 1**
}

8

요소의 배경을 반투명하게 만들지 만 요소의 내용 (텍스트 및 이미지)을 불투명하게하려면 해당 이미지에 대한 CSS 코드를 작성해야 opacity하며 최소값으로 불리는 하나의 속성을 추가해야 합니다.

예를 들어

.image {
   position: relative;
   background-color: cyan;
   opacity: 0.7;
}

// 값이 작을수록 투명 해 지거나 투명성이 떨어집니다.


이것은 최신 브라우저에서 수행하는 한 가지 방법입니다. 대체로 rgba 값과 결합합니다
Tahir Khalid

네 맞습니다. 이것은 최신 브라우저를 처리하는 방법 중 하나입니다.
Pushp Singh

"값이 적을수록 투명성이 떨어질 것" 이란 무엇입니까 (이해할 수없는 것 같습니까)? ( 해당되는 경우 주석이 아닌 답변편집하여 응답 하십시오.)
Peter Mortensen

7

CSS 3는 문제를 쉽게 해결할 수 있습니다. 사용하다:

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

여기서 rgba빨강, 녹색, 파랑 및 알파 값을 나타냅니다. 녹색 값은 255로 얻어지고 반투명도는 0.5 알파 값으로 얻어집니다.


이전 답변과 어떻게 다릅니 까?
Peter Mortensen


6

배경색 : rgba (255, 0, 0, 0.5); 위에서 언급했듯이 단순히 가장 좋은 대답입니다. 2013 년에도 CSS 3을 사용하는 것은 간단하지 않습니다. 반복 할 때마다 다양한 브라우저의 지원 수준이 변경되기 때문입니다.

background-color모든 주요 브라우저 (CSS 3이 아닌)에서 지원 되지만 [1] 알파 투명도는 까다로울 수 있습니다. 특히 버전 9 이전의 Internet Explorer 및 버전 5.1 이전의 Safari에서는 테두리 색이 있습니다. [2]

Compass 또는 SASS 와 같은 것을 사용하면 프로덕션 및 크로스 플랫폼 호환성에 실제로 도움이됩니다.


[1] W3Schools : CSS 배경색 속성

[2] Norman의 블로그 : 브라우저 지원 점검 목록 CSS3 (2012 년 10 월)


4

그라데이션 구문을 사용하여 Internet Explorer 8 에서이 문제를 해결할 수 있습니다 . 색상 형식은 ARGB입니다. 당신이 사용하는 경우 말대꾸를 전처리 당신은 내장 함수 "즉-진수-STR ()"를 사용하여 색상을 변환 할 수 있습니다.

background: rgba(0,0,0, 0.5);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#80000000')";

4

당신은 순수 사용할 수있는 CSS 3 : rgba(red, green, blue, alpha)여기서alpha 원하는 투명도는 입니까? JavaScript 또는 jQuery가 필요하지 않습니다.

예를 들면 다음과 같습니다.

#item-you-want-to-style{
    background:rgba(192.233, 33, 0.5)
}

3
<div align="center" style="width:100%;height:100%;background:white;opacity:0.5;position:absolute;z-index:1001">
    <img id="search_img" style="margin-top:20%;" src="../resources/images/loading_small.gif">
</div>

http://jsfiddle.net/x2ukko7u/ ?


2

rgba color code아래 주어진이 예제와 같은 CSS 를 사용하여 이를 수행 할 수 있습니다 .

.imgbox img{
  height: 100px;
  width: 200px;
  position: relative;
}
.overlay{
  background: rgba(74, 19, 61, 0.4);
  color: #FFF;
  text-shadow: 0px 2px 5px #000079;
  height: 100px;
  width: 300px;
  position: absolute;
  top: 10%;
  left: 25%;
  padding: 25px;
}
<div class"imgbox">
<img src="http://www.bhmpics.com/wallpapers/little_pony_art-800x480.jpg">
  <div class="overlay">
    <p>This is Simple Text.</p>
  </div>
</div>


1

동일한 div의 이미지 위에 오버레이를 배치하는 더 쉬운 솔루션이 있습니다. 이 도구를 올바르게 사용하는 것은 아닙니다. 그러나 CSS를 사용하여 오버레이를 만드는 매력처럼 작동합니다.

다음과 같이 삽입 그림자를 사용하십시오.

box-shadow: inset 0 0 0 1000px rgba(255, 255, 255, 0.9);

그게 다야 :)


1

CSS 에서 RGBA (red, green, blue, alpha) 를 사용할 수 있습니다 . 이 같은:

따라서 단순히 이와 같은 작업을 수행하면 귀하의 경우에 효과가 있습니다.

p {
  position: absolute;
  background-color: rgba(0, 255, 0, 0.6);
}

span {
  color: white;
}

1

필자의 관점에 따라 불투명도와 배경색을 사용하는 가장 좋은 방법은 다음과 같습니다. 이것을 사용하면 테스트 색상, 테두리 등과 같은 다른 요소의 불투명도를 잃지 않습니다.

background-color: rgba(71, 158, 0, 0.8);

불투명도로 배경색 사용

background-color: rgba(R, G, B, Opacity);

여기에 이미지 설명을 입력하십시오


0

나는 보통이 수업을 업무에 사용합니다. 꽤 좋습니다.

.transparent {
  filter: alpha(opacity=50); /* Internet Explorer */
  -khtml-opacity: 0.5;       /* KHTML and old Safari */
  -moz-opacity: 0.5;         /* Firefox and Netscape */
  opacity: 0.5;              /* Firefox, Safari, and Opera */
}


0

형식을 사용할 때 나를 위해 일한 것이 나를 위해 일한 #AARRGGBB것이 었습니다 #1C00ff00. 시도해보십시오. 일부에게는 효과가 있지만 다른 사람에게는 효과가 없다는 것을 알았습니다. CSS에서 사용하고 있습니다.


0

16 진수 값에 추가 된 불투명도 값을 사용할 수 있습니다.

background-color: #11ffeeaa;

이 예 aa에서는 불투명도입니다. 불투명도는 00투명 함을 ff의미하고 단색을 의미합니다.

불투명도는 선택 사항이므로 항상 16 진수 값을 사용할 수 있습니다.

background-color: #11ffee;

다음과 같이 이전 방법을 사용할 수도 있습니다 rgba().

background-color: rgba(117, 190, 218, 0.5);

background배경에 이미지 나 그라디언트와 같은 다른 스타일이 없는지 확인 하려면 속기 :

background: #11ffeeaa;

Mozilla 사양 ( https://developer.mozilla.org/en-US/docs/Web/CSS/background-color )에서 :

/* Keyword values */
background-color: red;
background-color: indigo;

/* Hexadecimal value */
background-color: #bbff00;    /* Fully opaque */
background-color: #bf0;       /* Fully opaque shorthand */
background-color: #11ffee00;  /* Fully transparent */
background-color: #1fe0;      /* Fully transparent shorthand  */
background-color: #11ffeeff;  /* Fully opaque */
background-color: #1fef;      /* Fully opaque shorthand  */

/* RGB value */
background-color: rgb(255, 255, 128);        /* Fully opaque */
background-color: rgba(117, 190, 218, 0.5);  /* 50% transparent */

/* HSL value */
background-color: hsl(50, 33%, 25%);         /* Fully opaque */
background-color: hsla(50, 33%, 25%, 0.75);  /* 75% transparent */

/* Special keyword values */
background-color: currentcolor;
background-color: transparent;

/* Global values */
background-color: inherit;
background-color: initial;
background-color: unset;

-2

RGB의 색상 코드 (63, 245, 0)와 같이 불투명 한 RGB 색상을 사용하고 불투명도 (63, 245, 0, 0.5)를 추가하고 RGB를 RGBA로 바꿀 수도 있습니다. A불투명도에 사용됩니다.

div {
  background: rgba(63, 245, 0, 0.5);
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.