1. 程式人生 > >【CSS】CSS畫矩形、圓、半圓、弧形、半圓、小三角、疑問框

【CSS】CSS畫矩形、圓、半圓、弧形、半圓、小三角、疑問框

在網頁中,經常會用到各種Icon,如果老是麻煩設計獅畫出來不免有些不好意思,所以有時候我們也可以用CSS寫出各種簡單的形狀,一來可以減輕他們的負擔,二來也可以使用CSS替代圖片,提高載入速度。

在網頁中,結合CSS能畫出來的最基本的形狀就是矩形,所以,我們可以在矩形的基礎上做出各種變換,得到很多不同的形狀。

這次的分享主要用到圓角、邊框、定位等知識點(鑑於IE9以上才支援圓角,暫時不考慮相容問題)

先做一些通用的基礎設定:

div {
	width: 100px;
	height: 100px;
	line-height: 100px;
	text-align: center;
	margin: 100px;
	background-color: red;
}
毫無疑問,結合HTML就可以畫出最基本的矩形
<div>矩形</div>
效果:

下面針對矩形做一些變換:

圓形:


<div class="circle">圓形</div>
border-radius圓角的四個值按順序取值分別為:左上、右上、右下、左下。

原理:四個角都是圓角:四個角的取值為50%或為寬和高一樣的值(此處即100px)。

.circle {
	border-radius: 50%;
}

半圓:


<div class="semi-circle">半圓</div>
原理:左上、右上角是圓角,右下、左下角是直角: 左上角、右上角的值為寬和高一樣的值,右下角、左下角的值不變(等於0);另外,因為還要設定高度值為原來高度的一半才是標準的半圓。
.semi-circle {
	border-radius: 100px 100px 0 0;
	height: 50px;
}

扇形:

<div class="sector">扇形</div>
原理:左上角是圓角,其餘三個角都是直角:左上角的值為寬和高一樣的值,其他三個角的值不變(等於0)。
.sector {
	border-radius: 100px 0 0;
}


弧形:

<div class="arc">弧形</div>
原理:兩個對角變,另外兩個對角不變:比如,左上角、右下角取值為寬和高一樣的值,右上角、左下角的值不變(等於0) .新增transform屬性可旋轉成平躺的弧形,類似人的嘴巴形狀,(*^__^*) 嘻嘻……

.arc{
		border-radius: 100px 0;
		-webkit-transform: rotate(45deg);
		-ms-transform: rotate(45deg);
		-o-transform: rotate(45deg);
		transform: rotate(45deg);
	}

小三角:


<div class="triangle"></div>
<div class="arrow"></div>
原理:設定邊框,並把原來div的寬和高的值設定為0,即把原來的矩形壓縮成只有邊框,但因為設定的邊框值比較大(為了保證三角形看起來不會太小或者太細),然後設定每一個邊框的顏色不同,就可以看出三角形其實就可以是由邊框變換而來的。若只想顯示某一塊三角形,可以把其他的邊框顏色設定為透明,即transparent。
.triangle{
		border: 50px solid green;
		width: 0;
		height: 0;
		border-top-color: yellow;
		border-right-color: blue;
		border-bottom-color: pink;
		border-left-color: orange;
	}
	.arrow{
		background: none;	/*為了清除前面div設定的背景顏色*/
		border: 50px solid red;
		width: 0;
		height: 0;
		border-color: red transparent transparent transparent;
	}

疑問框:


<div class="rectangle">疑問框</div>
原理:由圓角矩形和一個小三角組成:可結合偽元素、定位實現。
/*圓角矩形*/
	.rectangle{
		width: 200px;
		border-radius: 15px;
		position: relative;
	}
	/*小三角*/
	.rectangle::before{
		content: "";
		width: 0;
		height: 0;
		border: 15px solid red;
		border-color: red transparent transparent transparent;
		position:absolute;
		bottom: -30px;
		left: 40px;
	}


Author:致知

Sign:路漫漫其修遠兮,吾將上下而求索。