box-shadow只能對盒子本身進行投影,無法對不規則的圖形進行投影,例如對話氣泡,三角形的小尾巴通常是用偽元素生成的,對主元素使用投影,偽元素無法得到投影效果。
解決方案是使用filter屬性,此屬性瀏覽器支持程度不高。filter屬性中的drop-shadow函數可以實現投影,語法與box-shadow類似。
filter:drop-shadow(2px 2px 4px rgba(0,0,0,0.9));
此屬性的drop-shadow函數會給任何非透明的部分打上投影,包括文本(當背景透明時),并且無法用text-shadow:none;清除。當已經設置了text-shadow屬性時,文本的投影也會被drop-shadow函數打上投影,造成雙投影的結果。
text-shadow: 5px 5px yellow;
filter: drop-shadow(5px 5px 2px black);