從青銅到王者,10個css3偽類使用技巧和運用
偽類經常與偽元素混淆,偽元素的效果類似於透過新增一個實際的元素才能達到,而偽類的效果類似於透過新增一個實際的類來達到。實際上css3為了區分兩者,已經明確規定了偽類用一個冒號來表示,而偽元素則用兩個冒號來表示。偽類與偽元素的本質區別就是是否抽象創造了新元素。具體的偽類和偽元素相關知識本文就不深入,下面介紹一下從青銅到王者10個css3偽類使用技巧和運用。
青銅-1、偽類實現盒子陰影
眾所周知,Animate/transition box-shadow 可以使用 box-shadow屬性 來實現盒子陰影效果,但repaint消耗較多,於是這裡提出 透過修改偽元素的透明度來實現盒子陰影
實現原理:
**透過改變透明度,這樣從一個非預設值更新它的值,就不需要承擔任何重繪
這裡設定一個空的偽元素設定陰影透明度為0隱藏,再透過滑鼠懸停恢復它的透明度,下面是傳統和偽類實現的程式碼對比
<div class="before"> <h1>Before</h1> <p>Animate/transition box-shadow 可以使用box-shadow屬性來實現盒子陰影效果,但重繪消耗較多</p> </div> <hr /> <div class="after"> <h1>After</h1> <p>透過修改偽元素的透明度來實現同樣的效果,沒有重繪消耗</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; }
青銅-2、偽元素:before實現的麵包屑導航欄
<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; }
效果:
青銅-3、偽元素實現懸停時按鈕填充和邊界浮動動畫
青銅-4、偽類after實現的三角箭頭
實現原理:三邊設定邊框,箭頭指向的那個方向的border不用設定,位於箭頭兩邊的邊框顏色為透明(transparent),對邊為主體邊框顏色(較大的)/主體背景顏色(較小的),因為我們要有邊框顏色的三角箭頭,當第一個箭頭(較大的)被第二個箭頭(較小的)透過準確覆蓋之後剩下沒被覆蓋的邊緣就是合成三角箭頭的邊框了,其顏色就是較大的那個三角箭頭的顏色,可調。而較小的那個三角箭頭的顏色要設定成主體顏色,進行負值定位偏移時要把主體邊框蓋住,從而與主體合在一起了
<div class='container'> <img alt='' src=' <div class='arrow-left'></div> </div> <div class='container new'> <div class='arrow-right'></div> <img alt='' src=' </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; }
青銅-5、偽類after實現的圖片箭頭
青銅-6、偽元素實現帶角度的底部邊界(傾斜的邊界)
原理:修改webkit-transform: skewY屬性來修改傾斜度(旋轉也是一樣的道理)
.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%; }
王者-1、偽元素和平移(translate)變換實現的提示框
<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; }
王者-2、使用CSS3偽元素實現的自動打字動畫
原理:Typing Animation with Pseudo-Elements 看起來是打字,其實是使用偽元素覆蓋在字串上,然後逐漸減少偽元素覆蓋寬度來實現的視覺效果
<div> <h1>Typing Animation</h1> <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; }
王者-3、CSS3 偽元素構建的文章水印背景
h1 { position: relative; margin: 0; font-weight: bold; letter-spacing: -0.05rem; line-height: 1; text-transform: uppercase; z-index: 10; } h1: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); }
王者-4、CSS3 用偽元素做頁碼摘要
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); }
王者-5、偽類相容性瞭解一下
1、IE8不支援CSS3中很多特性,比如偽元素nth-child,可以使用+號(代表相鄰元素)來實現相同功能
2、Google的IE9.js是解決IE5.5到IE8 CSS3特性相容性問題的JS庫
最後
CSS的世界很美好,每個知識點都可以值得深入研究和實踐,對於偽類、偽元素也有很多土味特效可以寫出來,比如說圖片遮罩、圖片背景模糊,更多高階的滑鼠經過事件特效等等
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2641718/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從青銅到王者10個css3偽類使用技巧和運用,瞭解一哈CSSS3
- Nvidia Triton使用教程:從青銅到王者
- React 從青銅到王者系列教程之倔強青銅篇React
- 從青銅到王者,揭秘 Serverless 自動化函式最佳配置Server函式
- 從青銅到王者:運維的六大段位,你在哪一段?運維
- 大屏視覺化從青銅到王者的進階,你只差了一個「元件複用」 !視覺化元件
- 從“青銅”到“王者”,製造企業的數字化闖關記
- CSS3偽類和偽元素CSSS3
- 一名專案經理,從青銅到王者都需要經歷什麼?
- css3 中的偽類和偽元素CSSS3
- 併發王者課-青銅07:順藤摸瓜-如何從synchronized中的鎖認synchronized
- 併發王者課-青銅7:順藤摸瓜-如何從synchronized中的鎖認識Monitorsynchronized
- 青銅時代
- 用 mpvue 寫個【微博-青銅版】微信小程式Vue微信小程式
- 數棧人:從青銅到星耀,10年大資料人的奮戰晉級之路大資料
- 併發王者課-青銅8:分工協作-從本質認知執行緒的狀態和動作方法執行緒
- 併發王者課-青銅5:一探究竟-如何從synchronized理解Java物件頭中的鎖synchronizedJava物件
- Vue 之青銅 I ⭐Vue
- Vue 之青銅 I ⭐⭐Vue
- 【3y】從零單排學Redis【青銅】Redis
- 偽類和偽元素
- Css 偽類/偽類物件使用整理_使用案例CSS物件
- 06-偽類和偽元素
- css3偽元素選擇器before 和 after 的使用CSSS3
- 併發王者課-青銅10:千錘百煉-如何解決生產者與消費者經典問題
- 併發王者課-青銅9:防患未然-如何處理執行緒中的異常執行緒
- 從DoorDash安卓應用中學到的8個技巧安卓
- 王者榮耀墨子技能解析與使用技巧,王者榮耀墨子大招使用技巧
- 運維乾貨 | 12 個實用的 Vim 使用技巧運維
- CSS中一些利用偽類、偽元素和相鄰元素選擇器的技巧CSS
- [CSS] 偽元素和偽類,::before 和 :before 區別CSS
- 靈活運用JS開發技巧(66個實用技巧)JS
- Node 入門級別的介面(青銅)
- 併發王者課-青銅03:興利除弊-如何理解多執行緒帶來的安全問題執行緒
- 偽元素和偽類的區別總結
- CSS偽類使用詳解CSS
- [Django青銅修煉手冊] 初識DjangoDjango
- Vue 之青銅 I ⭐⭐⭐[用 webpack-dev-server 實現修改實時生效]VueWebdevServer