亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

不可思議的CSS之clip-path

walterrwu / 1292人閱讀

摘要:一個(gè)用來(lái)生成各種形狀包括隨意拖拉自定義并且可以直接生成代碼的網(wǎng)站。兼容性目前兼容性較差,和直接不支持,考慮兼容性的同學(xué)可以暫時(shí)等等。透明區(qū)域表示被裁剪的區(qū)域基本圖形定義一個(gè)矩形。語(yǔ)法說(shuō)明可選,表示填充規(guī)則用來(lái)確定該多邊形的內(nèi)部。

本文首發(fā)于 我的博客

曾經(jīng)和某位朋友在聊天中討論過(guò)這樣一個(gè)話題:綜合90%的網(wǎng)站的布局以及頁(yè)面中的元素不是方的,就是圓的。就像所有的顏色都是由三原色(RGB)構(gòu)成的一樣,所有規(guī)則的形狀似乎也都是由方和圓組成的;拋開(kāi)設(shè)計(jì)效果的好看與否不說(shuō),似乎不規(guī)則的設(shè)計(jì)在實(shí)現(xiàn)(CSS)成本上也是一個(gè)麻煩,畢竟在CSS3之前,我們實(shí)現(xiàn)一個(gè)圓都要切圖,更何況那些復(fù)雜的多邊形。好在CSS3時(shí)代的到來(lái),尤其是CSS3在借鑒并增加了眾多SVG屬性的今天,使用純CSS繪制一個(gè)多邊形已經(jīng)不再是什么難事。文章中要介紹的clip-path這個(gè)屬性也是一個(gè)借鑒了SVGclipPath的借鑒品(確切的說(shuō)應(yīng)該是css clip屬性(已被廢棄)的替代品,svg clip-path屬性的延伸品?)。

clip-path介紹

clip-path 直譯過(guò)來(lái)就是裁剪路徑,使用SVG或形狀定義一個(gè)HTML元素的可見(jiàn)區(qū)域的方法。想象一下你在Photoshop中勾勒路徑的場(chǎng)景。MDN上是這樣介紹 clip-path的:

clip-path屬性可以防止部分元素通過(guò)定義的剪切區(qū)域來(lái)顯示,僅通過(guò)顯示的特殊區(qū)域。剪切區(qū)域是被URL定義的路徑代替行內(nèi)或者外部svg,或者定義路線的方法例如circle().。clip-path屬性代替了現(xiàn)在已經(jīng)棄用的剪切 clip屬性。

文字過(guò)于苦澀,直接來(lái)看看效果:

效果演示

截圖基于clip-path在線神器 - http://bennettfeely.com/clippy 。一個(gè)用來(lái)生成各種形狀(包括隨意拖拉自定義)并且可以直接生成代碼的網(wǎng)站。 博客 前端WEB圈 頁(yè)面banner上的形狀就直接使用該網(wǎng)站生成。

效果雖然吊炸天,兼容性卻是個(gè)問(wèn)題。

兼容性

clip-path目前兼容性較差,IE和Edge直接不支持,考慮兼容性的同學(xué)可以暫時(shí)等等?。由于瀏覽器更新?lián)Q代太快,很難說(shuō)一段時(shí)間后clip-path的兼容性又是如何,因此這里不再截圖,可以直接點(diǎn)擊這里來(lái)查看。

基本語(yǔ)法
 | [  ||  ] | none

/*屬性說(shuō)明*/
 = 
 =  |  |  | 
 =  | fill-box | stroke-box | view-box
語(yǔ)法詳解和示例

為了更明顯的表示裁剪區(qū)域,我給每個(gè)demo添加了同樣寬高的透明背景,其中色塊表示被裁剪后的部分,透明背景表示被裁剪的區(qū)域。

同時(shí),文章底部有demo可運(yùn)行查看具體效果。透明區(qū)域表示被裁剪的區(qū)域

基本圖形:inset

