Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产一级特黄aa大片软件,久久精品人人做人人爽97,欧美精品v欧洲精品

          整合營銷服務商

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

          免費咨詢熱線:

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

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

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

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

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

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

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

          然而,還是有一件事情對于圖標字體來說是絕對不可能的:多色支持。只有 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** 替代。現在的問題是,一些瀏覽器比如 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 中,第三個杯子的杯身與煙氣全部都是紅色,第四個則全部是藍色! ?

          們都見過它們,它們保護我們的眼睛免受所有光線的傷害。 這些是暗模式按鈕,這里是如何在 HTML、CSS 和 JS 中創建自己的按鈕!

          我們要做的第一件事是創建 HTML 文件。 我正在使用引導程序使按鈕看起來不錯。 我要做的第一件事是將引導程序鏈接到我的 HTML 文件,這樣我就可以訪問所有按鈕。

          <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"><title>Dark mode</title></head><body></body></html>

          這是樣板 HTML 代碼。 現在我將添加按鈕并鏈接 css 樣式表。 如果您正在跟進,請在與您的 HTML 文件相同的目錄中創建一個 style.css 文件。

          <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="style.css"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"><title>Dark mode</title></head><body><button type="button" class="btn btn-dark">Dark Mode</button></body></html>

          我使用了引導 btn-dark 類,它只是一個簡單的深色按鈕。

          現在為 css。 我將創建一個 .dark 類,但我知道我們還沒有分配它。 那將適用于黑暗模式。

          .dark {background-color: black;}

          現在,我們將添加一些 javascript。 我們不會制作新文件,因為它不會那么多。 我將首先給按鈕一個“按鈕”類,然后從那里開始工作。我將添加一個事件偵聽器,然后在單擊時,我將切換 HTML 主體類 dark 。然后我將向主體添加一個 ID,以便我們可以 使用 JavaScript 選擇它。然后我將更改文本和按鈕顏色,以便我們可以來回切換。

          <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="style.css"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"><title>Dark mode</title></head><body id="body" class=""><button type="button" class="btn btn-dark" class="button">Dark Mode</button><script>let button=document.querySelector('button');let body=document.getElementById('body');button.addEventListener('click', ()=> {body.classList.toggle('dark');if(body.classList.contains('dark')) {button.style.backgroundColor="white";button.innerHTML="Light Mode"button.style.color="black";} else {button.style.backgroundColor="black";button.innerHTML="Dark Mode"button.style.color="white";}});</script></body></html>

          僅此而已! 謝謝閱讀。 如果你喜歡,請關注!

          evExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!

          DevExpress WinForm 已正式發布了重大版本——v21.2,此版本的數據網格控件擁有全新的HTML & CSS模板!歡迎下載最新版體驗!

          DevExpress WinForms Subscription官方最新版免費下載試用,歷史版本下載,在線文檔和幫助文件下載-慧都網

          Data Grid

          WinExplorer視圖 - HTML 模板

          新版本的WinForms Data Grid的WinExplorer 視圖現在支持 HTML/CSS 模板,選項包括:

          • 'WinExplorerViewStyleOptions.HtmlTemplate' 屬性現在可用于每個單獨的 WinExplorer 視圖樣式(大圖標、圖塊、詳細信息等),使用此屬性為樣式應用默認 HTML 模板。
          • 'WinExplorerView.HtmlTemplates' 屬性存儲您的模板,要動態應用 HTML 模板,請處理“QueryItemTemplate”事件。

          平鋪視圖 - HTML 模板

          您現在可以創建受 Web 啟發的圖塊并根據需要將它們綁定到數據字段。 要創建受 Web 啟發的磁貼,請將您的 HTML 模板分配給 'TileView.TileHtmlTemplate' 屬性。

          您可以創建多個 HTML 模板并將它們添加到 TileView.TileHtmlTemplates 集合中,處理 CustomItemTemplate 事件來將模板應用到圖塊。

          命名占位符

          您現在可以使用字段名稱作為 CardCaptionFormat 和 RecordHeaderFormat 屬性的占位符。

          C#

          cardView1.CardCaptionFormat="Record # {0}, {Name}";

          在以前的版本中,您必須通過相應網格列的索引來引用必填字段:

          C#

          cardView1.CardCaptionFormat="Record # {0}, {2}";

          列標題中搜索框的新 'Text Search'模式

          列標題中的搜索框現在提供全文搜索支持,在之前的版本(v21.1x) 中,搜索框改為使用過濾模式 - 與搜索字符串不匹配的值被隱藏。要激活文本搜索模式,請將“OptionsFilter.InHeaderSearchMode”屬性設置為“TextSearch”。

          注意:此選項在可見數據行中搜索(折疊和組行被忽略),并且在服務器模式下不起作用。

          .NET 5 設計器的數據源配置向導

          需要(尚未實現)Microsoft DataSet 組件的傳統數據源類型的向導選項不起作用,但您現在可以使用此向導連接現有的數據感知控件 到以下數據源類型:

          • ADO.NET 數據集
          • XPO
          • 實體框架
          • MongoDB
          • JSON
          • Excel 工作表
          • 未綁定或 xml 數據

          主站蜘蛛池模板: 久久99精品免费一区二区| 在线观看国产一区亚洲bd| 北岛玲在线一区二区| 亚洲视频在线一区二区| 精品一区二区三区免费观看| 日韩精品人妻一区二区三区四区| 亚洲第一区精品日韩在线播放| 亚洲av无一区二区三区| 久久久精品人妻一区二区三区蜜桃| 国产精品被窝福利一区| 精品一区二区三区影院在线午夜| 亚洲国产精品无码第一区二区三区| 国产亚洲一区二区三区在线| AV怡红院一区二区三区| 亚洲av区一区二区三| 在线视频国产一区| 色综合久久一区二区三区| 日韩人妻精品无码一区二区三区 | 国产一区二区三区免费观在线| 国产视频一区二区| 亚洲AV无码一区二区三区久久精品 | 国产伦精品一区二区三区视频猫咪| 女女同性一区二区三区四区| 久久精品成人一区二区三区| 成人欧美一区二区三区在线视频| 99精品国产高清一区二区| 国产在线一区二区| 久久久久成人精品一区二区| 国产精品日本一区二区在线播放| 成人无码AV一区二区| 国产午夜精品一区二区三区不卡| 国产一国产一区秋霞在线观看| 视频一区二区三区免费观看| 午夜精品一区二区三区在线视| 无码精品人妻一区二区三区免费| 精品一区二区三区在线播放视频| 亚洲无码一区二区三区| 痴汉中文字幕视频一区| 蜜桃无码AV一区二区| 无码人妻视频一区二区三区 | 成人精品视频一区二区三区不卡 |