[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 텍스트로 클리핑 및 마스킹 :
답변
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>
답변
당신은 이것을 할 수 있습니다. 안타깝게도 텍스트 그림자에 삽입을 사용할 수있는 방법은 없지만 색상과 위치를 사용하여 가짜로 만들 수 있습니다. 블러를 바로 아래로 내리고 오른쪽 상단을 따라 그림자를 정렬합니다. 이와 같은 것이 트릭을 할 수 있습니다.
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 값, 불투명도 및 블러를 사용하여 적절한 효과를 얻으십시오. 어떤 색상의 글꼴과 배경에 따라 달라지며 글꼴의 무게가 클수록 좋습니다.