成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

css揭秘筆記——視覺效果

skinner / 2708人閱讀

摘要:實(shí)現(xiàn)染色效果的混合模式是,它會(huì)保留上層元素的高亮信息,并從它的下層吸取色相和飽和度信息。當(dāng)我們只有一個(gè)背景圖像及一個(gè)透明背景色時(shí),就不會(huì)有任何混合效果。

投影

知識(shí)點(diǎn)

box-shadow:      [inset]?

注意:

在元素正下方的投影被裁切掉了,是沒有的;而text-shadow不同,文字下方的投影不會(huì)被裁切。

box-shadow的第三個(gè)參數(shù)是模糊半徑,假如設(shè)置4px,則投影尺寸比元素本身大8px.

box-shadow第四個(gè)參數(shù)是擴(kuò)張半徑,指定整數(shù)是擴(kuò)大,負(fù)數(shù)為縮小。

單側(cè)投影
box-shadow: 0 10px 8px -8px black;

鄰邊投影
box-shadow: 6px 6px 12px -6px black;

雙側(cè)投影

box-shadow無(wú)法多帶帶指定水平或垂直方向上的放大或縮小,所以只能用兩層投影達(dá)到目的。

box-shadow: 6px 0 12px -6px black, -6px 0 12px -6px black;

不規(guī)則投影

box-shadow給矩形或用border-radius生成的形狀加投影很完美,但給除此之外的形狀加投影,就不太行了。比如:

border:10px dashed orange; 
box-shadow: 2px 2px 3px rgba(0,0,0,.5);

可以使用css新屬性濾鏡filter,使用一些函數(shù),如blur()、grayscale()、drop-shadow()等等,就可以達(dá)到想要的效果。drop-shadow()的參數(shù)除了沒有擴(kuò)張半徑和關(guān)鍵字inset,其他和box-shadow一樣,但它不支持逗號(hào)分隔的多層投影語(yǔ)法。

border:10px dashed orange; 
filter: drop-shadow(2px 2px 3px rgba(0,0,0,.5));

background: linear-gradient(45deg, transparent 20px, orange 0) left bottom /50%,
    linear-gradient(-45deg, transparent 20px, orange 0) right bottom /50%,
    linear-gradient(135deg, transparent 20px, orange 0) left top /50%,
    linear-gradient(-135deg, transparent 20px, orange 0) right top /50%;
background-repeat: no-repeat;
filter: drop-shadow(2px 2px 5px rgba(0,0,0,.5));

.talkbox{
    background-color: orange;
    border-radius: 20px;
    position: relative;
    filter: drop-shadow(2px 2px 3px rgba(0,0,0,.5));
}
.talkbox::after{
    content: "";
    display: block;
    box-sizing: border-box;
    width: 50px;
    height: 50px;
    border-left: 25px solid orange;
    border-top: 25px solid transparent;
    border-bottom: 25px solid transparent;
    position: absolute;
    top: 25%;
    left: 100%;
}

需要注意的是,任何非透明的部分都會(huì)被drop-shadow()打上投影。(這并不是一種很好的體驗(yàn))

color: orange; border: 10px solid; 
text-shadow: 2px 2px yellowgreen; 
filter: drop-shadow(2px 2px 2px black);

染色效果

使用filter給圖片添加濾鏡效果。主要用到了sepia()、saturate()hue-rotate()這些函數(shù)。

原圖

sepia() 降飽和度的橙黃色染色效果

saturate() 提升飽和度

hue-rotate() 把每個(gè)像素的色相進(jìn)行偏移,偏到粉色

還可以加過度動(dòng)畫,最終的代碼是

.filter-img{
    transition: .5s filter;
    filter: sepia(.5) saturate(4) hue-rotate(295deg);
 }

 .filter-img:hover,
 .filter-img:focus{
    filter: none;
 }
混合模式的方案

為了避免上面那種濾鏡方式的褪色和不自然的效果,還可以使用“混合模式”,這種方式控制了上層元素的顏色和下層顏色進(jìn)行混合的方式。實(shí)現(xiàn)染色效果的混合模式是luminosity,它會(huì)保留上層元素的hsl高亮信息,并從它的下層吸取色相和飽和度信息。

