<style>
.square{
width:200px;
height:100px;
position:relative;
border:1px #ccc solid;
margin:30px;
}
/* .square:before{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:-29%;
left:5%;
border:15px solid #ccc;
border-color:transparent transparent #fff transparent;
z-index:2;
} */
.square:after{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:-30%;
left:5%;
border:15px solid #FFF;
border-color:transparent transparent #ccc transparent;
z-index:1;
}
</style>
<div class='square'></div>
```
<style>
.square{
width:200px;
height:100px;
position:relative;
border:1px #ccc solid;
margin:30px;
}
/* .square:before{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:-29%;
left:5%;
border:15px solid #ccc;
border-color:transparent transparent #fff transparent;
z-index:2;
} */
.square:after{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:0;
right:0;
border:15px solid #FFF;
border-color:red red transparent transparent;
z-index:1;
}
</style>
<div class='square'></div>
<style>
.square{
width:200px;
height:100px;
position:relative;
border:1px #ccc solid;
margin:30px;
}
.square:before{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:-29%;
left:5%;
border:15px solid #ccc;
border-color:transparent transparent #fff transparent;
z-index:2;
}
.square:after{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
top:-30%;
left:5%;
border:15px solid #FFF;
border-color:transparent transparent #ccc transparent;
z-index:1;
}
</style>
<div class='square'></div>
給定的html代碼是: <div class='square'></div>
平常實(shí)現(xiàn)我們常是通過添加小的icon來實(shí)現(xiàn),不僅需要添加圖片資源岂丘,還需要改動(dòng)html結(jié)構(gòu)已亥。
CSS偽元素
css中偽元素有四個(gè),分別是:first-line,:first-letter,:before,:after相寇。其中前兩個(gè)分別選擇的是目標(biāo)元素內(nèi)第一行文本和第一個(gè)字母,可以為其添加多余樣式着撩。
而最常用的就是:before和:after夜矗,這兩個(gè)偽元素與前兩個(gè)的用法不同点骑,而用處也更大酣难。
:before,:after分別用于向當(dāng)前元素前和后添加指定的content內(nèi)容,具體事例用法如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS輸出各種圖形</title>
<style type="text/css">
p:before{
content:"開始";
color:#F00;
font-size:12px;
}
p:after{
content:"結(jié)束";
color:#003;
font-size:30px;
border:1px solid #000;
width:100px;
}
</style>
</head>
<body>
<p>偽元素 測(cè)試</p>
</body>
</html>
復(fù)制代碼
上面代碼的運(yùn)行結(jié)果如圖:
可以認(rèn)為:before和:after兩個(gè)偽元素是添加到當(dāng)前p標(biāo)簽前后的兩個(gè)元素黑滴,但是應(yīng)該也會(huì)發(fā)現(xiàn)在p:after中寫的width:100px;并沒有奏效憨募,這就說明了偽元素的顯示是inline的,而不是block袁辈。
至于偽元素有幾個(gè)需要注意的地方:
1.偽元素在元素內(nèi)部的顯示為inline菜谣,因此想要用偽元素實(shí)現(xiàn)更多效果,比如上面的題目晚缩,就必須把偽元素當(dāng)做block元素來用尾膊。
2.偽元素列表屬性中content必不可少,即使內(nèi)容為空橡羞,content也不能為空眯停,否則會(huì)不顯示济舆。
3.偽元素content除了可以設(shè)置為文字之外卿泽,還可以設(shè)置為圖片,例如p:before{content:url(icon.gif);}
4.偽元素目前已經(jīng)得到IE8及以上瀏覽器滋觉,可以放心使用签夭。
用CSS做出來一個(gè)三角形或者別的形狀
掌握了偽元素之后,就可以實(shí)現(xiàn)上面的題目了椎侠。很明顯第租,是通過偽元素做出了一個(gè)三角形。怎么做呢我纪?
用CSS代碼實(shí)現(xiàn)三角形很簡(jiǎn)單慎宾,嘗試一下就可以寫出來:,html代碼為<div class="triangle"></div>, css代碼如下
.trangle{width:0;height:0;border:40px solid; border-color:transparent transparent transparent #F00;}
別的形狀也是大同小異浅悉,通過設(shè)置不同的border-radius和border-width來實(shí)現(xiàn)趟据,但是兼容性有問題,IE9及以上才會(huì)正常(自然是border-radius的問題)术健。
但是可以看出來元素已經(jīng)是用border勾勒出來的了汹碱,但是題目中的三角形是帶有黑色邊框的,很明顯不能通過一個(gè)偽元素來搞定荞估,那就兩個(gè)一起咳促。
通過設(shè)定偽元素的position:absolute和z-index屬性稚新,構(gòu)成偽元素的疊加,底層是黑色跪腹,上層是白色即可褂删。
原題目的CSS具體實(shí)現(xiàn)代碼如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS輸出各種圖形</title>
<style type="text/css">
.square{width:100px;height:100px;background-color:#FFF;position:relative;border:2px #000000 solid;}
.square:before{
content:"";
width:0px;
height:0px;
display:block;
position:absolute;
z-index:2;
top:25%;
right:-28px;
border:15px solid #FFF;
border-color:transparent transparent transparent #FFF;
}
.square:after{content:"";
width:0px;
height:0px;
display:block;
position:absolute;
z-index:1;
top:25%;
right:-30px;
border:15px solid #FFF;
border-color:transparent transparent transparent #000;
}
</style>
</head>
<body>
<div class='square'></div>
</body>
</html>
給定的html代碼是: <div class='square'></div>
平常實(shí)現(xiàn)我們常是通過添加小的icon來實(shí)現(xiàn),不僅需要添加圖片資源冲茸,還需要改動(dòng)html結(jié)構(gòu)笤妙。
CSS偽元素
css中偽元素有四個(gè),分別是:first-line,:first-letter,:before,:after噪裕。其中前兩個(gè)分別選擇的是目標(biāo)元素內(nèi)第一行文本和第一個(gè)字母蹲盘,可以為其添加多余樣式。
而最常用的就是:before和:after膳音,這兩個(gè)偽元素與前兩個(gè)的用法不同召衔,而用處也更大。
:before,:after分別用于向當(dāng)前元素前和后添加指定的content內(nèi)容祭陷,具體事例用法如下:
<pre>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS輸出各種圖形</title>
<style type="text/css">
p:before {
content: "開始";
color: #F00;
font-size: 12px;
}
p:after {
content: "結(jié)束";
color: #003;
font-size: 30px;
border: 1px solid #000;
width: 100px;
}
</style>
</head>
<body>
<p>偽元素 測(cè)試</p>
</body>
</html>
</pre>
可以認(rèn)為:before和:after兩個(gè)偽元素是添加到當(dāng)前p標(biāo)簽前后的兩個(gè)元素苍凛,但是應(yīng)該也會(huì)發(fā)現(xiàn)在p:after中寫的width:100px;并沒有奏效,這就說明了偽元素的顯示是inline的兵志,而不是block醇蝴。
至于偽元素有幾個(gè)需要注意的地方:
1.偽元素在元素內(nèi)部的顯示為inline,因此想要用偽元素實(shí)現(xiàn)更多效果想罕,比如上面的題目悠栓,就必須把偽元素當(dāng)做block元素來用。
2.偽元素列表屬性中content必不可少按价,即使內(nèi)容為空惭适,content也不能為空,否則會(huì)不顯示楼镐。
3.偽元素content除了可以設(shè)置為文字之外癞志,還可以設(shè)置為圖片,例如p:before{content:url(icon.gif);}
4.偽元素目前已經(jīng)得到IE8及以上瀏覽器框产,可以放心使用凄杯。
用CSS做出來一個(gè)三角形或者別的形狀
掌握了偽元素之后,就可以實(shí)現(xiàn)上面的題目了秉宿。很明顯戒突,是通過偽元素做出了一個(gè)三角形。怎么做呢蘸鲸?
用CSS代碼實(shí)現(xiàn)三角形很簡(jiǎn)單妖谴,嘗試一下就可以寫出來:[圖片上傳中...(image-aa3c1a-1511271151620-4)]
,html代碼為<div class="triangle"></div>, css代碼如下
.trangle{width:0;height:0;border:40px solid; border-color:transparent transparent transparent #F00;}
別的形狀也是大同小異,通過設(shè)置不同的border-radius和border-width來實(shí)現(xiàn)膝舅,但是兼容性有問題嗡载,IE9及以上才會(huì)正常(自然是border-radius的問題)。
但是可以看出來元素已經(jīng)是用border勾勒出來的了仍稀,但是題目中的三角形是帶有黑色邊框的洼滚,很明顯不能通過一個(gè)偽元素來搞定,那就兩個(gè)一起技潘。
通過設(shè)定偽元素的position:absolute和z-index屬性遥巴,構(gòu)成偽元素的疊加,底層是黑色享幽,上層是白色即可辆憔。
原題目的CSS具體實(shí)現(xiàn)代碼如下:
<pre>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS輸出各種圖形</title>
<style type="text/css">
.square {
width: 100px;
height: 100px;
background-color: #FFF;
position: relative;
border: 2px #000000 solid;
}
.square:beforem {
content: "";
width: 0px;
height: 0px;
display: block;
position: absolute;
z-index: 2;
top: 25%;
right: -28px;
border: 15px solid #FFF;
border-color: transparent transparent transparent #FFF;
}
.square:after {
content: "";
width: 0px;
height: 0px;
display: block;
position: absolute;
z-index: 1;
top: 25%;
right: -30px;
border: 15px solid #FFF;
border-color: transparent transparent transparent #000;
}
</style>
</head>
<body>
<div class ='square'>
</div>
</body>
</html>
</pre>