นี่คือความพยายามที่ดีที่สุดของฉัน:
.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>
ปัญหาคือจะคลิปเงาที่ตกบริเวณขอบได้อย่างไร !!! ฉันลองใช้ webkit โดยใช้ background-clip: text แต่ webkit แสดงเงาเหนือพื้นหลังจึงไม่ทำงาน
การสร้าง Text Mask ด้วย CSS?
หากไม่มีเลเยอร์มาสก์ด้านบนจะเป็นไปไม่ได้ที่จะสร้างเงาภายในที่แท้จริงบนข้อความ
บางทีอาจมีคนแนะนำให้ W3C เพิ่มbackground-clip: reverse-textซึ่งจะตัดมาสก์ผ่านพื้นหลังแทนที่จะตัดพื้นหลังให้พอดีกับข้อความ
ไม่ว่าจะเป็นหรือแสดงเงาข้อความเป็นส่วนหนึ่งของพื้นหลังแล้วตัดด้วย background-clip: text
ฉันพยายามวางตำแหน่งองค์ประกอบข้อความที่เหมือนกันด้านบน แต่ปัญหาคือ background-clip: ข้อความตัดพื้นหลังให้พอดีกับข้อความ แต่เราต้องการสิ่งที่ตรงกันข้าม
ฉันลองใช้ text-stroke: 20px white; ทั้งองค์ประกอบนี้และองค์ประกอบด้านบน แต่จังหวะข้อความจะเข้าและออก
วิธีการอื่น
เนื่องจากในปัจจุบันไม่มีวิธีสร้างมาสก์ข้อความกลับด้านใน CSS คุณสามารถเปลี่ยนเป็น SVG หรือผ้าใบและสร้างรูปภาพแทนที่ข้อความด้วยเลเยอร์ทั้งสามเพื่อให้ได้เอฟเฟกต์ของคุณ
เนื่องจาก SVG เป็นชุดย่อยของ XML ข้อความ SVG จึงยังคงสามารถเลือกและค้นหาได้และเอฟเฟกต์สามารถสร้างได้โดยใช้โค้ดน้อยกว่า Canvas
มันจะยากกว่าที่จะบรรลุสิ่งนี้ด้วย Canvas เพราะมันไม่มี Dom ที่มีเลเยอร์เหมือน SVG
คุณสามารถสร้าง SVG ได้ทั้งฝั่งเซิร์ฟเวอร์หรือเป็นวิธีการแทนที่ข้อความจาวาสคริปต์ในเบราว์เซอร์
อ่านเพิ่มเติม:
SVG เทียบกับ Canvas:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
การตัดและการมาสก์ด้วยข้อความ SVG:
http://www.w3.org/TR/SVG/text.html#TextElement