溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

從青銅到王者,10個css3偽類使用技巧和運(yùn)用

發(fā)布時間:2020-08-10 22:31:36 來源:ITPUB博客 閱讀:201 作者:智云編程 欄目:web開發(fā)

偽類經(jīng)常與偽元素混淆,偽元素的效果類似于通過添加一個實(shí)際的元素才能達(dá)到,而偽類的效果類似于通過添加一個實(shí)際的類來達(dá)到。實(shí)際上css3為了區(qū)分兩者,已經(jīng)明確規(guī)定了偽類用一個冒號來表示,而偽元素則用兩個冒號來表示。偽類與偽元素的本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素。具體的偽類和偽元素相關(guān)知識本文就不深入,下面介紹一下從青銅到王者10個css3偽類使用技巧和運(yùn)用。

青銅-1、偽類實(shí)現(xiàn)盒子陰影

眾所周知,Animate/transition box-shadow 可以使用 box-shadow屬性 來實(shí)現(xiàn)盒子陰影效果,但repaint消耗較多,于是這里提出 通過修改偽元素的透明度來實(shí)現(xiàn)盒子陰影

實(shí)現(xiàn)原理:

**通過改變透明度,這樣從一個非默認(rèn)值更新它的值,就不需要承擔(dān)任何重繪

這里設(shè)置一個空的偽元素設(shè)置陰影透明度為0隱藏,再通過鼠標(biāo)懸停恢復(fù)它的透明度,下面是傳統(tǒng)和偽類實(shí)現(xiàn)的代碼對比

<div class="before">
    <h2>Before</h2>
    <p>Animate/transition box-shadow 可以使用box-shadow屬性來實(shí)現(xiàn)盒子陰影效果,但重繪消耗較多</p>
</div>
 <hr />
<div class="after">
    <h2>After</h2>
    <p>通過修改偽元素的透明度來實(shí)現(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;
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

青銅-2、偽元素:before實(shí)現(xiàn)的面包屑導(dǎo)航欄

<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;
}

效果:

從青銅到王者,10個css3偽類使用技巧和運(yùn)用

青銅-3、偽元素實(shí)現(xiàn)懸停時按鈕填充和邊界浮動動畫

從青銅到王者,10個css3偽類使用技巧和運(yùn)用

青銅-4、偽類after實(shí)現(xiàn)的三角箭頭

實(shí)現(xiàn)原理:三邊設(shè)置邊框,箭頭指向的那個方向的border不用設(shè)置,位于箭頭兩邊的邊框顏色為透明(transparent),對邊為主體邊框顏色(較大的)/主體背景顏色(較小的),因?yàn)槲覀円羞吙蝾伾娜羌^,當(dāng)?shù)谝粋€箭頭(較大的)被第二個箭頭(較小的)通過準(zhǔn)確覆蓋之后剩下沒被覆蓋的邊緣就是合成三角箭頭的邊框了,其顏色就是較大的那個三角箭頭的顏色,可調(diào)。而較小的那個三角箭頭的顏色要設(shè)置成主體顏色,進(jìn)行負(fù)值定位偏移時要把主體邊框蓋住,從而與主體合在一起了

<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;
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

青銅-5、偽類after實(shí)現(xiàn)的圖片箭頭

從青銅到王者,10個css3偽類使用技巧和運(yùn)用

青銅-6、偽元素實(shí)現(xiàn)帶角度的底部邊界(傾斜的邊界)

原理:修改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%;
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

王者-1、偽元素和平移(translate)變換實(shí)現(xiàn)的提示框

 <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;
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

王者-2、使用CSS3偽元素實(shí)現(xiàn)的自動打字動畫

原理:Typing Animation with Pseudo-Elements 看起來是打字,其實(shí)是使用偽元素覆蓋在字符串上,然后逐漸減少偽元素覆蓋寬度來實(shí)現(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;
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

王者-3、CSS3 偽元素構(gòu)建的文章水印背景

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);
}
從青銅到王者,10個css3偽類使用技巧和運(yùn)用

王者-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,可以使用+號(代表相鄰元素)來實(shí)現(xiàn)相同功能

2、Google的IE9.js是解決IE5.5到IE8 CSS3特性兼容性問題的JS庫

最后

CSS的世界很美好,每個知識點(diǎn)都可以值得深入研究和實(shí)踐,對于偽類、偽元素也有很多土味特效可以寫出來,比如說圖片遮罩、圖片背景模糊,更多高級的鼠標(biāo)經(jīng)過事件特效等等


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI