在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 網頁設計教程 > 詳細頁面

CSS屆的繪圖板CSS Paint API簡介

CSS屆的繪圖板CSS Paint API簡介

更新時間:2025-11-11 文章作者:未知 信息來源:網絡 閱讀次數:

網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立...
網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。
本篇文章給大家帶來的內容是關于CSS屆的繪圖板CSS Paint API簡介,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

一、把Canvas圖片作為CSS背景圖片

CSS Paint API可以簡單理解為(實際不能等同)把Canvas畫布作為普通元素的背景圖片。

也就是CSS的background-image就是一個Canvas,我們可以利用Canvas絕大多數API繪制各種復雜有趣的圖形效果,以一種更高效的方式豐富web頁面元素的視覺展現。例如,藍色按鈕不僅僅是個藍色背景,上面還有白云漂漂的效果,想想就很棒!

二、一個簡單的案例了解CSS Paint API

例如,我們希望創建一個透明圖片背景。類似下面這樣:

下載.png

則完整的CSS代碼和JS部分代碼如下:

.box {
width: 180px; height: 180px;
/* transparent-grid自己命名 */
background-image: paint(transparent-grid);
}

然后繪制圖形的JS務必作為模塊引入,例如,建一個名為paint-grid.js的文件,在頁面上引入:

if (window.CSS) {
CSS.paintWorklet.addModule('paint-grid.js');
}

paint-grid.js文件代碼如下:

// transparent-grid命名和CSS中的對應
registerPaint('transparent-grid', class {
paint(context, size) {
// 這里就是繪制的代碼了…
}
});

以上就是CSS Paint API使用的固定套路:

CSS中paint(abc);

JS添加模塊CSS.paintWorklet.addModule(‘xxx.js’);

xxx.js中代碼套路固定,在下面注釋位置寫繪制代碼即可;

registerPaint('abc', class {
paint(context, size, properties) {
// 繪制代碼在這里…
}
});

其中paint(context, size)中的兩個參數可以稍微介紹下:

context

為繪制上下文,全稱是PaintRenderingContext2D,和Canvas的CanvasRenderingContext2D是近親,API全部來自Canvas,一模一樣,不過由于安全限制,有些Canvas中的有些API是不能使用的,可用和不可用的API見下表:

微信截圖_20181127164151.png

size

size是一個包含了繪制尺寸的對象,數據結構如下:

{
width: 180,
height: 180
}

size的大小受到background-size屬性大小的影響,因此,對于重復背景,可以借助background-repeat進行平鋪循環,不用非得在繪制的JS代碼中循環。例如,下面即將要展示的demo效果,也可以這么實現,CSS部分:

.box {
width: 180px; height: 180px;
background-image: paint(transparent-grid);
background-size: 16px 16px;
}

然后,paint-grid.js中只需要填充白-灰-灰-白,4個格子就好了,無需循環。

properties

可以用來獲得get到的CSS屬性和屬性值,包括CSS變量值;以及其他一些參數。

眼見為實,您可以狠狠地點擊這里:CSS Paint API繪制透明格子作為背景demo(目前僅Chrome有效果)

透明格子效果demo

paint-grid.js中的完整繪制代碼如下:
registerPaint('transparent-grid', class {
paint(context, size) {
// 兩個格子顏色
var color1 = '#fff', color2 = '#eee';
// 格子尺寸
var units = 8;
// 橫軸數軸循環遍歷下
for (var x = 0; x < size.width; x += units) {
for (var y = 0; y < size.height; y += units) {
context.fillStyle = (x + y) % (units * 2) === 0 ? color1 : color2;
context.fillRect(x, y, units, units);
}
}
}
});

補充:

類似格子這類重復背景,可以借助background-repeat進行平鋪循環,不用非得在繪制的JS代碼中循環,不過需要借助background-size屬性幫助,改變繪制的尺寸。例如,上面demo效果,也可以這么實現,CSS部分:

.box {
width: 180px; height: 180px;
background-image: paint(transparent-grid);
background-size: 16px 16px;
}

然后,paint-grid.js中只需要填充白-灰-灰-白,4個格子就好了,無需循環。

registerPaint('transparent-grid', class {
paint(context, size) {
// 兩個格子顏色
var color1 = '#fff', color2 = '#eee';
// 兩個白色格子
context.fillStyle = color1;
context.fillRect(0, 0, 8, 8);
context.fillRect(8, 8, 8, 8);
// 兩個灰色格子
context.fillStyle = color1;
context.fillRect(0, 4, 8, 8);
context.fillRect(4, 0, 8, 8);
}
});

要更通俗易懂些。

三、CSS變量讓Paint API蓬蓽生輝

上面的案例展示了CSS Paint API的基本使用,但是,雖然看上去新潮,但并沒有體現出CSS Paint API有什么過人之處。

