偽類經(jīng)常與偽元素混淆,偽元素的效果類似于通過添加一個實際的元素才能達到,而偽類的效果類似于通過添加一個實際的類來達到。實際上css3為了區(qū)分兩者,已經(jīng)明確規(guī)定了偽類用一個冒號來表示,而偽元素則用兩個冒號來表示。偽類與偽元素的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素。具體的偽類和偽元素相關(guān)知識本文就不深入,下面介紹一下從青銅到王者10個css3偽類使用技巧和運用。
創(chuàng)新互聯(lián)服務(wù)項目包括武侯網(wǎng)站建設(shè)、武侯網(wǎng)站制作、武侯網(wǎng)頁制作以及武侯網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,武侯網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到武侯省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
眾所周知,Animate/transition box-shadow 可以使用 box-shadow屬性 來實現(xiàn)盒子陰影效果,但repaint消耗較多,于是這里提出 通過修改偽元素的透明度來實現(xiàn)盒子陰影
實現(xiàn)原理:
**通過改變透明度,這樣從一個非默認值更新它的值,就不需要承擔(dān)任何重繪
這里設(shè)置一個空的偽元素設(shè)置陰影透明度為0隱藏,再通過鼠標懸停恢復(fù)它的透明度,下面是傳統(tǒng)和偽類實現(xiàn)的代碼對比
<div class="before"> <h2>Before</h2> <p>Animate/transition box-shadow 可以使用box-shadow屬性來實現(xiàn)盒子陰影效果,但重繪消耗較多</p> </div> <hr /> <div class="after"> <h2>After</h2> <p>通過修改偽元素的透明度來實現(xiàn)同樣的效果,沒有重繪消耗</p> </div>
.before {
padding: 1em;
background-color: #fff;
-webkit-transition: 0.2s;
transition: 0.2s;
}
.before:hover {
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3);
}
.after {
position: relative;
padding: 1em;
background-color: #fff;
}
.after:before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3);
opacity: 0;
will-change: opacity;
-webkit-transition: 0.2s;
transition: 0.2s;
}
.after:hover:before {
opacity: 1;
}

<ul class="breadcrumb"> <li><a href="#">Home</a> </li> <li><a href="#">Pictures</a> </li> <li><a href="#">Summer 15</a> </li> <li>Italy</li> </ul>
ul.breadcrumb {
padding: 8px 16px;
list-style: none;
background-color: #eee;
}
ul.breadcrumb li {
display: inline;
}
ul.breadcrumb li+li:before {
padding: 8px;
color: black;
content: "/\00a0";
}
ul.breadcrumb li a {
color: green;
}
效果:


實現(xiàn)原理:三邊設(shè)置邊框,箭頭指向的那個方向的border不用設(shè)置,位于箭頭兩邊的邊框顏色為透明(transparent),對邊為主體邊框顏色(較大的)/主體背景顏色(較小的),因為我們要有邊框顏色的三角箭頭,當(dāng)?shù)谝粋€箭頭(較大的)被第二個箭頭(較小的)通過準確覆蓋之后剩下沒被覆蓋的邊緣就是合成三角箭頭的邊框了,其顏色就是較大的那個三角箭頭的顏色,可調(diào)。而較小的那個三角箭頭的顏色要設(shè)置成主體顏色,進行負值定位偏移時要把主體邊框蓋住,從而與主體合在一起了
<div class='container'> <img alt='' src='http://placehold.it/400x200'> <div class='arrow-left'></div> </div> <div class='container new'> <div class='arrow-right'></div> <img alt='' src='http://placehold.it/400x200'> </div>
.arrow-left:before {
z-index: 9999;
content: "";
display: block;
width: 0;
height: 0;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-right: 20px solid #E9E9E9;
position: absolute;
left: -20px;
top: 80px;
}


原理:修改webkit-transform: skewY屬性來修改傾斜度(旋轉(zhuǎn)也是一樣的道理)
.edge--bottom {
position: relative;
z-index: 1;
}
.edge--bottom:after {
background: inherit;
content: '';
display: block;
height: 50%;
left: 0;
position: absolute;
right: 0;
z-index: -1;
}
.edge--bottom:after {
bottom: 0;
-webkit-transform: skewY(-1.5deg);
-ms-transform: skewY(-1.5deg);
transform: skewY(-1.5deg);
-webkit-transform-origin: 100%;
-ms-transform-origin: 100%;
transform-origin: 100%;
}

<div class="row"> <a rel="nofollow" rel="noreferrer" href="#" class="btn tooltip top"> <span>TOOLTIP TOP</span> <span class="tooltip-content">Lorem ipsum dolor sit amet</span> </a> </div>
.tooltip .tooltip-content::after {
background: #05a8ff;
content: "";
height: 10px;
position: absolute;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
width: 10px;
}
.tooltip.top .tooltip-content {
bottom: calc(100% + 1.5em);
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
.tooltip.top .tooltip-content::after {
bottom: -5px;
left: 50%;
margin-left: -5px;
}

原理:Typing Animation with Pseudo-Elements 看起來是打字,其實是使用偽元素覆蓋在字符串上,然后逐漸減少偽元素覆蓋寬度來實現(xiàn)的視覺效果
<div> <h2>Typing Animation</h2> <p class="tagline"> <span class="tagline-skill"><span class="tagline-skill_inner">webdesign</span></span> </p> </div>
.tagline-skill_inner:after {
content: "";
position: absolute;
top: -1px;
right: 0;
bottom: -2px;
left: 0;
border-left: 1px solid #fff;
background-color: #2a2a28;
-webkit-animation: animatetoright 1s steps(10) infinite alternate;
animation: animatetoright 1s steps(10) infinite alternate;
}

h2 {
position: relative;
margin: 0;
font-weight: bold;
letter-spacing: -0.05rem;
line-height: 1;
text-transform: uppercase;
z-index: 10;
}
h2:before {
content: "2018/08";
font-family: monospace;
font-size: 10rem;
position: absolute;
top: 2rem;
left: -2rem;
z-index: 0;
line-height: 1;
color: rgba(50, 25, 0, 0.1);
}

a {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-flow: row nowrap;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-align: baseline;
-webkit-align-items: baseline;
-ms-flex-align: baseline;
align-items: baseline;
text-decoration: none;
-webkit-transition: color .2s ease-in-out;
transition: color .2s ease-in-out;
}
a::before {
height: .1em;
-webkit-box-flex: 1;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
-webkit-box-ordinal-group: 2;
-webkit-order: 1;
-ms-flex-order: 1;
order: 1;
background: left bottom/contain repeat-x url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3IDIiPjxjaXJjbGUgZmlsbD0iI2ZmZiIgY3g9IjMuNSIgY3k9IjEiIHI9IjEiLz48L3N2Zz4=);
content: '';
}
a::after {
-webkit-box-ordinal-group: 3;
-webkit-order: 2;
-ms-flex-order: 2;
order: 2;
content: "p." attr(data-page);
}
1、IE8不支持CSS3中很多特性,比如偽元素nth-child,可以使用+號(代表相鄰元素)來實現(xiàn)相同功能
2、Google的IE9.js是解決IE5.5到IE8 CSS3特性兼容性問題的JS庫
CSS的世界很美好,每個知識點都可以值得深入研究和實踐,對于偽類、偽元素也有很多土味特效可以寫出來,比如說圖片遮罩、圖片背景模糊,更多高級的鼠標經(jīng)過事件特效等等
當(dāng)前文章:從青銅到王者,10個css3偽類使用技巧和運用
網(wǎng)頁地址:http://www.chinadenli.net/article22/gcchjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、、域名注冊、微信公眾號、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)