CSS를 사용한 내부 텍스트 그림자


107

저는 현재 CSS3를 가지고 놀면서 다음과 같은 텍스트 효과를 얻으려고 노력하고 있습니다 (검은 색의 흐릿한 내부 그림자).

그러나 텍스트 내부에 텍스트 그림자를 만드는 방법을 찾을 수 없습니다 . box-shadow 요소가 다음과 같이 내부에 그림자를 렌더링 할 수 있기 때문에 여전히 가능한지 궁금합니다.

box-shadow: inset 0px -5px 10px 0px rgba(0, 0, 0, 0.5);

어떤 아이디어?


3
당신은 몇 가지 착시에 갈 준비를하지 않는 경우 이에 대한 무응답 ...
Aaria 카터 - 위어

답변:


105

여기 내가 사용 발견 된 약간의 트릭 :before:after의사 요소 :

.depth {
    color: black;
    position: relative;
}
.depth:before, .depth:after {
    content: attr(title);
    color: rgba(255,255,255,.1);
    position: absolute;
}
.depth:before { top: 1px; left: 1px }
.depth:after  { top: 2px; left: 2px }

제목 속성은 콘텐츠와 동일해야합니다. 데모 : http://dabblet.com/gist/1609945


1
좋은! 크리에이티브 :) 내가 원하는만큼 포토샵 같은 느낌은 아직 없습니다. 상단 / 왼쪽 값을 각각 5px로 설정하여 5px 내부 그림자 오프셋을 얻을 수 있지만 문자가 다른 쪽 끝에서 새어 나옵니다. 1px 및 2px에서는 좋지만 더 높은 값에서는 이상합니다.
ericteubert

1
예, 바닥에 약간의 흰색 힌트 만 있으면 좋아 보입니다. 2px를 초과하면 모양이 손상됩니다.
Web_Designer

1
대박! 이것을 사용하여 불투명도를 .9로 펌핑하여 흰색 텍스트를 만들거나 불투명도를 .1로 유지하고 색상을 반전하여 경 사진 가장자리를 만들 수도 있습니다. (+1)
JohnB

훌륭한 솔루션입니다. 그러나 철 텍스트 그라데이션와 함께 실패 (나쁘지 우리가 큰 텍스트 효과 때문에 몇 년 동안 CSS4 기다리거나 할 것 같아요..
마이클 Trouw

크롬에서는 멋지다. JS와 네임 스페이스 클래스를 사용하지 않으면 크롬에 적용되지 않는 FF에 대한 대체 대체 작업을 수행하기 위해 고군분투하고있다. 이견있는 사람. PS leathr 효과 bg에서 아름답게 작동하며 브랜딩 스탬프처럼 보입니다.
Will Hancock

43

텍스트 그림자를 사용하여 수행 할 수 있어야합니다. 다음과 같이 생각해보십시오.

.inner_text_shadow
{
    text-shadow: 1px 1px white, -1px -1px #444;
}

여기에 예가 있습니다 : http://jsfiddle.net/ekDNq/


8
흠, 그래. 시각적 효과는 이러한 매개 변수와 유사하지만 여전히 글꼴 뒤에있는 그림자입니다. 내부가 아닙니다. 내 예에서는 삽입 된 그림자를 흐리게 처리하여 여기 효과를 파괴합니다. 그래서 ... 최고의 솔루션이지만 여전히 시각적 인 착각 해킹;)
ericteubert 2010

2
이렇게하면 글꼴이 더 뚱뚱해집니다. 중소 크기 글꼴의 경우 원하지 않을 수 있습니다.
Jonatan Littke 2013 년

20

최선의 시도는 다음과 같습니다.

    .inner_shadow {
    color:transparent;
    background-color:white;
    text-shadow: 0 0 20px rgba(198,28,39,0.8), 0 0 0 black;
    font-family:'ProclamateHeavy';  // Or whatever floats your boat
    font-size:150px;
    }
   
    <span class="inner_shadow">Inner Shadow</span>
   

