為前端開發(fā)者,我們可以利用Web技術在非常多的環(huán)境下開發(fā)應用,為相關的用戶提供服務。其中,以Photoshop為首的Adobe系列工具是我們時常要去面對的一個平臺級應用。Photoshop在圖像處理上有著很強大的功能,用戶量也非常可觀,而且其功能在前端開發(fā)的一些情況下也用得到,因此筆者認為Photoshop相關的Web技術具有很不錯的價值。
本文將引導大家使用JavaScript開發(fā)一個Photoshop插件。
Adobe作為一家歷史悠久的軟件公司,已經(jīng)給開發(fā)者提供了相對成熟的擴展開發(fā)技術棧,被稱作CEP——Common Extensibility Platform(通用擴展平臺)。
CEP擴展基于Web技術,可以在Adobe Photoshop、Adobe Illustrator、Adobe InDesign等全系列應用中運行,并且可以訪問這些應用和外部操作系統(tǒng)環(huán)境的API。
CEP應用的結構可以被分為五個抽象層級:
所謂宿主應用,就是我們CEP擴展運行在的Adobe程序,例如Adobe Photoshop等,同時后文我們也默認CEP的宿主程序是Adobe Photoshop
作為一個類Web應用,上面四層相對前端開發(fā)者來說都比較好理解,這一節(jié)我們來看下ExtendScript層:
ExtendScript腳本可以用三套不同語言去編寫,分別為JavaScript、VBScript和AppleScript。三種語言功能上沒有任何區(qū)別。鑒于本文面向的是各位前端工程師,我們果斷選擇前者,同時文章的后文我們也是默認選擇JavaScript版本的ExtendScript。
ExtendScript有以下特點:
這里的.jsx文件和react用到的.jsx文件完全不同,如果你在自己的CEP應用中引入了react,記得把它們分開以避免混淆
了解了Extendscript之后,我們再來看一下CEP擴展各層級之間的橫向關系:
關于Photoshop中,ExtendScript具體可以調用的API,我們可以直接看Adobe的官方手冊:ADOBE PHOTOSHOP SCRIPTING[1]
在動手開發(fā)前,我們先把運行CEP擴展的各種要素準備齊全。
首先我們來看下CEP擴展需要的目錄結構:
這個工具庫大概一千多行,其中很大一部分是描述各個函數(shù)功能的注釋,所以可以直接通過閱讀注釋來學習這個工具庫的用法。
CEP擴展中的JavaScript環(huán)境下本身就內(nèi)置了調用ExtendScript環(huán)境的類,引入的CSInterface.js是對環(huán)境里調用ExtendScript環(huán)境的類進行封裝使得開發(fā)者更便于調用而已,所以引入CSInterface.js并不是必要的。
最后,我們要把建立好的CEP擴展的目錄放到Photoshop指定的位置:
mac:~/Library/Application Support/Adobe/CEP/extensions
win:{Photoshop安裝路徑}\Required\CEP\extensions
這樣Photoshop就可以加載我們開發(fā)的擴展,出現(xiàn)在其菜單欄中的「窗口」-「擴展」中。
看了這么多概念,我們動手試試吧!
新建CEP擴展的目錄之后,我們嘗試在Photoshop菜單欄的「窗口」-「擴展」中運行擴展,就發(fā)現(xiàn)了一個問題:
這是因為我們新建的CEP擴展沒有經(jīng)過簽名認證。
為了繞過這個認證,我們需要打開Photoshop的debug模式:
執(zhí)行完上面的操作后,你就可以在自己的Photoshop里運行自己新建的擴展了。
同時,如果你想調試自己的擴展,可以在目錄指定位置中添加.debug文件:
.debug文件中,我們指定開發(fā)的應用可以在哪個宿主應用和哪個端口進行調試:
<ExtensionList>
<!-- 1 -->
<Extension Id="com.example.helloworld">
<HostList>
<!-- 2 -->
<Host Name="PHXS" Port="8088"/>
<Host Name="PHSP" Port="8088"/>
</HostList>
</Extension>
</ExtensionList>
然后,我們訪問在chrome瀏覽器中訪問chrome://inspect/#devices,點擊「Port forwarding...」監(jiān)聽我們在.debug中設置的端口,我們可以看到的自己的應用:
熟悉移動端調試的讀者一定對這個界面不陌生,我們找到自己的應用并點開「inspect」,就可以在指定端口通過chrome的開發(fā)者工具來同步調試運行的CEP擴展了。
我們從前文提到的「CEP應用結構的五個層級」自下向上來構建:
1. 首先,在Extendscript層,我們先在全局定義好「獲取所有文字圖層」和「刪除所有文字圖層」的功能函數(shù):
function getAllLayers() {
var out=[];
var doc=app.activeDocument;
getLayers(doc.layers);
function getLayers(layers) {
for (var i=0; i < layers.length; i++) {
if (layers[i].typename=="LayerSet") {
//判斷是否是圖層組
out.push(layers[i].name);
getLayers(layers[i].layers);
} else {
out.push(layers[i].name);
}
}
}
return JSON.stringify(out);
}
function hideAllTextLayers() {
var doc=app.activeDocument;
var out=[];
function getLayers(layers) {
for (var i=0; i < layers.length; i++) {
if (layers[i] && layers[i].kind===LayerKind.TEXT) {
out.push(layers[i]);
}
if (layers[i].typename=="LayerSet") {
getLayers(layers[i].layers);
}
}
}
getLayers(doc.layers);
for (var j=0; j < out.length; j++) {
out[j].remove();
}
return "{}";
}
由于在Extendscript環(huán)境下,JavaScript僅兼容ES3,而且ExtendScript和CEP JavaScript之間只能通過字符串進行通信,所以我們要在ExtendScript的環(huán)境下引入JSON3[5]作為JSON功能的polyfill(注意這和CEP的JavaScript無關)
2. 在CEP的JavaScript層,我們在utils/cs.js中使用Promise封裝好界面上用得到的的hideLayers和getLayers函數(shù)——調用Extendscript中已經(jīng)定義好在全局的方法,并處理返回的字符串:
const cs=new CSInterface();
var c=cs.getSystemPath(SystemPath.EXTENSION) + "/jsx/";
cs.evalScript(`$.evalFile("${c}json3.jsx")`);
const evalJSXScript=(script)=>
new Promise((resolve)=> {
cs.evalScript(script, (res)=> {
resolve(JSON.parse(res));
});
});
export const getLayers=()=> evalJSXScript("getAllLayers()");
export const hideLayers=()=> evalJSXScript("hideAllTextLayers()");
3. 在CEP的UI層(為了更直觀,這里我們用引入react來代替html展示UI),我們大致部署一下插件的界面,用兩個按鈕分別觸發(fā)「獲取所有文字圖層」和「刪除所有文字圖層」的功能。同時為了直觀一些,我們把獲取到的所有文字圖層在插件面板上顯示:
import React, { useState } from "react";
import { hideLayers, getLayers } from "./utils/cs";
import "./styles/main.css";
export default ()=> {
const [layers, setLayers]=useState(null);
const handleGetLayers=async ()=> {
const layers=await getLayers();
setLayers(layers);
};
return (
<div style={{ width: "100vw", height: "100vh", background: "#FFF" }}>
<button className="primary" onClick={handleGetLayers}>
點擊獲取圖層
</button>
<button className="primary" onClick={hideLayers}>
點擊刪除全部文字圖層
</button>
<div className="area">
{layers && layers.length
? layers.map((e, i)=> (
<div key={i} className="layer">
{e}
</div>
))
: "無"}
</div>
</div>
);
};
讓我們試試剛剛開發(fā)的功能,例如,當我們點擊「點擊獲取圖層」的按鈕時,得到了如下的結果:
然后我們點擊右側「刪除所有文字圖層」后,是不是可以發(fā)現(xiàn)打開的psd文件中的文字圖層都消失了呢?
我把實例的項目放在了Lumpychen/CEP-Test[6],大家有興趣可以自己嘗試。
現(xiàn)在我們的應用可以在記得Photoshop中跑起來了,但是如果想讓自己的擴展可以在設計師同事的Photoshop里運行,我們不能給讓每個用戶都開啟一下debug模式,這太麻煩了。
在沒有進入debug模式的情況,Adobe CEP 擴展必須有簽名才能正常運行,簽名分為兩種:
具體如何獲取證書、簽名打包,Adobe也提供了官方的教程:package-distribute-install-guide[7]
同時,Adobe官方也把下載、管理和更新CEP擴展的功能集成到了Creative Cloud里,如果你安裝了Creative Cloud,它會連接Adobe Exchange——Adobe官方推出的擴展市場,以獲取和更新我們安裝的擴展。
如果你想把你自己開發(fā)的擴展發(fā)布到Adobe Exchange上,Adobe官方也提供了Exchange Portal用來發(fā)布擴展的渠道。
然而……
由于Adobe在中國的業(yè)務一直處于被閹割的狀態(tài),且國內(nèi)通過Creative Cloud購買正版Adobe應用的用戶也相對有限,所以大家很少采用官方的渠道管理和獲取Adobe產(chǎn)品的CEP擴展。
而國內(nèi)的Photoshop擴展應用的生態(tài)依然處于一個略微灰色的狀態(tài),很多擴展的發(fā)布和都依賴第三方社區(qū)(知乎、微信公眾號、淘寶)或素材網(wǎng)站,當然這樣的生態(tài)也催生了我國互聯(lián)網(wǎng)的歷史上一批又一批的ps大神。
文章的最后,如果你想要開發(fā)一個Adobe CEP擴展,我這邊強烈推薦幾個輔助用的工具:
Script Listener是Adobe社區(qū)里推出的輔助工具,可以隨時記錄用戶對Adobe宿主程序的操作,然后生成ExtendScript腳本文件在桌面上供用戶查看和選用——使用這種方式生成ExtendScript代碼,可以讓開發(fā)者省去很多學習Extendscript API的成本。
JSX.js是提供給CEP應用的JavaScript環(huán)境一個JS庫,可以代替原生的方法來引入ExtendScript的文件或執(zhí)行Extendscript的代碼,它解決了一個很重要的痛點——提供了執(zhí)行ExtendScript的報錯信息(這比起原生調用ExtendScript代碼執(zhí)行得到一句evalScript error體驗要強上很多倍)
這是目前Adobe官方提供的,當前版本唯一用來調試ExtendScript的工具。它是一個VSCode Debugger插件,可以像其它的VScode Debugger一樣,提供相關報錯信息,實現(xiàn)斷點調試的功能。
家好,我是 Echa。
今天來分享 50 個超實用的 Chrome 瀏覽器擴展!
JSON Viewer Pro 用于可視化JSON文件。其核心功能包括:
輸入界面如下:
格式化之后:
JSONVue 是一個JSON數(shù)據(jù)查看器,主要用來格式化JSON數(shù)據(jù):
Library Sniffer 是一款給開發(fā)者使用的工具,能夠探測當前網(wǎng)頁所使用的類庫、框架和服務器環(huán)境,為開發(fā)者提供了方便。
Wappalyzer 擴展可以用來識別網(wǎng)站背后的底層技術。通過此擴展,可以了解特定應用程序是否是用 React、Vue、Angular、PHP等編寫的。還可以訪問有關 Web 服務器、編程語言、框架、內(nèi)容管理系統(tǒng)、分析的信息工具、數(shù)據(jù)庫等。
WhatRuns 擴展程序只需單擊一下即可找到任何網(wǎng)站上使用的技術。
使用PerfectPixel插件可以將設計圖加載至網(wǎng)頁中,與已成型的網(wǎng)頁進行重疊對比,以幫助開發(fā)和設計人員規(guī)范網(wǎng)頁像素精度。這是一款可以優(yōu)化前端頁面顯示的Chrome插件。
可以使用此擴展程序快速清除緩存,無需任何確認對話框、彈出窗口等。可以在選項頁面上自定義要清除的數(shù)據(jù)和數(shù)量,包括:應用程序緩存、緩存、Cookie、下載、文件系統(tǒng)、表單數(shù)據(jù)、歷史記錄、索引數(shù)據(jù)庫、本地存儲、插件數(shù)據(jù)、密碼和 WebSQL。
VisBug 是一個使用 JavaScript 構建的開源網(wǎng)頁設計調試工具,它可以讓用戶使用點擊式和拖放式界面來查看網(wǎng)站的元素。
Debug CSS 是一個幫助調試CSS的插件。他可以顯示出頁面元素的輪播,按住Ctrl,并將鼠標懸浮在元素上,即可查看其信息:
CSS Viewer 是一款適用于 Web 開發(fā)人員的高效 Chrome 擴展。顧名思義,CSS 查看器可以顯示將鼠標懸停在任何網(wǎng)頁上的元素的 CSS 屬性。
EditThisCookie 是一個 cookie 管理器。可以添加,刪除,編輯,搜索,鎖定和屏蔽cookies。
React Developer Tools 是開源 JavaScript 庫 React 的 Chrome DevTools 擴展。它允許我們在 Chrome 開發(fā)者工具中檢查 React 組件層次結構。安裝此插件之后,將在 Chrome DevTools 中獲得兩個新選項卡:"?? Components" 和 "?? Profiler":
Vue.js devtools 是一款基于chrome瀏覽器的用于調試Vue.js應用程序的插件,可以使得開發(fā)人員大大提高調試效率。支持用戶對DOM結構數(shù)據(jù)結構進行解析和調試功能。
Augury 可以幫助開發(fā)人員在 Google Chrome 瀏覽器中調試和分析 Angular 應用程序。
Firebug Lite是火狐瀏覽器中著名的開發(fā)者工具firebug插件移植到Chrome中的插件,在Chrome中安裝了Firebug Lite插件以后,開發(fā)人員可以像在火狐瀏覽器中使用firebug一樣熟悉的方式來調試網(wǎng)頁內(nèi)容,其包含了基本的HTML、CSS以及Javascript的調試功能,用于幫助網(wǎng)頁前端開發(fā)工程師快速地調試網(wǎng)頁,以便及時地找到網(wǎng)頁中的BUG并及時修復。
HTML Validator 在 Chrome 的開發(fā)者工具中添加了 HTML Validator。HTML 頁面的錯誤數(shù)通過瀏覽器狀態(tài)欄中的圖標顯示,詳細信息可以在瀏覽器的開發(fā)者工具中查看。
Web Developer 擴展為帶有各種 Web 開發(fā)工具的瀏覽器添加了一個工具欄按鈕。該擴展適用于 Chrome 和 Firefox,并且可以在這些瀏覽器支持的任何平臺上運行,包括 Windows、macOS 和 Linux。
Requestly 是一款Chrome和Firefox瀏覽器插件,提供URL轉發(fā)、修改HTTP請求和結果、插入腳本等功能。
Window Resizer 主要用來調整瀏覽器窗口的大小以模擬各種屏幕分辨率。
Responsive Viewer 是在一個視圖中顯示多個屏幕的 Chrome 擴展程序。該擴展將幫助前端開發(fā)人員在開發(fā)響應式網(wǎng)站/應用程序時測試多個屏幕。
此插件允許直接從瀏覽器發(fā)送跨域請求,而不會收到跨域錯誤。可以使用此插件覆蓋 Request Origin 標頭,并將 Access-Control-Allow-Origin 設置為 *.
ColorPick Eyedropper 是一個放大的吸管和顏色選擇器工具,可讓從網(wǎng)頁等中選擇顏色值。
CSS Peeper 用于檢查和復制元素樣式的優(yōu)秀工具,使用 CSSPeeper 可以將鼠標懸停在網(wǎng)頁中的任何元素上,然后單擊鼠標即可復制元素的樣式。
24. Dimensions
Dimensions是一款能幫助使用者對網(wǎng)頁上各種元素屬性之間的距離進行測量的Chrome頁面元素測量插件,該插件在點擊啟動插件圖標后,可以對頁面中圖像、輸入字段、按鈕以及視頻等頁面元素之間上下左右的方位尺寸進行測量,同時還可以通過使用快捷鍵來快速啟用或關閉該插件的功能,簡單實用。
Site Palette 用于生成調色板。設計師和前端開發(fā)人員必備的工具。可以通過這款插件輕松獲取網(wǎng)站的配色方案。
ColorZilla 是一款功能強大地提取網(wǎng)頁色彩的工具;也是個快速的對顏色進行調節(jié)的Chrome插件,許多的用戶將這款軟件稱呼為顏色吸取插件,它提取的顏色是非常的多樣化,還可生產(chǎn)css顏色的代碼等。
當我們想查看網(wǎng)頁中文字的字體時,最常用的方法就是在控制臺查看文字的字體樣式。那還有沒有更簡單的方法呢?WhatFont 就是一個查看網(wǎng)頁字體的Chrome擴展。只需要的點擊擴展圖標,再點需要查看為文字即可:
Fonts Ninja 可以從任何網(wǎng)站識別字體、添加書簽、試用并購買它們。
使用 BrowserStack 快速啟動擴展在任何瀏覽器中啟動一個新的測試會話。最多可設置 12 個瀏覽器以實現(xiàn)快速訪問并最大限度地減少切換瀏覽器所花費的時間。
Toby 是一款 Chrome 新標簽頁工具,能夠將未讀的標簽頁分組顯示在新標簽頁中,這樣就能把所有未看完的標簽頁都關閉了。分組相當于多個 Chrome 窗口,將你的標簽頁都拖進 Toby 中,就不需要實時開著占地方了。
該擴展提供了每日熱門開發(fā)者新聞,不需要再浪費時間搜索高質量的文章了。
Momentum 擁有漂亮的新標簽頁面,每日更新精彩背景壁紙圖片,可設置每日新鮮事焦點以及跟蹤待辦事項,無廣告,無彈窗。
The Great Suspender 是一個輕量級的擴展用來減少 Chrome 的內(nèi)存占用。如果同時打開許多選項卡,在可配置的時間之后未查看的選項卡將在后臺自動掛起,從而釋放該選項卡消耗的內(nèi)存和 CPU。
Session Buddy是一個可以幫助用戶查看、新增、編輯當前網(wǎng)站Session狀態(tài)的Chrome插件。用戶可以利用該插件保存網(wǎng)站當前的狀態(tài)以便在關閉Chrome或關閉計算機后恢復,從而達到節(jié)省內(nèi)存的作用。
Octotree 旨在讓 GitHub 體驗更好。通常,為了檢查 Github 中的子文件夾,需要手動單擊文件夾并導航。Octotree 擴展解決了這個問題。此擴展在項目的左側顯示存儲庫的目錄結構,這有助于更好地理解文件夾結構。
1_EKF88oqIyX6FzgueCKdtXg.gif
File Icons for GitHub and GitLab 可以將 GitHub 和 GitLab 上的原始文件圖標替換為特定文件類型的圖標。
ax DevTools 是一個快速、輕量級但功能強大的測試工具,由 Deque 開發(fā)的世界上最值得信賴的可訪問性測試引擎 axe-core 驅動。使用 ax DevTools 在網(wǎng)站開發(fā)過程中查找并修復更多可訪問性問題。
OctoLinker 可以將特定語言的語句(如 include、require 或 import)轉換為鏈接。當打開一個包含多個導入語句的文件并且想要快速打開它時,只需將鼠標懸停在鏈接的文件上并單擊即可打開。
此擴展可幫助 Web 開發(fā)人員分析網(wǎng)頁是否違反最佳實踐。
Check My Links 是一個鏈接檢查器,它可以抓取網(wǎng)頁并查找損壞的鏈接。
Checkbot 是用于驗證一組HTML頁面上的鏈接的工具。Checkbot可以檢查一個或多個服務器上的單個文檔或一組文檔。它會創(chuàng)建一個報告,該報告匯總了引起某種警告或錯誤的所有鏈接。
Google Page Speed Insighs 是一款旨在優(yōu)化所有設備上的網(wǎng)頁、提高網(wǎng)頁加載速度的工具。
META SEO inspector是一款可以幫助用戶分析網(wǎng)頁的meta信息并得到SEO評估的谷歌瀏覽器插件。
Ghostery 是強大的隱私保護擴展程序。其主要有以下功能:
AdBlock 用來在YouTube、Facebook、Twitch和其他你喜愛的網(wǎng)站上攔截廣告和彈窗。
番茄工作法(Pomodoro?)時間管理助理。? 長短兩種休息時間 ? 帶有倒計時顯示的工具欄圖標 ? 追蹤Pomodoro歷史和統(tǒng)計訊息 ? 可配置的長休間隔 ? 可配置的定時器時長 ? 桌面與新標簽頁通知 ? 超過20種音效可選的聲音通知 ? 計時器秒針走動音效
Loom 可以用來快速錄制視頻,并且能夠將錄制的視頻上傳到指定的網(wǎng)頁中,Loom還支持在用戶點擊啟動插件時,立即捕捉屏幕圖像,同時開始視頻錄制操作,還可以將錄制好的視頻復制到粘貼板中存儲。
GoFullPage 是一款全屏截圖插件(整個網(wǎng)頁截圖),完整捕獲您當前頁面的屏幕,進行滾動截圖,而無需任何額外的權限。單擊擴展程序圖標,然后將其傳輸?shù)狡聊豢煺盏男聵撕烅撝校梢栽谄渲袑⑵湎螺d為圖像或PDF,甚至只需拖動即可,保存到桌面。
BetterViewer 可以提供更好的圖像查看體驗,旨在替代基于 Chrome 瀏覽器中內(nèi)置的圖像查看模式。使用時,只需在頁面右鍵點擊圖片,選擇“在新標簽頁中打開圖片”即可。
svg-grabber 是一個快速預覽并從網(wǎng)站獲取所有 svg 的工具。可以用來預覽、下載和復制網(wǎng)站中所有 SVG 圖標和插圖的代碼。
hotoshop可以說是每個設計師都必須會用的設計工具之一了。為了設計要求,大家會在Photoshop里搭配一些PS插件來使用。這篇文章就為大家整理了22款最佳PS插件,一起來看看吧。
點擊獲取,ps全套插件合集,一鍵選裝,自動識別ps版本
摹客iDoc是一個更快更簡單的產(chǎn)品協(xié)作設計平臺。摹客iDoc主要用戶人群涵蓋產(chǎn)品經(jīng)理,設計師和工程師,其核心功能點包括:智能標注、一鍵切圖、多樣批注、快速交互、全貌畫板、團隊管理。從產(chǎn)品到開發(fā),真正實現(xiàn)了只要一個文檔,更加高效流暢的協(xié)作方式,降低溝通成本,提升產(chǎn)品效率。摹客iDoc支持PS。通過摹客iDoc PS插件,可以上傳PS設計稿以進行標記切圖等(摹客iDoc PS插件教程)。PS 中的設計稿上傳至iDoc中后,可以進行以下操作:
GuideGuide是一款針對photoshop的輔助工具。通過這款軟件,可以輕松的即可完成標準的輔助線,從而讓設計師更輕松地進行作品制作,節(jié)約畫圖的時間。軟件操作比較簡單,只需要將插件載入PS中,即可完成各種輔助線的制作。
Lumenzia 是款Photoshop蒙版擴展插件,可以對PS中的圖片進行添加城市風格的濾鏡效果。插件支持對調整亮度、區(qū)域范圍的各種效果,也可以自定義調整區(qū)域、添加顏色等。
Fluid Mask 3是一款可以幫助處理PS圖像的工具。該插件中的編輯功能非常豐富,支持多種畫筆工具,可以將摳圖的照片加載到編輯區(qū)域,利用不同的畫筆工具對其進行處理,從而優(yōu)化PS圖像;同事還支持邊緣寬度調整、蒙版設計、色調調整、抓取、縮放、拍照等輔助功能。
Long Shadow Generator是一個Photoshop長投影插件。長投影效果在網(wǎng)頁設計、UI元素與圖標等設計上的應用很常見。這款 長投影插件除了支持4個方向的長投影,還支持設置投影長度等。
具體請看功能展示視頻:如何使用Long Shadow Generator
CSS3Ps是一款PS圖層轉換軟件,可以將圖層轉換為能在瀏覽器中查看的CSS3代碼,方便直接在設計軟件中添加相關的設計程序。其操作過程很簡單,通過鼠標簡單的操作就能完成轉換任務。轉換的時候,可以選擇單個或多個圖層,并通過點擊轉換實現(xiàn)批量處理功能。
Ink是一款幫助顯示Photoshop圖層詳細信息的擴展插件。通過這款插件可以快速生成指定圖層的詳細信息,例如圖層的信息、大小、顏色等,從而為前端提供圖層信息。有了這款插件,設計師可以輕松輸出規(guī)范文檔,這樣就不會因缺乏規(guī)范而導致不準確的前端輸出。
具體請看使用教程:如何使用Ink
CSS Hat 是一款 PhotoShop 插件,能夠把PSD效果圖層自動轉化為轉換成CSS樣式代碼。此插件對于 Web 設計開發(fā)相關工作者相當有幫助,生成的 CSS 樣式可以直接使用,可節(jié)省大量的時間。
標注、切圖、交互、原型,2019年必備神器![color=rgb(255, 255, 255) !important]立即體驗iDoc
具體請看功能展示視頻:如何使用CSS Hat
點擊獲取,ps全套插件合集,一鍵選裝,自動識別ps版本
大家多多評論,提高推薦,閱讀超過5000,小編將分享更給力的資源,或者大家有什么需求可以在評論區(qū)留言!
1、素材文件來源于互聯(lián)網(wǎng),素材版權歸原作者所有
2、素材僅供個人學習研究,不得任何形式商用。如需商用,請聯(lián)系原創(chuàng)作者購買版權,
否則帶來版權法律問題,請自行負責
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。