具體還可以分為兩種方式。
方式一:

方式二:

.tinted-img{ background: url(./image/flower.jpg); width: 300px; height: 300px; background-size: cover; background-color: hsl(335, 100%, 50%); background-blend-mode: luminosity; transition: .5s background-color; } .tinted-img:hover{ background-color: transparent; }

這里需要說明一下,混合模式不像濾鏡一樣可動(dòng)畫。使用background-blend-mode屬性可以讓每層背景跟它的下層背景進(jìn)行混合。當(dāng)我們只有一個(gè)背景圖像及一個(gè)透明背景色時(shí),就不會(huì)有任何混合效果。所以動(dòng)畫可以在這個(gè)原理上進(jìn)行設(shè)置。

毛玻璃效果

場(chǎng)景:背景是花哨的圖片,在文字下面使用半透明顏色保證文本的可讀性。

Lorem ipsum dolor sit amet...

失敗案例一:

.wrapper{
    background: url(./image/flower.jpg) 0 / cover;
}
.main{
    background: hsla(0, 0%, 100%, .3);
}

字體不清晰,調(diào)高透明度的值:


不太美觀。。。

失敗案例二:
使用blur()濾鏡。

.main{
    filter: blur(2px);
}


(⊙o⊙)… 連字體都模糊了。

解決方案:
按照之前提到過的“平行四邊形”的方案,為偽元素設(shè)置模糊濾鏡,而不會(huì)影響文本。

.wrapper{
    width: 600px; height:300px; 
    background: url(./image/flower.jpg) 0 / cover;
    display: flex;
    justify-content: center;
    align-items: center;
}
.main{
    width: 70%;
    height: 65%;
    padding: 1em;
    font-size: 1.2em;
    background: hsla(0, 0%, 100%, .3);
    position: relative;
    z-index: 1; /*定位元素z-index不為auto時(shí),會(huì)創(chuàng)建層疊上下文*/
    overflow: hidden;
}
.main::before{
    content: "";
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background: url(./image/flower.jpg) 0 / cover;
    filter: blur(20px);
    z-index: -1;/*負(fù)的z-index會(huì)下降到其所在的層級(jí)上下文的背景之上,在這里也就是.main元素的背景之上,文本以下。*/
    margin:-30px; /*由于邊緣的模糊效果會(huì)按模糊半徑的長(zhǎng)度削減,所以要將模糊元素?cái)U(kuò)展出去,同時(shí)父元素要對(duì)延伸出去的部分hidden*/
}

效果出來(lái)了,但是需要說明一點(diǎn),就是層疊順序的問題,如果直接在偽元素設(shè)置z-index為0的話,它會(huì)直接跑到最外層背景顏色下方,所以這個(gè)層疊順序很復(fù)雜,可以參考下文:
深入理解CSS中的層疊上下文和層疊順序

看了文章發(fā)現(xiàn),很多屬性都可以創(chuàng)建層疊上下文,如display:flex、filter、mix-blend-mode等等。