문제는 가장자리에서 번지는 그림자를 자르는 방법입니다 !!! background-clip : text를 사용하여 웹킷을 시도했지만 웹킷이 배경 위에 그림자를 렌더링하므로 작동하지 않습니다.

CSS로 텍스트 마스크 만들기?

상단 마스크 레이어가 없으면 텍스트에 진정한 내부 그림자를 적용 할 수 없습니다.

아마도 누군가는 W3C가 background-clip : reverse-text를 추가하도록 권장해야 할 것입니다. 이것은 배경을 텍스트 안에 맞도록 자르는 대신 배경을 통해 마스크를 자르는 것입니다.

또는 배경의 일부로 텍스트 그림자를 렌더링하고 background-clip : 텍스트로 클립합니다.

나는 그 위에 동일한 텍스트 요소를 절대적으로 배치하려고 시도했지만 문제는 background-clip입니다. 텍스트는 텍스트 내부에 맞게 배경을 자르지 만 그 반대가 필요합니다.

나는 text-stroke : 20px white; 이 요소와 그 위에있는 요소 모두에서 텍스트 스트로크가 들어오고 나가는 것입니다.

대체 방법

현재 CSS에서 반전 된 텍스트 마스크를 만들 수있는 방법이 없으므로 SVG 또는 Canvas로 전환하여 효과를 얻기 위해 3 개의 레이어로 텍스트 대체 이미지를 만들 수 있습니다.

SVG는 XML의 하위 집합이므로 SVG 텍스트는 여전히 선택 및 검색이 가능하며 Canvas보다 적은 코드로 효과를 생성 할 수 있습니다.

SVG와 같은 레이어가 포함되어 있지 않기 때문에 Canvas로 이것을 달성하기가 더 어려울 것입니다.

SVG는 서버 측에서 생성하거나 브라우저에서 자바 스크립트 텍스트 대체 방법으로 생성 할 수 있습니다.

추가 자료 :

SVG 대 캔버스 :

http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/

SVG 텍스트로 클리핑 및 마스킹 :

http://www.w3.org/TR/SVG/text.html#TextElement


2
예를 들어 최선의 시도에 대한 자세한 설명 을 게시했습니다 . 확인 해봐!
Alba Mendez

1
이것의 예는 극단으로 취해졌다 .
Alba Mendez 2014

귀하의 예에는 외부 그림자가 있습니다
AlexKh

12

kendo451의 답변 에서 CSS에 대한 더 정확한 설명 .

멋진 해커 내부 그림자 환상을 얻을 수있는 또 다른 방법이 있습니다
. 간단한 세 단계로 설명하겠습니다. 다음 HTML이 있다고 가정합니다.

<h1>Get this</h1>

그리고이 CSS :

h1 {
  color: black;
  background-color: #cc8100;
}

좋은 슬로건이야

1 단계

텍스트를 투명하게 만드는 것으로 시작하겠습니다.

h1 {
  color: transparent;
  background-color: #cc8100;
}

상자 야

2 단계

이제 해당 배경 을 텍스트 모양으로 자릅니다 .

h1 {
  color: transparent;
  background-color: #cc8100;
  background-clip: text;
}

배경은 텍스트입니다!

3 단계

이제 마법 : 우리는 흐려 놓을 게 text-shadow될 것이다, 배경의 앞을 따라서 내부 그림자의 인상을주는!

h1 {
  color: transparent;
  background-color: #cc8100;
  background-clip: text;
  text-shadow: 0px 2px 5px #f9c800;
}

알았다!  예이!

최종 결과를 참조하십시오 .

단점?

  • Webkit에서만 작동합니다 (일 background-clip수 없음 text).
  • 여러 그림자? 생각조차 하지마.
  • 당신은 또한 외부 빛을 얻습니다.

"여러 개의 그림자? 생각조차하지 마십시오." 어때 text-shadow: 1px 1px 1px #000, 3px 3px 5px blue;?
Morpheus

@Morpheus 이 방법 의 단점 중 하나 는 텍스트에 여러 그림자를 적용 할 수 없다는 것입니다.
Alba Mendez