inset() : 定義一個(gè)矩形 。注意,定義矩形不是rect,而是 inset。

//語(yǔ)法
inset( {1,4} [ round  ]? )
//說(shuō)明
inset()可以傳入5個(gè)參數(shù),分別對(duì)應(yīng)top,right,bottom,left的裁剪位置,round radius(可選,圓角)

//示例
clip-path: inset(2em 3em 2em 1em round 2em);

基本圖形:circle

circle() : 定義一個(gè)圓 。

//語(yǔ)法
circle( [  ]? [ at  ]? )
//說(shuō)明
circle()可以傳人2個(gè)可選參數(shù);
1. 圓的半徑,默認(rèn)元素寬高中短的那個(gè)為直徑,支持百分比
2. 圓心位置,默認(rèn)為元素中心點(diǎn)
//半徑公式
如果半徑使用百分比:圓的半徑 = (sqrt(width^2+height^2)/sqrt(2)) * 百分比 

//示例
clip-path: circle(30% at 150px 120px);

基本圖形:ellipse

ellipse() : 定義一個(gè)橢圓 。

//語(yǔ)法
ellipse( [ {2} ]? [ at  ]? )
//說(shuō)明
ellipse()可以傳人3個(gè)可選參數(shù);
1. 橢圓的X軸半徑,默認(rèn)是寬度的一半,支持百分比
2. 橢圓的Y軸半徑,默認(rèn)是高度的一半,支持百分比
3. 橢圓中心位置,默認(rèn)是元素的中心點(diǎn)

//示例
clip-path: ellipse(45% 30% at 50% 50%);

基本圖形:polygon

polygon() : 定義一個(gè)多邊形 。