你想啊,我直接用JS加Canvas API繪制一個格子圖案,轉換成Base64,直接作為元素的背景圖片顯示,不也是一樣的效果,而且兼容性更好(IE9+逗支持),所有Canvas API都能用,沒有限制。對比一看,完全沒有使用CSS Paint API的理由嘛!

沒錯!如果我們只是需要一個靜態背景,真不如直接Canvas繪制再轉換成Base64圖片(

toDataURL()方法)或者Blob圖片(toBlob()方法)。

CSS Paint API的優勢在于:其作為一個CSS屬性值,渲染是實時的,自動跟著瀏覽器重繪的,因此,只要我們的繪制是和CSS變量相關聯的,所有的渲染效果都會實時刷新重繪,這可就牛逼大了!

還是上面的透明格子例子,格子的顏色以及格子的尺寸,我們可以將其作為CSS變量提取出來,如下:

.box {
width: 180px; height: 180px;
--color1: #fff;
--color2: #eee;
--units: 8;
background: paint(custom-grid);
}

這些定義的變量我們可以在繪制的時候獲取到,示意如下:

registerPaint('custom-grid', class {
// 獲取3個變量
static get inputProperties() {
return [
'--color1',
'--color2',
'--units'
]
}
paint(context, size, properties) {
// 兩個格子顏色
var color1 = properties.get('--color1')。toString();
var color2 = properties.get('--color2')。toString();
// 格子尺寸
var units = Number(properties.get('--units'));
// 繪制代碼,和之前一樣…
}
});

但是,如果我們修改了CSS代碼中定義的變量值,則,我們可以看到Paint背景圖實時變化效果.

grid-size.gif

實時改變變量后的尺寸變化

眼見為實,您可以狠狠地點擊這里:CSS變量外加Paint API繪制透明格子demo

無需額外的定時器,真實時渲染,控制非常方便。

配合CSS Properties & Values API,把--units等變量全部注冊為合法的CSS屬性,則,我們就能使用transition和animation屬性純CSS控制Paint背景圖的運動和動畫了,按鈕上云朵漂漂的效果完全不在話下。

四、Houdini,兼容與其他

本文介紹的CSS Paint API是CSS Houdini的一部分,最后提到的CSS Properties & Values API也是,是目前Chrome已經支持的一部分API。CSS houdini可以自定義CSS屬性,布局等,未來不可限量。

由于兼容性的問題,如果想要在實際項目中使用CSS Paint API,還需要做兼容處理,例如:

.box {
width: 180px; height: 180px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMElEQVQ4T2P8////fwY84P379/ikGRhHDRgWYfDu3Tu86UBQUBB/Ohg1gIFx6IcBABlfVjmYTYi7AAAAAElFTkSuQmCC);
background: paint(transparent-grid, whatever);
}

CSS Paint API更適用于動態場景,適合實現需要實時繪制渲染的需求;如果是純靜態展示,直接就用JS加Canvas實現得了,沒必要為了技術而技術。

最后,再說點其它你可能感興趣的東西。對于本文的透明格子效果,其實最好的實現方法是直接CSS background繪制,利用線性漸變和CSS3多背景。

代碼如下:

.box {
width: 180px; height: 180px;
background-color: #fff;
background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee), linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
background-size: 16px 16px;
background-position: 0 0, 8px 8px;
}

尺寸控制非常方便,天然支持animation動畫。

以上就是對CSS屆的繪圖板CSS Paint API簡介的全部介紹,如果您想了解更多有關CSS3教程,請關注PHP中文網。