이 예제의 크기와 밝기로 인해 다른 사람을보기가 어렵습니다. 이것들을 코드 조각으로 옮길 수 있습니까? 감사!
Josh Habdas

12

우아한 예를 위치 지정 래퍼 또는 마크 업에 중복 콘텐츠에 대한 필요없이 :

:root {
  background: #f2f2f2;
}
h1 {
  background-color: #565656;
  font: bold 48px 'Futura';
  color: transparent;
  text-shadow: 0px 2px 3px rgba(255, 255, 255, 0.8);
  -webkit-background-clip: text;
  -moz-background-clip: text;
  background-clip: text;
}
<center>
  <h1>Text With Inner Shadow</h1>
</center>

어두운 배경에서도 잘 보입니다.

:root {
  --gunmetal-gray: #2a3439;
  background: var(--gunmetal-gray);
}

h1[itemprop="headline"] {
  font-family: 'Futura';
  font-size: 48px;
  padding-bottom: 0.35rem;
  font-variant-caps: all-small-caps;
  background-color: var(--gunmetal-gray);
  color: transparent;
  text-shadow: 0px 2px 3px rgba(255, 255, 255, 0.1);
  -webkit-background-clip: text;
  -moz-background-clip: text;
  background-clip: text;
  filter: brightness(3);
}
<center>
  <h1 itemprop="headline">Text With Inner Shadow</h1>
</center>

그리고 ME LINK 와 ME2 LINK


간단하고 마크 업을 조정할 필요가 없습니다. 훌륭한 일!
Josh Habdas

10

당신은 이것을 할 수 있습니다. 안타깝게도 텍스트 그림자에 삽입을 사용할 수있는 방법은 없지만 색상과 위치를 사용하여 가짜로 만들 수 있습니다. 블러를 바로 아래로 내리고 오른쪽 상단을 따라 그림자를 정렬합니다. 이와 같은 것이 트릭을 할 수 있습니다.

background-color:#D7CFBA;
color:#38373D;
font-weight:bold;
text-shadow:1px 1px 0 #FFFFFF;

...하지만 어떤 색상을 사용하는지에 대해 정말 신중해야합니다. 본질적으로 착시 현상이므로 모든 상황에서 작동하지는 않습니다. 또한 더 작은 글꼴 크기에서는보기가 좋지 않으므로이 점에도 유의하십시오.


내가 찾고있는 것이 아닙니다. 귀하의 제안의 효과는 흥미롭지 만 제가 게시 한 예와는 거리가 멀습니다.
ericteubert

그렇다면 CSS3가 아니라 대답이 없습니다. 도와 드릴 수 없어서 미안 해요.
hollsk

이 답변에background-clip 표시된 것처럼 삽입 그림자가 가능합니다 .
Josh Habdas

10

여러 개의 그림자 또는 이와 같은 멋진 것이 필요하지 않습니다. 음의 y 축에서 그림자를 오프셋하기 만하면됩니다.

밝은 배경의 어두운 텍스트 :

text-shadow: 0px -1px 0px rgba(0, 0, 0, .75);

배경이 어두운 경우 색상과 y 위치를 간단히 반전 할 수 있습니다.

text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.75);

rgba 값, 불투명도 및 블러를 사용하여 적절한 효과를 얻으십시오. 어떤 색상의 글꼴과 배경에 따라 달라지며 글꼴의 무게가 클수록 좋습니다.


3
여전히 착시 현상 일뿐 실제 내부 그림자는 없습니다.
ericteubert 2011

25
... 모든 그림자가 착시가 아닌가?
Charlie Schliesser

당신이있는 거 심술 @eteubert ... 정말 의미
제이미 Hutber에게

7

이 작은 보석을 시도해보십시오.

text-shadow:0 1px 1px rgba(255, 255, 255, 0.5);

나는 보통 "답이 없다"를 도전으로 받아 들인다


1
이렇게하면 글꼴 하단에 흰색 윤곽선이 생성되지만 검은 색 흐릿한 내부 그림자를 찾고있었습니다 .
ericteubert

