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

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

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

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

어떤 아이디어?



답변

여기 내가 사용 발견 된 약간의 트릭 :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


답변

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

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

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


답변

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

    .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


답변

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).
  • 여러 그림자? 생각조차 하지마.
  • 당신은 또한 외부 빛을 얻습니다.

답변

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

: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


답변

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

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

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


답변

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

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

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

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

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

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