CSS3的一個(gè)非?岬奶匦允窃试S我們創(chuàng)建各種規(guī)則和不規(guī)則形狀的圖形,從而可以減少圖片的使用。以前只能在Photoshop等圖像編輯軟件中制作的復(fù)雜圖形現(xiàn)在使用CSS3就可以完成了。通過使用新的CSS屬性,像transform和border-radius,我們可以創(chuàng)建非常漂亮和復(fù)雜的圖形效果。
圓形
要使用CSS來制作一個(gè)圓形,我們需要一個(gè)div,被給它設(shè)置一個(gè)ID。
<div id="circle"></div>
圓形在設(shè)置CSS時(shí)要設(shè)置寬度和高度相等,然后設(shè)置border-radius屬性為寬度或高度的一半即可:
#circle {
width: 120px;
height: 120px;
background: #7fee1d;
-moz-border-radius: 60px;
-webkit-border-radius: 60px;
border-radius: 60px;
}
正方形
正方形是CSS圖形中最簡(jiǎn)單的圖形之一,同樣使用一個(gè)div,并設(shè)置一個(gè)ID。
<div id="square"></div>
正方形的CSS樣式只需要設(shè)置相同的寬度和高度即可。
#square {
width: 120px;
height: 120px;
background: #f447ff;
}
長(zhǎng)方形
與正方形一樣,CSS長(zhǎng)方形也非常簡(jiǎn)單:
<div id="rectangle"></div>
與正方形不同的是,長(zhǎng)方形的長(zhǎng)度和高度為不同的值。
#rectangle {
width: 220px;
height: 120px;
background: #4da1f7;
}
橢圓形
橢圓形是正圓形的一個(gè)變體,同樣使用一個(gè)帶ID的div來制作。
<div id="oval"></div>
設(shè)置橢圓形的CSS時(shí),高度要設(shè)置為寬度的一半,border-radius屬性也要做相應(yīng)的改變:
#oval {
width: 200px;
height: 100px;
background: #e9337c;
-webkit-border-radius: 100px / 50px;
-moz-border-radius: 100px / 50px;
border-radius: 100px / 50px;
}
三角形
要?jiǎng)?chuàng)建一個(gè)CSS三角形,需要使用border,通過設(shè)置不同邊的透明效果,我們可以制作出三角形的現(xiàn)狀。另外,在制作三角形時(shí),寬度和高度要設(shè)置為0。
<div id="triangle"></div>
#triangle {
width: 0;
height: 0;
border-bottom: 140px solid #fcf921;
border-left: 70px solid transparent;
border-right: 70px solid transparent;
}
倒三角形
與正三角形不同的是,倒三角形要設(shè)置的是border-top、border-left和border-right三條邊的屬性:
#triangle {
width: 0;
height: 0;
border-top: 140px solid #20a3bf;
border-left: 70px solid transparent;
border-right: 70px solid transparent;
}
左三角形
左三角形操作的是border-top、border-left和border-right三條邊的屬性,其中上邊和下邊要設(shè)置透明屬性。
#triangle_left {
width: 0;
height: 0;
border-top: 70px solid transparent;
border-right: 140px solid #6bbf20;
border-bottom: 70px solid transparent;
}
右三角形
右三角形操作的是border-bottom、border-left和border-right三條邊的屬性,其中上邊和下邊要設(shè)置透明屬性。
#triangle_right {
width: 0;
height: 0;
border-top: 70px solid transparent;
border-left: 140px solid #ff5a00;
border-bottom: 70px solid transparent;
}
菱形
制作菱形的方法有很多種。這里使用的是transform屬性和rotate相結(jié)合,使兩個(gè)正反三角形上下顯示。
#diamond {
width: 120px;
height: 120px;
background: #1eff00;
/* Rotate */
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
/* Rotate Origin */
-webkit-transform-origin: 0 100%;
-moz-transform-origin: 0 100%;
-ms-transform-origin: 0 100%;
-o-transform-origin: 0 100%;
transform-origin: 0 100%;
margin: 60px 0 10px 310px;
}
梯形
梯形是三角形的一個(gè)變體,設(shè)置CSS梯形時(shí),左右兩條邊設(shè)置為相等,并且給它設(shè)置一個(gè)寬度。
#trapezium {
height: 0;
width: 120px;
border-bottom: 120px solid #ec3504;
border-left: 60px solid transparent;
border-right: 60px solid transparent;
}
平行四邊形
平行四邊形的制作方式是使用transform屬性使長(zhǎng)方形傾斜一個(gè)角度。
#parallelogram {
width: 160px;
height: 100px;
background: #8734f7;
-webkit-transform: skew(30deg);
-moz-transform: skew(30deg);
-o-transform: skew(30deg);
transform: skew(30deg);
}
星形
星形的HTML結(jié)構(gòu)同樣使用一個(gè)帶ID的空div。星形的實(shí)現(xiàn)方式比較復(fù)雜,主要是使用transform屬性來旋轉(zhuǎn)不同的邊。仔細(xì)體會(huì)下面的代碼。
#star {
width: 0;
height: 0;
margin: 50px 0;
color: #fc2e5a;
position: relative;
display: block;
border-right: 100px solid transparent;
border-bottom: 70px solid #fc2e5a;
border-left: 100px solid transparent;
-moz-transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
#star:before {
height: 0;
width: 0;
position: absolute;
display: block;
top: -45px;
left: -65px;
border-bottom: 80px solid #fc2e5a;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
content: '';
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
#star:after {
content: '';
width: 0;
height: 0;
position: absolute;
display: block;
top: 3px;
left: -105px;
color: #fc2e5a;
border-right: 100px solid transparent;
border-bottom: 70px solid #fc2e5a;
border-left: 100px solid transparent;
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
}
六角星形
CSS六角星形
和五角星的制作方法不同,六角星形狀的制作方法是操縱border屬性來制作兩半圖形,然后合并它們。
#star_six_points {
width: 0;
height: 0;
display: block;
position: absolute;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid #de34f7;
margin: 10px auto;
}
#star_six_points:after {
content: "";
width: 0;
height: 0;
position: absolute;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 100px solid #de34f7;
margin: 30px 0 0 -50px;
}
五邊形
CSS五邊形
創(chuàng)建CSS五邊形需要結(jié)合兩個(gè)圖形:一個(gè)梯形,然后在它的上面放一個(gè)三角形,共同組成一個(gè)五邊形。
#pentagon {
width: 54px;
position: relative;
border-width: 50px 18px 0;
border-style: solid;
border-color: #277bab transparent;
}
#pentagon:before {
content: "";
height: 0;
width: 0;
position: absolute;
top: -85px;
left: -18px;
border-width: 0 45px 35px;
border-style: solid;
border-color: transparent transparent #277bab;
}
六邊形
六邊形的制作方法可以有很多種,可以像五邊形一樣,先制作一個(gè)長(zhǎng)方形,然后在它的上面和下面各放置一個(gè)三角形。
#hexagon {
width: 100px;
height: 55px;
background: #fc5e5e;
position: relative;
margin: 10px auto;
}
#hexagon:before {
content: "";
width: 0;
height: 0;
position: absolute;
top: -25px;
left: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 25px solid #fc5e5e;
}
#hexagon:after {
content: "";
width: 0;
height: 0;
position: absolute;
bottom: -25px;
left: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 25px solid #fc5e5e;
}
八角形
CSS八角形
八角形的制作方法也有多種方式,這里使用的是先制作兩個(gè)相同的梯形,然后在兩邊分別放置一個(gè)三角形。
#octagon {
width: 100px;
height: 100px;
background: #ac60ec;
position: relative;
}
#octagon:before {
content: "";
width: 42px;
height: 0;
position: absolute;
top: 0;
left: 0;
border-bottom: 29px solid #ac60ec;
border-left: 29px solid #f4f4f4;
border-right: 29px solid #f4f4f4;
}
#octagon:after {
content: "";
width: 42px;
height: 0;
position: absolute;
bottom: 0;
left: 0;
border-top: 29px solid #ac60ec;
border-left: 29px solid #f4f4f4;
border-right: 29px solid #f4f4f4;
}
心形
CSS心形
心形的制作是非常復(fù)雜的,可以使用偽元素來制作,分別將偽元素旋轉(zhuǎn)不同的角度,并修改transform-origin屬性來元素的旋轉(zhuǎn)中心點(diǎn)。
#heart {
position: relative;
}
#heart:before,#heart:after {
content: "";
width: 70px;
height: 115px;
position: absolute;
background: red;
left: 70px;
top: 0;
-webkit-border-radius: 50px 50px 0 0;
-moz-border-radius: 50px 50px 0 0;
border-radius: 50px 50px 0 0;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 0 100%;
-moz-transform-origin: 0 100%;
-ms-transform-origin: 0 100%;
-o-transform-origin: 0 100%;
transform-origin: 0 100%;
}
#heart:after {
left: 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transform-origin: 100% 100%;
-moz-transform-origin: 100% 100%;
-ms-transform-origin: 100% 100%;
-o-transform-origin: 100% 100%;
transform-origin: 100% 100%;
}
蛋形
蛋形時(shí)橢圓形的一個(gè)變體,它的高度要比寬度稍大,并且設(shè)置正確的border-radius屬性即可以制作出一個(gè)蛋形。
#egg {
width: 136px;
height: 190px;
background: #ffc000;
display: block;
-webkit-border-radius: 63px 63px 63px 63px / 108px 108px 72px 72px;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
}
無窮符號(hào)
CSS無窮符號(hào)
無窮符號(hào)可以通過border屬性和設(shè)置偽元素的角度來實(shí)現(xiàn)。
#infinity {
width: 220px;
height: 100px;
position: relative;
}
#infinity:before,#infinity:after {
content: "";
width: 60px;
height: 60px;
position: absolute;
top: 0;
left: 0;
border: 20px solid #06c999;
-moz-border-radius: 50px 50px 0;
border-radius: 50px 50px 0 50px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
#infinity:after {
left: auto;
right: 0;
-moz-border-radius: 50px 50px 50px 0;
border-radius: 50px 50px 50px 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
消息提示框
消息提示框可以先制作一個(gè)圓角矩形,然后在需要的地方放置一個(gè)三角形。
#comment_bubble {
width: 140px;
height: 100px;
background: #088cb7;
position: relative;
-moz-border-radius: 12px;
-webkit-border-radius: 12px;
border-radius: 12px;
}
#comment_bubble:before {
content: "";
width: 0;
height: 0;
right: 100%;
top: 38px;
position: absolute;
border-top: 13px solid transparent;
border-right: 26px solid #088cb7;
border-bottom: 13px solid transparent;
}
吃豆人
吃豆人的制作方法是先在一個(gè)圓形里面制作一個(gè)透明的三角形。
#pacman {
width: 0;
height: 0;
border-right: 70px solid transparent;
border-top: 70px solid #ffde00;
border-left: 70px solid #ffde00;
border-bottom: 70px solid #ffde00;
border-top-left-radius: 70px;
border-top-right-radius: 70px;
border-bottom-left-radius: 70px;
border-bottom-right-radius: 70px;
}