1
이것은 특히 작은 텍스트를 음영 처리 할 때 가장 잘 작동했습니다. 필요한 경우 글꼴 색상에 맞게 RGB 값을 조정하는 것이 좋습니다.
Cory Schires 2011 년

6

제안 된 솔루션을 많이 보았지만 내가 바라던 솔루션은 없었습니다.

여기 이에 최선 해킹 색 배경과 상단 텍스트 그림자, 불투명도 다양한 마스크를 시뮬레이션과 같은 색깔, 투명, 그리고 두 번째 텍스트 그림자는 어두운 색상의 더 포화 버전입니다 실제로 원합니다 (HSLA로 매우 쉽게 수행 할 수 있음).

여기에 이미지 설명 입력

(btw, dupe 스레드의 OP를 기반으로 한 텍스트 및 스타일링 )


6

텍스트에 내부 그림자가 필요한 경우가 몇 가지 있었는데 다음이 잘 작동했습니다.

.inner {
    color: rgba(252, 195, 67, 0.8);
    font-size: 48px;
    text-shadow: 1px 2px 3px #fff, 0 0 0 #000;
}

이렇게하면 텍스트의 불투명도가 80 %로 설정되고 두 개의 그림자가 생성됩니다.

  • 첫 번째는 흰색 그림자 (텍스트가 흰색 배경에 있다고 가정)로 왼쪽에서 1px, 위쪽에서 2px, 흐릿한 3px입니다.
  • 두 번째는 첫 번째 그림자가 아닌 80 % 불투명도 텍스트를 통해 볼 수있는 검은 그림자입니다. 즉, 첫 번째 그림자가 옮겨진 곳 (왼쪽에서 1px, 위쪽에서 2px)에만 텍스트 문자 내부에서 볼 수 있습니다. 이 보이는 그림자의 흐림을 변경하려면 첫 번째 레이어 그림자의 흐림 매개 변수를 수정합니다.

주의 사항

  • 이는 100 % 불투명도를 유지하지 않고도 원하는 텍스트 색상을 얻을 수있는 경우에만 작동합니다.
  • 이것은 배경색이 단색 인 경우에만 작동합니다 (따라서 텍스트가 질감이있는 배경에있는 질문자의 특정 예에서는 작동하지 않습니다).



4

모두가 이것에 대한 답을 가지고있는 것 같습니다. @Web_Designer의 솔루션이 마음에 듭니다. 그러나 그렇게 복잡 할 필요는 없으며 찾고있는 흐릿한 내부 그림자를 얻을 수 있습니다.

http://dabblet.com/gist/3877605

.depth {
    display: block;
    padding: 50px;
    color: black;
    font: bold 7em Arial, sans-serif;
    position: relative;
 }

.depth:before {
    content: attr(title);
    color: transparent;
    position: absolute;
    text-shadow: 2px 2px 4px rgba(255,255,255,0.3);
}


3

:before :afterweb_designer 의 기술을 바탕으로 다음과 같이 외모에 더 가까운 것이 있습니다.

먼저 텍스트를 내부 그림자의 색상으로 만듭니다 (OP의 경우 검은 색).

이제 : after psuedo 클래스를 사용하여 원본 텍스트의 투명한 복제본을 만들고 바로 위에 배치합니다. 오프셋없이 일반 텍스트 그림자를 지정하십시오. 그림자에 원본 텍스트 색상을 할당하고 필요에 따라 알파를 조정합니다.

http://dabblet.com/gist/2499892

PS 에서처럼 그림자의 확산 등을 완벽하게 제어 할 수는 없지만 더 작은 블러 값의 경우 상당히 통과 할 수 있습니다. 그림자는 텍스트의 경계를지나므로 대비가 높은 배경과 전경이있는 환경에서 작업하는 경우 분명합니다. 대비가 낮은 항목, 특히 동일한 색조의 항목의 경우 너무 눈에 띄지 않습니다. 예를 들어, 저는이 기술을 사용하여 금속 배경에 매우 멋진 에칭 텍스트를 만들 수있었습니다.


3

