CSS中,內部陰影是指一個元素內的區域產生的陰影,常用于模擬凹陷或深入效果,亦或是增加元素的立體感。內部陰影有多種方法可實現,下面將分別介紹。
/*方法一:box-shadow屬性*/ box-shadow: inset x y blur spread color;
box-shadow屬性不僅可以實現外部陰影,也可用于內部陰影。其中,inset關鍵字表示內部陰影,x、y分別為陰影偏移量,blur為模糊半徑,spread為擴散半徑,color為陰影顏色。若只需要一個內部陰影,可將spread的值設為0。
/*方法二:linear-gradient*/ background: linear-gradient(to bottom right, color1, color2); -webkit-background-clip: text; color: transparent;
使用linear-gradient時,將其應用于元素的背景,并利用-webkit-background-clip: text屬性設置背景的裁剪方式為text,同時將color設為transparent,就可實現內部陰影的效果。若需要多個內部陰影,可增加linear-gradient。這種方法動畫效果非常好,但不適用于所有瀏覽器。
/*方法三:偽元素與重復投影*/ position: relative; &:before{ content: ""; position: absolute; top: -1px; left: -1px; width: 100%; height: 100%; background: inherit; z-index: -1; transform: translate(-3px, -3px); filter: blur(3px); }
利用偽元素:before和CSS3的filter屬性,我們可以實現內部陰影。將元素的定位方式設為relative,利用:before生成重復投影,然后利用translate屬性微調其位置后再使用blur屬性實現模糊,從而達到內部陰影的效果。這種方法的優點是能適應多數瀏覽器,但缺點是需要增加復雜的CSS代碼。