CSS中的環(huán)形圖是一種特殊的圖形效果,它是由CSS代碼實(shí)現(xiàn)的。在實(shí)現(xiàn)環(huán)形圖時(shí),需要使用CSS3中的transform屬性,以及前綴為-webkit-、-moz-、-o-等屬性,同時(shí)也需要使用CSS盒模型、偽元素、過(guò)渡效果等技術(shù)。
/* 環(huán)型區(qū)域 */ .circle { width: 200px; height: 200px; position: relative; overflow: hidden; margin: 50px auto; background-color: #fff; border-radius: 50%; box-shadow: 0 0 20px rgba(0, 0, 0, 0.5) inset; } /* 環(huán)型背景 */ .circle:before { content: ""; width: 100%; height: 100%; display: block; position: absolute; top: 0; left: 0; border-radius: 50%; background-color: #e5e5e5; transform: rotate(45deg); z-index: 1; } /* 環(huán)型進(jìn)度 */ .circle:after { content: ""; width: 100%; height: 100%; display: block; position: absolute; top: 0; left: 0; border-radius: 50%; box-shadow: 0 0 20px rgba(0, 0, 0, 0.5) inset; transform-origin: 50% 100%; z-index: 2; transition: transform 0.5s ease-in-out; } /* 帶百分比的環(huán)形進(jìn)度 */ .circle[data-percent="25"]:after { transform: rotate(90deg); } .circle[data-percent="50"]:after { transform: rotate(180deg); } .circle[data-percent="75"]:after { transform: rotate(270deg); } .circle[data-percent="100"]:after { transform: rotate(360deg); }
首先定義了一個(gè)class為circle的div標(biāo)簽,它的寬度和高度都為200px,它的顯示區(qū)域?yàn)?00px x 200px的正方形,而其父元素的寬度為300px。同時(shí)指定position屬性值為relative,這是因?yàn)楹竺嫘枰獙?duì)其內(nèi)部元素進(jìn)行絕對(duì)定位。由于環(huán)形圖是一個(gè)圓形,因此給其設(shè)置border-radius屬性值為50%,并添加一個(gè)陰影效果。
接著,在環(huán)形圖圓心部位添加一個(gè)偽元素before,它的width和height都為100%,即寬度和高度與環(huán)形區(qū)域相同。這里需要注意的是,其content屬性值為雙引號(hào),表示此元素沒(méi)有實(shí)際內(nèi)容。使用position:absolute將該元素絕對(duì)定位在環(huán)形圖的頂部,然后將其background-color屬性設(shè)置為一種灰色,這里選用的顏色是#e5e5e5,并強(qiáng)制旋轉(zhuǎn)繞z軸旋轉(zhuǎn)45度,由此創(chuàng)建出一個(gè)斜角中環(huán)形圖的背景。
最后,在環(huán)形圖內(nèi)部再添加一個(gè)after偽元素,它的操作與before偽元素類(lèi)似,同樣設(shè)置寬度和高度都為100%。在給該元素添加border-radius屬性值為50%以定義其為圓形的基礎(chǔ)上,在其Box-shadow屬性中添加一個(gè)垂直陰影,表示進(jìn)度圓環(huán)的區(qū)域。在最后進(jìn)行animate(動(dòng)畫(huà))效果完成進(jìn)度環(huán)的旋轉(zhuǎn)。