다음은 background-clip CSS3 속성을 사용하는 TRUE 삽입 텍스트 그림자에 대한 훌륭한 솔루션입니다.

.insetText {
    background-color: #666666;
    -webkit-background-clip: text;
    -moz-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: rgba(255,255,255,0.5) 0px 3px 3px;
}

그 링크는 이제 끊어진 것 같습니다.
닉 화이트

웹킷에서는 멋져 보이지만 Firefox 18에서는 여전히 사용하지 않습니다.
gmeben

이것은 지원이 제한적일 수 있지만 실제로 삽입되어 있기 때문에 나는 이것을 좋아합니다.
Julian K

2

여기에서 몇 가지 아이디어를 살펴본 후 생각해 낸 것이 있습니다. 주요 아이디어는 텍스트의 색상이 두 그림자와 혼합된다는 것입니다. 그리고 이것이 회색 배경에서 사용되고 있다는 점에 유의하십시오 (그렇지 않으면 흰색이 잘 나타나지 않음).

.inset {
    color: rgba(0,0,0, 0.6);
    text-shadow: 1px 1px 1px #fff, 0 0 1px rgba(0,0,0,0.6);
}

1

삽입 된 텍스트 그림자에 대해이 예제를 사용해보십시오. 다음은 HTML입니다.

<h1 class="inset-text-shadow">Inset text shadow trick</h1>

CSS

body {
    background: #f8f8f8;
}
h1 {
    font-family: Helvetica, Arial, sans-serif;
    font-weight: bold;
    font-size: 6em;
    line-height: 1em;
}
.inset-text-shadow {
    /* Shadows are visible under slightly transparent text color */
    color: rgba(0,0,0,0.6);
    text-shadow: 2px 8px 6px rgba(0,0,0,0.2), 0px -5px 35px rgba(255,255,255,0.3);

}

Demo on Jsfiddle


0
text-shadow: 4px 4px 2px rgba(150, 150, 150, 1);

상자 그림자 :

-webkit-box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);
-moz-box-shadow:    7px 7px 5px rgba(50, 50, 50, 0.75);
box-shadow:         7px 7px 5px rgba(50, 50, 50, 0.75);

온라인 텍스트 및 상자 그림자를 볼 수 있습니다. 온라인 텍스트와 상자 그림자

더 많은 예제를 보려면이 주소로 이동하십시오. 더 많은 예제 코드 freeclup


0

이것을 달성하는 훨씬 더 간단한 방법이 있습니다

.inner{color: red; text-shadow: 0 -1px 0 #666;} // #666 is the color of the inner shadow

Voilà


0

작은 버튼의 보통 크기 텍스트

이 페이지의 다른 아이디어는 작은 텍스트 글자가있는 작은 버튼에 사용하면 효과가 떨어집니다. 이 답변은 RobertPitt의 답변으로 확장됩니다 .

다음은 사소한 조정입니다.

text-shadow: 1px 1px transparent, -1px -1px black;

노트 :

이 사이트 를 사용 하여 색조를 정교하게 다듬 었습니다.


-1

나는이 사이트에서 그것을 사용하고 있고, 또한 좋아 보인다. 한 번 봐 이너 섀도우


1
반대표를 던진 사람은 이것이 어떻게 반대표를받을 수 있는지 말할 수 있습니다. 이 답변이 질문에서 벗어난 경우? 또는 스팸
발송 자라고

+1 Web_Designer와 동일한 답변이지만 더 잘 설명되어 있습니다. 아마도 귀하의 답변이 초기에 게시 된 답변과 기본적으로 동일하다는 사실을 싫어하는 사람이 아닐 수도 있습니다. 하지만 여기 있습니다. 난 그냥 :) 당신을 위해 그것을 보상
쥘 콜레에게

2
그냥 찬성했습니다. 이것은 중복 일뿐만 아니라 문제를 설명하거나 스 니펫을 제공하지 않으며 단지 링크 일뿐입니다. 제 생각에는 저자의 최소한의 노력을 보여줍니다. IMHO 및 FTR.
Alba Mendez 2013 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.