//語(yǔ)法
polygon( ? , [   ]# )
//說(shuō)明
可選,表示填充規(guī)則用來(lái)確定該多邊形的內(nèi)部??赡艿闹涤衝onzero和evenodd,默認(rèn)值是nonzero
后面的每對(duì)參數(shù)表示多邊形的頂點(diǎn)坐標(biāo)(X,Y),也就是連接點(diǎn)

//示例
clip-path: polygon(50% 0,100% 50%,0 100%);

使用demo浪起來(lái)

如果無(wú)法顯示,請(qǐng)自備梯子?,你懂得~??

clip-path-demo 綜合實(shí)例

如上知識(shí)點(diǎn)再加上CSS3的animation動(dòng)畫(huà)和linear-gradient漸變屬性,就可以完成 前端WEB圈 頁(yè)面上的多形狀動(dòng)畫(huà)Banner效果:

核心樣式
.shape1 {
  background-image: linear-gradient(to bottom right, #183de7, #48cffe 80%);
  clip-path: inset(0 0 0 0 round 100px);
}
.shape2 {
  clip-path: inset(0 0 0 0 round 100px);
  background-image: linear-gradient(to bottom right, #183de7, #48cffe 80%);
  transform: rotate(45deg);
}
.shape3 {
  width: 960px;
  height: 960px;
  border-radius: 50%/100% 0;
  background: #00ffff;
}
.shape4,.shape5 {
  clip-path: circle();
  background-image: linear-gradient(to right, #0db54c, #00697b 40%);
}
.shape6 {
  clip-path: polygon(0 0, 50% 100%, 100% 0);
  background-image: linear-gradient(to right, #f76b71, #a41058 60%);
}
在線DEMO clip-path-animation 其他屬性

除了 inset, circle basic-shape屬性外,clip-path還具有url, geometry-box等屬性值,具體可以參考MDN上的介紹。

總結(jié)

clip-path之前,我們可以利用盒模型,利用border-radius, border,transform,box-shadow等來(lái)創(chuàng)建諸如矩形,圓形,橢圓,三角形等一些簡(jiǎn)單的形狀,clip-path為我們提供了多邊形的創(chuàng)建方案,盡管它現(xiàn)在的支持性,兼容性還不是很好,但我們完全可以在一些特定的場(chǎng)景下使用它來(lái)代替圖片了。當(dāng)然,clip-path的作用不僅僅是如我上面介紹的那般簡(jiǎn)單,她還有很多奇妙的用處,尤其是配合動(dòng)畫(huà)一起使用,感興趣的同學(xué)可以深入之……

參考

https://developer.mozilla.org/zh-CN/docs/Web/CSS/clip-path

https://caniuse.com/#search=clip-path

http://bennettfeely.com/clippy/

本文首發(fā)于 我的博客

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

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

相關(guān)文章

  • 使用CSS3clip-path(裁剪路徑)實(shí)現(xiàn)剪貼區(qū)域顯示以及實(shí)例實(shí)現(xiàn)圖片漸變

    摘要:介紹直譯過(guò)來(lái)就是裁剪路徑,使用或形狀定義一個(gè)元素的可見(jiàn)區(qū)域的方法。想象一下你在中勾勒路徑的場(chǎng)景。上是這樣介紹的屬性可以防止部分元素通過(guò)定義的剪切區(qū)域來(lái)顯示,僅通過(guò)顯示的特殊區(qū)域。屬性代替了現(xiàn)在已經(jīng)棄用的剪切屬性。clip-path介紹 clip-path 直譯過(guò)來(lái)就是裁剪路徑,使用SVG或形狀定義一個(gè)HTML元素的可見(jiàn)區(qū)域的方法。想象一下你在Photoshop中勾勒路徑的場(chǎng)景。MDN上是這樣...

    番茄西紅柿 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.38 - 神奇 CSS

    摘要:層疊即表示允許以多種方式來(lái)描述樣式,一個(gè)元素可以被渲染呈現(xiàn)出多種樣式。可以讓屬性的變化過(guò)程持續(xù)一段時(shí)間,而不是立即生效。比如,將元素的顏色從白色改為黑色,通常這個(gè)改變是立即生效的,使用后,將按一個(gè)曲線速率變化。 showImg(https://segmentfault.com/img/bVZwyL?w=900&h=385); CSS 的全稱(chēng)是 Cascading Style Sheet...

    elliott_hu 評(píng)論0 收藏0
  • 從隱藏元素談起

    摘要:前言說(shuō)起隱藏元素我想每一個(gè)前端都能說(shuō)起幾種,但能說(shuō)全的我想就不是很多了。因此,元素依然存在原來(lái)的位置,占據(jù)空間也可響應(yīng)事件。占據(jù)空間,無(wú)法點(diǎn)擊如同屬性,被隱藏的元素依然會(huì)對(duì)我們的網(wǎng)頁(yè)布局起作用。 前言 ????說(shuō)起隱藏元素我想每一個(gè)前端er都能說(shuō)起幾種,但能說(shuō)全的我想就不是很多了。博主總結(jié)了幾種隱藏元素的方法,總結(jié)如下表格: ? overflow opacity visibilit...

    XanaHopper 評(píng)論0 收藏0
  • 運(yùn)用clip-pathCSS形狀變換

    摘要:在之前所提到繪制正多邊形的方法,算是純粹利用偽元素來(lái)完成,不過(guò)坦白說(shuō)還有另外一種方法,可以將單一做更多形狀的變換,這種方法就是的,這個(gè)看起來(lái)有點(diǎn)眼熟,因?yàn)樗揪痛嬖谟诶镱^,利用掩碼剪裁的方法,連接坐標(biāo)繪制掩碼區(qū)域,就可以做出許多不同的 在之前所提到繪制正多邊形的方法,算是純粹利用偽元素來(lái)完成,不過(guò)坦白說(shuō)還有另外一種方法,可以將單一div做更多形狀的變換,這種方法就是CSS3的clip...

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

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

0條評(píng)論

walterrwu

|高級(jí)講師

TA的文章

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