圖解CSS形狀Shapes

CSS的高級特效----形狀(Shapes)

CSS Shapes包含兩組屬性,shape-outside 和 shape-inside。 (但本文不涉及講shape-inside)

shape-outside 有四個形狀函數( 只能應用給浮動元素 )
:circle() ----圓形
:ellipse() ----橢圓形
:polygon() ----多邊形
:inset() ----嵌入在盒子邊界內的矩形,也可以指定圓角

circle() 圓形與 ellipse() 橢圓的 語法:
circle():接受 一個半徑一個位置值circle(r1 at x y)----如傳入如果位置傳入一個值則以元素左上角原點圓心爲x軸方向的x位置,y軸方向默認爲元素的50%
ellipse():接受 兩個半徑值和一個位置值ellipse(r1 r2 at x y)----位置的傳值與圓形一致

下面是html代碼

<div>
	<div><div>
	<p>此處很多文字</p>
</div>

然後是 給div添加浮動和形狀函數,下圖爲谷歌調試及對應效果
在這裏插入圖片描述
inset()傳入一組長度值,分別是上,右,下,左邊的距離,很像margin和padding簡寫,此外可以通過round關鍵字指定圓角,隨後是半徑,與border-radius類似

如下例子,給div添加下面樣式

.inset{
	/*距離外部盒子的上,下各50px
	 *距離外部盒子的左,右各50px
	 *還有半徑爲20px的圓角*/
    shape-outside: inset(50px 50px round 20px);
	width: 200px;
    height: 200px;
    background-color: pink;
    float: right;
}

在這裏插入圖片描述
polygon() 此函數相對比較複雜一些,這個函數接受一系列的座標對,用於在盒子表面指定多個點座標相對盒子的左上角,最終把各個點連接起來就是要創建的形狀
創建多邊形最方便方式是使用CSS Shapes Editor插件,它支持Chrome和Opera。而且會在檢查形狀元素時給出預覽。也可以通過創建並拖動控制點來創建新形狀

.polygon {
	width: 200px;
    height: 200px;
    background-color: pink;
    float: right;
    shape-outside: polygon(100% 99%, 3% 90%,11% 80%,3% 70%,43% 30%); 
}

在這裏插入圖片描述
多邊形中每個點的座標以百分比表示,這樣可以保證最大的靈活度。

形狀圖片
可以直接在圖片的源文件上基於透明度來創建形狀

.url {
	width: 700px;
    height: 200px;
    float: right;
    shape-outside: url(./images/saturn.png);
}

在這裏插入圖片描述
注意: 只通過瀏覽器打開HTML文件是不行的,必須通過Web服務器取得這個頁面,這樣引用的圖片纔會帶有合適的HTTP首部信息,告訴瀏覽器該圖片與CSS來自同一個域。這種安全機制是較新的瀏覽器纔有的,是爲了防止引用的文件對你的計算機造成危害

shape-image-threshold: 默認情況下,形狀輪廓會沿圖片完全透明區域的邊緣生成的,可以通過這個屬性修改,默認值是0.0(完全透明),最大值爲1.0,比如修改上圖的不透明度閾值(臨界值)爲0.9,則圖片中半透明部分不再被包含在形狀內

.url {
	width: 700px;
    height: 200px;
    background-color: pink;
    float: right;
    shape-outside: url(./images/saturn.png);
    shape-image-threshold: 0.9;
}

在這裏插入圖片描述
原圖圖片中半透明的部分生成形狀時被忽略了,顯示的高不透明度

盒子形狀與邊距
:border-box
除了使用形狀函數或者圖片外,還可以使用border-radius來創建圓形,但僅有圓角邊框不能生成形狀,還得通過shape-ouside屬性告訴瀏覽器,以border-box作爲生成形狀的依據

<!-- html代碼 -->
<img src="./images/sum.jpg" alt="">
<p>此處很多文字</p>
/*img樣式*/
img {
	float: right;
	border-radius: 50%;
	shape-outside: border-box;
}

在這裏插入圖片描述
:margin-box
使用shape-outside:margin-box;給上圖的球體周圍添加邊距

img {
	float: right;
	border-radius: 50%;
	shape-outside: margin-box;
	margin: 2em;
}

在這裏插入圖片描述
shape-margin:
如果想給形狀複雜的圖片添加外邊距,可以使用shape-margin這個屬性用於給整個形狀添加外邊距,與創建形狀的方法無關

<!-- html代碼 -->
<div class="url"></div>
<p>此處很多文字</p>
/*css樣式*/
.url {
	width: 700px;
    height: 200px;
    float: right;
    shape-outside: url(./images/saturn.png);
    shape-margin: 1em;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章