折角效果 45°折角
background: #58a; /*回退樣式*/
background: 
linear-gradient(-135deg, transparent 50%, rgba(0,0,0,.4) 0) no-repeat 100% 0 / 2em 2em,
linear-gradient(-135deg, transparent 1.5em, #58a 0);

注意,1.5em是通過三角形計(jì)算得到,√2em取整為1.5。

其他角度折角

每個(gè)角度都需要復(fù)雜的計(jì)算,這里以30°為例。非45°折角和45°折角不同的是,反折過來(lái)的角是不一樣的。所以實(shí)現(xiàn)思路就不同了。使用偽元素模擬折角,計(jì)算得到的長(zhǎng)寬和背景切角相反;以右下角為中心逆時(shí)針旋轉(zhuǎn)30°;再向上移動(dòng)一段距離(要調(diào)動(dòng)初中幾何的功底了),就可以了;最后加點(diǎn)裝飾更真實(shí)。

.note{
    background: #58a; 
       background:linear-gradient(-150deg, transparent 1.5em, #58a 0);
    position: relative;
    /*裝飾*/
    border-radius: .5em;
}
.note::before{
    content: "";
    width: 1.73em;
    height: 3em;
    position: absolute;
    top: 0;
    right: 0;
    background: linear-gradient(to left bottom, transparent 50%, rgba(0,0,0,.2) 0, rgba(0,0,0,.4));
    transform-origin: bottom right;
    transform: translateY(-1.3em) rotate(-30deg); /*注意:先平移再旋轉(zhuǎn)和先旋轉(zhuǎn)再平移效果是不一樣的!*/
    /*裝飾*/
    border-bottom-left-radius: inherit;
    box-shadow: -.2em .2em .3em -.1em rgba(0,0,0,.15);
}

代碼不夠DRY,只能使用預(yù)處理器的mixin了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/112722.html

相關(guān)文章

  • css編碼技巧【css揭秘讀書筆記

    摘要:最近在看揭秘,于是寫了文章來(lái)作筆記,除此以外還會(huì)補(bǔ)充一些自己遇到的筆試題。舉例說明以上的代碼有什么問題呢如果需要改變字號(hào),那么同時(shí)需要調(diào)整行高。那么經(jīng)過修改后的代碼如下關(guān)于使用還是還是百分比,需要根據(jù)具體情況來(lái)決定。 最近在看《css揭秘》,于是寫了文章來(lái)作筆記,除此以外還會(huì)補(bǔ)充一些自己遇到的筆試題。希望大家都有所收獲。 css編碼技巧 盡量減少代碼重復(fù) 在實(shí)踐中,代碼可維護(hù)性的最大要...

    Miyang 評(píng)論0 收藏0
  • css揭秘筆記——用戶體驗(yàn)

    摘要:使用透明邊框增大熱區(qū)面積,但和并不能阻止背景擴(kuò)大到邊框下面模擬原有邊框自定義復(fù)選框思路使用與復(fù)選框綁定的的偽元素模擬一個(gè)勾選框,可以自定義其樣式,將原來(lái)的復(fù)選框隱藏。這種方式被稱為復(fù)選框。 選用合適的鼠標(biāo)光標(biāo) css3提供了一大批內(nèi)建光標(biāo)(cursor)其中某些光標(biāo)很突出,因?yàn)橹恍枰ㄙM(fèi)極少的代碼,就可以迅速地提升大量網(wǎng)頁(yè)應(yīng)用的可用性。比如禁用(not-allowed),比如,公共觸摸...

    huaixiaoz 評(píng)論0 收藏0
  • [CSS]《CSS揭秘》第四章——視覺效果

    摘要:投影單側(cè)投影鄰邊投影雙側(cè)投影模糊距離陰影尺寸不規(guī)則投影濾鏡可接受的參數(shù)基本上跟屬性是一樣的,但不包括擴(kuò)張半徑,不包括關(guān)鍵字,也不支持逗號(hào)分割的多層投影語(yǔ)法毛玻璃效果折角效果 投影 單側(cè)投影 box-shadow:0px 10px 10px -5px black; showImg(https://segmentfault.com/img/bVbcVC8?w=345&h=352); 鄰邊投...

    AWang 評(píng)論0 收藏0
  • CSS揭秘》:切角效果

    摘要:切角效果切角效果是一種常見的視覺風(fēng)格設(shè)計(jì)。但是現(xiàn)在在里,依然無(wú)法簡(jiǎn)單的生成切角效果。原文位于揭秘切角效果。裁切路徑方案使用裁切路徑可以在裁切任意多邊形,下面的代碼可以切除和上文一樣的效果。改變切角深度時(shí)需要同時(shí)改變個(gè)地方。 切角效果 切角效果是一種常見的視覺風(fēng)格設(shè)計(jì)。但是現(xiàn)在在CSS里,依然無(wú)法簡(jiǎn)單的生成切角效果。 css漸變 使用CSS漸變[linear-parent][1]可以形成...

    JerryZou 評(píng)論0 收藏0
  • css揭秘筆記——字體排版

    摘要:現(xiàn)實(shí)中的文字效果圖版印刷效果空心字效果效果可以說有點(diǎn)差了,所以不適合描邊寬的樣式。 插入換行 Name: zhanglu Email: [email protected] [email protected] Location: Earth 如何讓上面這一段HTML變成這個(gè)樣子: showI...

    XboxYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<