以上就是CSS屆的繪圖板CSS Paint API簡介的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • www.51色.com| 男人添女人下面高潮视频| 日韩欧美一区三区| 国产美女在线一区| 日韩欧美猛交xxxxx无码| 国产麻豆电影在线观看| 亚洲一区日韩精品| 中文av字幕在线观看| 在线观看免费的av| 日本在线观看视频一区| 精品久久免费观看| 免费的av在线| 日日摸日日碰夜夜爽无码| 18岁网站在线观看| 免费观看成人网| 亚洲一区二区福利视频| 午夜探花在线观看| 国产精品333| 牛夜精品久久久久久久| 欧洲美女亚洲激情| 日韩伦理在线免费观看| 成人一级片网站| 五月婷婷之婷婷| 亚洲五码在线观看视频| 精品视频免费在线播放| 99蜜桃臀久久久欧美精品网站| 一本久道综合色婷婷五月| 亚洲 欧美 另类人妖| 成年人三级视频| 91激情视频在线| 欧美亚洲色图视频| 中文字幕国产免费| 一本久道高清无码视频| 一道本视频在线观看| 真人做人试看60分钟免费| 国产97在线 | 亚洲| 亚洲综合伊人久久| 黄色影院一级片| 二级片在线观看| 国产精品视频黄色| 人妻少妇精品久久| 色18美女社区| 999精品网站| 99视频在线免费播放| 色综合五月婷婷| 91在线视频观看免费| 青娱乐自拍偷拍| 一级黄色片在线免费观看| 成人久久久久久久久| 免费看污污视频| 中文字幕久久av| 亚洲精品久久久中文字幕| 青青草原成人网| 国产 日韩 欧美在线| 黄色一级视频播放| 日本福利视频导航| 超碰在线免费av| 国产永久免费网站| 91亚洲精品久久久蜜桃借种| 成人一区二区三| 久久综合久久色| av免费在线播放网站| 日韩欧美精品在线观看视频| 国产极品尤物在线| 久久视频这里有精品| 久久精品无码中文字幕| 日韩a级黄色片| 国产精品久久国产| 日韩精品视频在线观看视频| 精品日韩在线播放| 国产精品va在线观看无码| 日本a级片在线播放| 精品人妻人人做人人爽| 免费极品av一视觉盛宴| 免费人成在线观看视频播放| www.好吊操| 少妇性饥渴无码a区免费| 午夜视频在线瓜伦| 亚洲天堂网2018| 亚洲欧美日本一区二区| 色中文字幕在线观看| 欧美一区二区视频在线播放| 女性女同性aⅴ免费观女性恋 | 国产一级片黄色| 91精品999| 99久久99久久精品| www.爱色av.com| 手机版av在线| 青青青青在线视频| 天天碰免费视频| 国产精品无码乱伦| 大j8黑人w巨大888a片| 国产精品久久久毛片| 性生活免费观看视频| 女人天堂av手机在线| 天堂av8在线| 亚洲中文字幕无码专区| 日本中文字幕二区| 99在线精品免费视频| 一区二区xxx| 久久久性生活视频| 男生操女生视频在线观看| 国产情侣第一页| 日韩av片免费观看| 色综合av综合无码综合网站| 国产一级片中文字幕| 成年人免费大片| 国产乱子伦精品视频| 亚洲精品第三页| 美女福利视频在线| 国产成人生活片| 日日干日日操日日射| 精品久久久久久无码国产| 蜜桃网站在线观看| 久久人人爽人人片| 中文字幕亚洲乱码| 国产成人a亚洲精v品无码| 中文字幕色呦呦| 亚洲这里只有精品| 日本女优爱爱视频| 99蜜桃臀久久久欧美精品网站| 日本xxx免费| youjizz.com亚洲| 天堂av8在线| 激情五月俺来也| www.久久91| 91精品999| 在线观看免费视频污| 午夜剧场在线免费观看| 国产真人无码作爱视频免费| 欧美视频第三页| 密臀av一区二区三区| 青青在线免费观看视频| 北条麻妃在线一区| 国产成人精品视频ⅴa片软件竹菊| 成人性生活视频免费看| 六月婷婷在线视频| 久久国产色av免费观看| 成人3d动漫一区二区三区| 白嫩少妇丰满一区二区| 亚洲黄色a v| 亚洲精品在线视频播放| 中国一级大黄大黄大色毛片| 国产一级黄色录像片| 日韩欧美不卡在线| 黄色片视频在线播放| 国产 porn| 成人手机视频在线| bt天堂新版中文在线地址| 欧美爱爱视频免费看| 欧美激情精品久久久久久小说| 亚洲一级片网站| 国产精品免费看久久久无码| 国产在线播放观看| 99热手机在线| 日本五级黄色片| 亚洲 中文字幕 日韩 无码| 亚洲天堂一区二区在线观看| 欧美乱大交xxxxx潮喷l头像| jizz欧美激情18| 大地资源网在线观看免费官网| 欧美一级在线看| 久久久精品视频国产| 精品一区二区中文字幕| 超碰在线超碰在线| 男人添女人下面高潮视频| 久久久久久久久久毛片| 免费在线观看亚洲视频| 天天干天天曰天天操| 国产精品欧美激情在线观看| 亚洲欧美日韩网站| 久久精品网站视频| 日韩av新片网| 手机在线观看日韩av| 日韩av片网站| 国产乱子伦农村叉叉叉| 麻豆视频传媒入口| 九九热免费在线观看| 色婷婷综合久久久久中文字幕 | 久章草在线视频| 亚洲色婷婷久久精品av蜜桃| 国产一二三区av| 黄色片一级视频| 欧美综合在线播放| 久久久天堂国产精品| 中文字幕黄色大片| 18禁男女爽爽爽午夜网站免费| 欧美一二三不卡| 亚洲欧美一二三| 日韩欧美理论片| 国产三级精品三级在线| 手机看片福利日韩| 黑森林精品导航| 亚洲黄色小视频在线观看| 日本成人中文字幕在线| 国产免费成人在线| 97国产精东麻豆人妻电影| 日韩伦理在线免费观看| 国产av天堂无码一区二区三区| 青青青在线观看视频|