整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          css.gg - 一套漂亮的純CSS實現的免費開源圖標庫


          00多個時尚漂亮的 css 圖標庫,特別適合 UI 設計師和前端開發者下載使用。

          700+ CSS 圖標

          css.gg 是一套純 css 實現的輕量美觀的開源圖標庫,特點是所有的圖形都通過 css 語法實現,是技術和設計的完美結合。

          css.gg 網站首頁

          圖標特色

          • 風格中性,時尚統一,應用場景很廣;
          • 一共700多個圖標,能滿足一般的項目需求;
          • 支持 xd / svg / css 等多種格式下載,不僅能用于設計二次修改,對前端開發的支持尤為優秀;

          使用體驗

          圖標在工作中應用非常廣泛,漂亮的圖標不僅在互聯網產品中隨處可見,在 PPT 、數據圖表和海報設計等各種可視化信息載體中也經常出現。

          css.gg 圖標預覽

          和大多數圖標庫的原始圖形格式不一樣,css.gg 是一個代碼實現的圖標庫,無論是導出的 svg、xd 格式、直接導入 figma,還是前端開發的引用,都為設計和開發帶來了便利。因此很適合用于互聯網項目。特別是在一些較輕的 web 項目上,不需要再引入字體文件或 svg 圖形的方式加載圖標,只需要拷貝相應的圖標代碼,不僅在前端開發中很方便地調整顏色,而且能用 css 代碼局部調整顏色,從而讓圖標變成彩色。

          需要注意的是,圖標使用了不少 css3 規范的渲染,需要考慮瀏覽器的兼容,如果不是運行移動端或現代瀏覽器上的項目,可能會有兼容性的問題。

          免費開源說明

          css.gg 基于 MIT 開源協議在 github 上開源,任何個人和商業機構都可以免費下載使用。

          關注我,持續分享高質量的免費開源、免費商用的資源。

          ↓↓點【了解更多】查看本次分享的網址。


          在進行前端開發時,圖標庫的使用是一項必須掌握的技巧,目前流行的圖標庫有fontawesome,iconfont等,只需要引入到項目中,然后使用對應的class,就會得到對應的圖標。

          但是你們有沒有想過,如果是自己的話該怎么去實現這些圖標呢?今天我們就來看看一些稍微復雜的圖標是如何使用純CSS3實現吧。

          文中的代碼已經放到github上了,感興趣的同學自取。

          https://github.com/zhouxiongking/article-pages/blob/master/articles/border/complexFigure.html

          CSS3

          圖標庫

          我們可以先來看看稍微復雜的圖標的樣子。

          圖標庫

          從圖標中可以看出,都是平時很常用的正確,錯誤,方向鍵,放大,縮小,開鎖,解鎖等。

          我們從中抽取幾個,慢慢分析它們是如何實現的吧。

          水杯

          水杯的圖標如下所示。

          水杯圖標

          我們對水杯圖標進行拆分,分為杯身和杯柄兩個部分。

          • 杯身中的白色長方形就是一個div,設置寬度和高度。

          • 杯身的四周為黑色都是通過border實現,border-bottom比其他三個放向都要大。

          • 杯身的下方是圓角,通過border-radius設置,border-radius的右下和左下方向設置相同的值。

          通過上述的分析,我們可以得到杯身部分的CSS代碼。

          杯身CSS代碼

          杯柄通過偽元素:before實現。

          • 杯柄設置為絕對定位,修改right值讓中間出現一個空白。

          • 調整杯柄位置的寬度,只需要和杯身重疊即可。

          • 杯柄右上角和右下角的border-radius設置為特定的值,展現成圓角的樣子。

          通過以上的分析,我們可以得到杯柄部分的CSS代碼。

          杯柄CSS代碼

          心形

          首先我們來看看心形圖案的樣子。

          心形圖案

          接下來我們同樣將整個圖案拆分來看,分成左右兩個部分,我們將上述圖案換成兩種不同顏色就一目了然了。

          拆分圖案

          從圖案中可以看出,它實際是由兩個相同的圖行旋轉不同的角度構成,相同的元素部分,可以通過設置border-radius值來實現。

          我們將左右兩個半邊的形狀分別通過:before和:after來實現,原始的的div形狀的CSS屬性則很簡單,只需要設置相對位置和寬度為0即可。

          基本CSS屬性

          然后看看:before和:after共有的屬性,主要是保證為元素部分的定位為絕對定位,然后設置border-radius的值, 保證上半部分是圓角。

          共有CSS屬性

          然后是關鍵的兩半邊各自的CSS屬性。左側的圖形距左邊應該為0,所以left: 0,右側的圖形距右側為0,所以right: 0。

          各有的CSS屬性

          同時左右兩側圖案需要進行旋轉,這里我們選擇旋轉48度,這是為什么呢?

          很多人一下子可能會想到旋轉45度,我們來看看旋轉45度時的樣子。

          旋轉45度

          從圖形中可以看出,兩側有棱角,整個圖案就顯得不標準,當旋轉超過45度時,棱角的部分就會被里面的圖案遮住。

          所以這里我們選擇旋轉48度,達到最終的效果。

          最終效果圖

          結束語

          今天這篇文章我們使用純CSS3的屬性畫出了一個杯子和心形兩個稍微復雜點的圖案,其實其它圖案也是類似的,只要我們能將其拆分,每個部分獨立實現,再組合就可以達到圖標庫的效果了。

          大家也可以自己動手實現一下噢~

          用 SVG 符號和 CSS 變量實現多彩圖標

          使用圖片和 CSS 精靈制作 web 圖標的日子一去不復返了。隨著 web 字體的爆發,圖標字體已經成為在你的 web 項目中顯示圖標的第一解決方案。

          字體是矢量,所以你無須擔心分辨率的問題。他們和文本一樣因為擁有 CSS 屬性,那就意味著,你完全可以應用 sizecolorstyle 。你可以添加轉換、特效和裝飾,比如旋轉、下劃線或者陰影。

          怪不得類似 Font Awesome 這類項目僅僅在 npm 至今已經被下載了超過 1500 萬次。

          可是圖標字體并不完美, 這就是為什么越來越多的人使用行內 SVG 。CSS Tricks 寫了圖標字體劣于原生 SVG 元素的地方:銳利度、定位或者是因為跨域加載、特定瀏覽器錯誤和廣告屏蔽器等原因導致的失敗?,F在你可以規避絕大多數這些問題了,總體上使用圖標字體是一個安全的選擇。

          然而,還是有一件事情對于圖標字體來說是絕對不可能的:多色支持。只有 SVG 可以做到。

          摘要 :這篇博文深入闡述怎么做和為什么。如果你想理解整個思維過程,推薦閱讀。否則你可以直接在 CodePen 看最終代碼。

          設置 SVG 標志圖標

          行內 SVG 的問題是,它會非常冗長。你肯定不想每次使用同一個圖標的時候,還需要復制/粘貼所有坐標。這將會非常重復,很難閱讀,更難維護。

          通過 SVG 符號圖標,你只需擁有一個 SVG 元素,然后在每個需要的地方引用就好了。

          先添加行內 SVG ,隱藏它之后,再用 <symbol> 包裹它,用 id 對其進行識別。

          <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <symbol id="my-first-icon" viewBox="0 0 20 20"> <title>my-first-icon</title> <path d="..." /> </symbol> </svg>

          整個 SVG 標記被一次性包裹并且在 HTML 中被隱藏。

          然后,所有你要做的是用一個 <use> 標簽將圖標實例化。

          <svg> <use xlink:href="#my-first-icon" /> </svg>

          這將會顯示一個初始 SVG 圖標的副本。

          **就是這樣了!**看起來很棒,是吧?

          你可能注意到了這個有趣的 xlink:href 屬性:這是你的實例與初始 SVG 之間的鏈接。

          需要提到的是 xlink:href 是一個棄用的 SVG 屬性。盡管大多數瀏覽器仍然支持,你應該用 **href** 替代?,F在的問題是,一些瀏覽器比如 Safari 不支持使用 href 進行 SVG 資源引用,因此你仍然需要提供 xlink:href 選項。

          安全起見,兩個都用吧。

          添加一些顏色

          不像是字體, color 對于 SVG 圖標沒有任何作用:你必須使用 fill 屬性來定義一個顏色。這意味著他們將不會像圖標字體一樣繼承父文本顏色,但是你仍然可以在 CSS 中定義它們的樣式。

          // HTML <svg class="icon"> <use xlink:href="#my-first-icon" /> </svg> // CSS .icon { width: 100px; height: 100px; fill: red; }

          在這里,你可以使用不同的填充顏色創建同一個圖標的不同實例。

          // HTML <svg class="icon icon-red"> <use xlink:href="#my-first-icon" /> </svg> <svg class="icon icon-blue"> <use xlink:href="#my-first-icon" /> </svg> // CSS .icon { width: 100px; height: 100px; } .icon-red { fill: red; } .icon-blue { fill: blue; }

          這樣就可以生效了,但是不完全符合我們的預期。目前為止,我們所有做的事情可以使用一個普通的圖標字體來實現。我們想要的是在圖標的位置可以有不同的顏色。我們想要向每個路徑上填充不同顏色,而不需要改變其他實例,我們想要能夠在必要的時候重寫它。

          首先,你可能會受到依賴于特性的誘惑。

          // HTML <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <symbol id="my-first-icon" viewBox="0 0 20 20"> <title>my-first-icon</title> <path class="path1" d="..." /> <path class="path2" d="..." /> <path class="path3" d="..." /> </symbol> </svg> <svg class="icon icon-colors"> <use xlink:href="#my-first-icon" /> </svg> // CSS .icon-colors .path1 { fill: red; } .icon-colors .path2 { fill: green; } .icon-colors .path3 { fill: blue; }

          不起作用。

          我們嘗試設置 .path1.path2.path3 的樣式,仿佛他們被嵌套在 .icon-colors 里,但是嚴格來說,并非如此。 <use> 標簽不是一個會被你的 SVG 定義替代的占位符。這是一個引用將它所指向內容復制為 shadow DOM 。

          **那接下來我們該怎么辦?**當子項不在 DOM 中時,我們如何才能用一個區域性的方式影響子項?

          CSS 變量拯救世界

          在 CSS 中,一些屬性從父元素繼承給子元素。如果你將一個文本顏色分配給 body ,這一頁中所有文本將會繼承那個顏色直到被重寫。父元素沒有意識到子元素,但是可繼承的樣式仍然繼續傳播。

          在我們之前的例子里,我們繼承了填充屬性?;仡^看,你會看到我們聲明填充顏色的類被附加在了實例上,而不是定義上。這就是我們能夠為同一定義的每個不同實體賦予不同顏色的原因。

          現在有個問題:我們想傳遞不同顏色給原始 SVG 的不同路徑,但是只能從一個 fill 屬性里繼承。

          這就需要 CSS 變量了。

          就像任何其它屬性一樣, CSS 變量在規則集里被聲明。你可以用任意命名,分配任何有效的 CSS 值。然后,你為它自己或者其它子屬性,像一個值一樣聲明它,并且這將被繼承

          .parent { --custom-property: red; color: var(--custom-property); }

          所有 .parent 的子項都有紅色文本。

          .parent { --custom-property: red; } .child { color: var(--custom-property); }

          所有嵌套在 .parent 標簽里的 .child 都有紅色文本。

          現在,讓我們把這個概念應用到 SVG 符號里去。我們將在 SVG 定義的每個部分使用 fill 屬性,并且設置成不同的 CSS 變量。然后,我們將給它們分配不同的顏色。

          // HTML <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <symbol id="my-first-icon" viewBox="0 0 20 20"> <title>my-first-icon</title> <path fill="var(--color-1)" d="..." /> <path fill="var(--color-2)" d="..." /> <path fill="var(--color-3)" d="..." /> </symbol> </svg> <svg class="icon icon-colors"> <use xlink:href="#my-first-icon" /> </svg> // CSS .icon-colors { --color-1: #c13127; --color-2: #ef5b49; --color-3: #cacaea; }

          然后… 生效了 !

          現在開始,為了用不同的顏色方案創建實例,我們所需要做的是創建一個新類。

          // HTML <svg class="icon icon-colors-alt"> <use xlink:href="#my-first-icon" /> </svg> // CSS .icon-colors-alt { --color-1: brown; --color-2: yellow; --color-3: pink; }

          如果你仍然想有單色圖標,你不必在每個 CSS 變量中重復同樣的顏色。相反,你可以聲明一個單一 fill 規則:因為如果 CSS 變量沒有被定義,它將會回到你的 fill 聲明。

          .icon-monochrome { fill: grey; }

          你的 fill 聲明將會生效,因為初始 SVG 的 fill 屬性被未設置的 CSS 變量值定義。

          怎樣命名我的 CSS 變量?

          當提到在 CSS 中命名,通常有兩條途徑:描述的或者語義的。描述的意思是告訴一個顏色是什么:如果你存儲了 #ff0000 你可以叫它 --red 。語義的意思是告訴顏色它將會被如何應用:如果你使用 #ff0000 來給一個咖啡杯把手賦予顏色,你可以叫它 --cup-handle-color

          描述的命名也許是你的本能。看起來更干脆,因為#ff0000 除了咖啡杯把手還有更多地方可以被使用。一個 --red CSS 變量可被復用于其他需要變成紅色的圖標路徑。畢竟,這是實用主義在 CSS 中的工作方式。并且是一個良好的系統。

          問題是,在我們的案例里,我們不能把零散的類應用于我們想設置樣式的標簽。實用主義原則不能應用,因為我們對于每個圖標有單獨的引用,我們不得不通過類的變化來設置樣式。

          使用語義類命名,例如 --cup-handle-color ,對于這個情況更有用。當你想改變圖標一部分的顏色時,你立即知道這是什么以及需要重寫什么。無論你分配什么顏色,類命名將會一直關聯。

          默認還是不要默認,這是個問題

          將你的圖標的多色版本設置成默認狀態是很有誘惑力的選擇。這樣,你無需設置額外樣式,只需要在必要的時候可以添加你自己的類。

          有兩個方法可以實現::rootvar() default 。

          :root

          :root 選擇器中你可以定義所有你的 CSS 變量。這將會把它們統一放在一個位置,允許你『分享』相似的顏色。 :root 擁有最低的優先度,因此可以很容易地被重寫。

          :root { --color-1: red; --color-2: green; --color-3: blue; --color-4: var(--color-1); } .icon-colors-alt { --color-1: brown; --color-2: yellow; --color-3: pink; --color-4: orange; }

          然而,這個方法有一個主要缺點。首先,將顏色定義與各自的圖標分離可能會有些讓人疑惑。當你決定重寫他們,你必須在類與 :root 選擇器之間來回操作。但是更重要的是,它不允許你去關聯你的 CSS 變量,因此讓你不能復用同一個名字。

          大多數時候,當一個圖標只用一種顏色,我用 --fill-color 名稱。簡單,易懂,對于所有僅需要一種顏色的圖標非常有意義。如果我必須在 :root 聲明中聲明所有變量,我就不會有幾個 --fill-color。我將會被迫定義 --fill-color-1 , --fill-color-2 或者使用類似 --star-fill-color--cup-fill-color 的命名空間。

          var() 默認

          你可以用 var() 功能來把一個 CSS 變量分配給一個屬性,并且它的第二個參數可以設置為某個默認值。

          <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <symbol id="my-first-icon" viewBox="0 0 20 20"> <title>my-first-icon</title> <path fill="var(--color-1, red)" d="..." /> <path fill="var(--color-2, blue)" d="..." /> <path fill="var(--color-3, green)" d="..." /> </symbol> </svg>

          在你定義完成 --color-1 , --color-2--color-3 之前,圖標將會使用你為每個 <path> 設置的默認值。這解決了當我們使用 :root 時的全局關聯問題,但是請小心:你現在有一個默認值,并且它將會生效。結果是,你再也不能使用單一的 fill 聲明來定義單色圖標了。你將不得不一個接一個地給每個使用于這個圖標的 CSS 變量分配顏色。

          設置默認值會很有用,但是這是一個折中方案。我建議你不要形成習慣,只在對給定項目有幫助的時候做這件事情。

          How browser-friendly is all that?

          CSS 變量與大多數現代瀏覽器兼容,但是就像你想的那樣, Internet Explorer 完全不兼容。因為微軟要支持 Edge 終止了 IE11 開發, IE 以后也沒有機會趕上時代了。

          現在,僅僅是因為一個功能不被某個瀏覽器(而你必須適配)兼容,這不意味著你必須全盤放棄它。在這種情況下,考慮下優雅降級:給現代瀏覽器提供多彩圖標,給落后瀏覽器提供備份的填充顏色。

          你想要做的是設置一個僅在 CSS 變量不被支持時觸發的聲明。這可以通過設置備份顏色的 fill 屬性實現:如果 CSS 變量不被支持,它甚至不會被納入考慮。如果它們不能被支持,你的 fill 聲明將會生效。

          如果你使用 Sass 的話,這個可以被抽象為一個 @mixin

          @mixin icon-colors($fallback: black) { fill: $fallback; @content; }

          現在,你可以任意定義顏色方案而無需考慮瀏覽器兼容問題了。

          .cup { @include icon-colors() { --cup-color: red; --smoke-color: grey; }; } .cup-alt { @include icon-colors(green) { --cup-color: green; --smoke-color: grey; }; }

          在 mixin 中通過 @content 傳遞 CSS 變量也是一個可選項。如果你在外面做這件事,被編譯的 CSS 將會變得一樣。但是它有助于被打包在一起:你可以在你編輯器中折疊片段然后用眼睛分辨在一起的聲明。

          在不同的瀏覽器中查看這個 pen 。在最新版本的 Firefox , Chrome 和 Safari 中,最后兩只杯子各自擁有紅色杯身灰色煙氣和藍色杯身灰色煙氣。在 IE 和 版本號小于 15 的 Edge 中,第三個杯子的杯身與煙氣全部都是紅色,第四個則全部是藍色! ?


          主站蜘蛛池模板: 无码aⅴ精品一区二区三区浪潮| 日韩久久精品一区二区三区 | 国精产品一区一区三区有限公司| 精品乱子伦一区二区三区高清免费播放| 日本免费一区二区久久人人澡| av一区二区三区人妻少妇| 国产探花在线精品一区二区| 精品无人乱码一区二区三区| 精品无人区一区二区三区| 后入内射国产一区二区| 国产裸体舞一区二区三区| 在线视频一区二区三区| www.亚洲一区| 亚洲欧洲∨国产一区二区三区| 色屁屁一区二区三区视频国产| 免费无码毛片一区二区APP| 性色av无码免费一区二区三区| 国产午夜精品免费一区二区三区 | 精品视频在线观看你懂的一区| 一区二区三区四区无限乱码| 亚洲AV午夜福利精品一区二区| 久久精品免费一区二区三区| 亚洲欧美日韩一区二区三区在线 | 波多野结衣一区二区三区高清av| 色天使亚洲综合一区二区| 国产主播福利精品一区二区| 久久综合一区二区无码| 国产成人精品一区二三区熟女| 麻豆天美国产一区在线播放| 日本精品啪啪一区二区三区| 国产精品一区二区av不卡| 国产乱码一区二区三区爽爽爽| 久久久无码一区二区三区| 精品无码成人片一区二区| 亚洲AV色香蕉一区二区| 波多野结衣在线观看一区二区三区| 国产精品成人一区二区| 色窝窝免费一区二区三区| 国产精品女同一区二区久久| 亚洲综合色一区二区三区小说| 无码人妻精品一区二区蜜桃|