目錄
PNG 图标
字体图标
通过类名引用
直接引用 unicode
SVG 图标
通过 xlink:href 引用
对 svg 图标的直接封装
首頁 web前端 js教程 JavaScript框架(xmlplus)元件的介紹(一)圖示(ICON)

JavaScript框架(xmlplus)元件的介紹(一)圖示(ICON)

May 04, 2017 am 10:20 AM

xmlplus 是一个JavaScript框架,用于快速开发前后端项目。这篇文章主要介绍了JavaScript框架(xmlplus)组件的介绍(一)图标(ICON),具有一定的参考价值,感兴趣的小伙伴们可以参考一下

网页上使用的图标分可为三种:文件图标、字体图标和 SVG 图标。对于文件图标,下面仅以 PNG 格式来说明。

PNG 图标

对于 PNG 图标的引用,有两种方式。一种是直接由 HTML 元素 img 的 src 属性给出。下面是一个简单的示例。

Icon: {
    css: "#icon { width: 68px; height: 68px; }",
    xml: "<img id=&#39;icon&#39;/>",
    fun: function (sys, items, opts) {
        this.attr("src", this + ".png");
    }}
登入後複製

这里假定图标文件与组件所在文件在同级目录中,于是可以按如下的方式便捷地引用所需的图标。注意组件 Icon 巧妙地使 id 属性值与图片文件名关联,这样可以避免创建额外的属性。

Example: {
    css: "#example > * { padding: 10px; background: #F9F9F9; }",
    xml: "<p id=&#39;example&#39; class=&#39;bs-example&#39;>\            <Icon id=&#39;msg&#39;/>\            <Icon id=&#39;home&#39;/>\            <Icon id=&#39;contact&#39;/>\          </p>"}
登入後複製

另一种引用 PNG 图标的方式是给相应的对象添加 <a href="http://www.php.cn/wiki/895.html" target="_blank">background-image</a> 样式,并且由样式中给出图标所在路径。下面是一个简单的示例。

Icon: {
    css: "#icon { width: 68px; height: 68px; }",
    xml: "<p id=&#39;icon&#39;/>",
    fun: function (sys, items, opts) {
        this.css("background-image", this + ".png");
    }}
登入後複製

这种形式与前面由 img 标签给出的图标有许多相似之处。不同的是,前者动态指定的是 img 标签的 src 值 ,而后者动态指定的则是 p 元素的 css 样式。该组件与前面给出的 Icon 组件的使用方式完全一致,这里就不重复了。

对于以上给出的组件 Icon,使用的是离散的图标文件。实际应用中,通常给出的是一个包含许多图标的 PNG 文件。这种情况下该如何构建图标组件呢?请看下面给出的一种较为实用的方案。

Icon: {
    css: "#msg { background-position:  0 0; }\          #home { background-position: -48px 0; }\          #contact { background-position: -96px 0; }\          #icon { width: 68px; height: 68px; background-image: url(icons.png); }",
    xml: "<p id=&#39;icon&#39;/>",
    fun: function (sys, items, opts) {
        sys.icon.addClass("#" + this);
    }}
登入後複製

此组件在样式项 css 中直接给出了图标文件所在路径,以及各种图标在文件内的位置。并且图标实例 id 与相应图标类名对应。当然,组件的使用方式与前面给出的组件是一致的。

下面给出的是另一种组件设计方案,它把位置信息移到了函数项中。此方案是可行的,但组件的执行效率不如前者。该组件每次实例化都要生成位置信息一次,而对于前者,由于样式项在组件实例化时,仅生成一次,所以保证了组件的执行性能。

Icon: {
    css: "#icon { width: 48px; height: 48px; background-image: url(icons.png); }",
    xml: "<p id=&#39;icon&#39;/>",
    fun: function (sys, items, opts) {
        var positions = {
            "msg": "0 0",
            "home": "-48px 0",
            "contact": "-96px 0"
        }
        sys.icon.css("background-position", positions[this]);
    }}
登入後複製

字体图标

字体图标通过引入包含图标的字体文件,将图标像文字一样使用。它与 PNG 图标相比,最关键一点在于它的矢量性。字体图标的引用方式有两种:通过类名的引用方式以及直接引用 unicode 的方式。

通过类名引用

这种类型的图标内容定义在样式项中,HTML 元素通过类名进行关联。

Msg: {
    css: "#msg { font-size: 48px; width: 68px; height: 68px; line-height: 48px; }\          #msg:before { content: &#39;\\e608&#39;; }",
    xml: "<p id=&#39;msg&#39;/>"}
登入後複製

直接引用 unicode

这种引用方式与前一种在本质上没什么不同,它只是将图标内容由样式项转移到视图项中而已。

Home: {
    css: "#home { font-size: 48px; width: 68px; height: 68px; line-height: 48px; }",
    xml: "<p id=&#39;home&#39;>&#xe609;<p/>"}
登入後複製

下面给出的示例展示了两种不同的引用字体图标的方式。注意,此示例简化了样式项中与兼容性相关的内容,详情请查阅配套源码。

Example: {
    css: "@font-face { font-family: &#39;iconfont&#39;; url(&#39;iconfont.ttf&#39;) format(&#39;truetype&#39;);}\          #msg, #home { font-family: &#39;iconfont&#39;; font-style:normal; }\          #example > * { display: inline-block; padding: 10px; background: #F9F9F9; }",
    xml: "<p id=&#39;example&#39;>\            <Msg id=&#39;msg&#39;/>\            <Home id=&#39;home&#39;/>\          </p>"}
登入後複製

SVG 图标

最后来看看我们的重头戏,如何封装以及使用 SVG 图标。在 xmlplus 中,SVG 图标是推荐的图标使用形式,它允许直接嵌入代码,无需额外引用相关文件。

对于这种方式,首先你需要一个 svg 图标集,其包含的内容大概是下面这样子。

<svg>
    <symbol id="icon" width=&#39;48px&#39; height=&#39;48px&#39; viewBox=&#39;0 0 24 24&#39;>
        <g><polygon points=&#39;9,16.2 4.8,12 3.4,13.4 9,19 21,7 19.6,5.6&#39;/></g>\    </symbol>
    <!-- 还可以有更多的symbol --></svg>
登入後複製

svg 图标集有两种存在方式,一个是以文件形式存在,这时 xlink:href 属性值需要明确指明文件的 url,下面是一个示例。

<svg>
   <use xlink:href=&#39;example.com/file.svg#icon&#39;/>\</svg>
登入後複製

另一种形式是,图标集直接存在于页内,这种方式叫做页内引用,它无需指明 url,只要指定相应 symbol 的 id 就好了。

<svg>
   <use xlink:href=&#39;#icon&#39;/>\</svg>
登入後複製

对 svg 图标的直接封装

相对于通过 xlink:href 引用图标,使用 xmlplus 的组件化技术直接封装会是一种更好的方式。请看下面的一个 SVG 图标组件。

Icon: {
    xml: "<svg width=&#39;48px&#39; height=&#39;48px&#39; viewBox=&#39;0 0 24 24&#39;>\            <g><polygon points=&#39;9,16.2 4.8,12 3.4,13.4 9,19 21,7 19.6,5.6&#39;/></g>\          </svg>",
    fun: function (sys, items, opts) {
        this.attr("fill", &#39;&#39; + this);
    }}
登入後複製

这是一个钩形图标,组件中仅包含视图项以及函数项成份。根据函数项的内容可以知道,图标颜色由组件实例的 id 属性值给出。下面来看看如何使用该图标。

Example: {
    css: "#example > * { padding: 10px; background: #F9F9F9; }\          #example > *:hover { fill: #fff; background: #563d7c; }",
    xml: "<p id=&#39;example&#39;>\            <Icon id=&#39;red&#39;/>\            <Icon id=&#39;green&#39;/>\            <Icon id=&#39;blue&#39;/>\          </p>",
    fun: function (sys, items, opts) {
        sys.example.on("click", "*", e => console.log(this + " clicked"));
    }}
登入後複製

此示例展示了三个不同颜色的图标,并且侦听了图标的点击事件,打开浏览器控制台,当点击不同图标时,可以看到相应的输出。

另外,有一种常见的 SVG 图标的封装方式,它把 SVG 文本经过 URL 编码后直接在 img 的 src 属性或者样式 background-image 中给出。就像下面这样子。

Icon: {
    css: "#icon {width: 16px; height: 16px; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D...")},
    xml: "<p id=&#39;icon&#39;/>"}
登入後複製

这种方式与上一种方式比起来,有两个缺点:其一,你看不出 SVG 的源文件。其二,你失去了对 SVG 图标的操作权。当然,这种方式也并非不能用。如果你不需要对图标进行后续的操作,使用这种方式也是可以接受的。另外,与之相似的一种图标使用方式是对图标 base64 编码后的内嵌引用。下面是一个简单的示范:

Icon: {
    xml: "<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAA..." />"}
登入後複製

这种方式与上一种 SVG 图标的封装方式是类似的。不过相对于 SVG 图标组件的直接封装,你同样失去了对图标的操作权。

以上是JavaScript框架(xmlplus)元件的介紹(一)圖示(ICON)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Win11怎麼停用工作列縮圖預覽? 關閉滑鼠移動工作列圖示顯示縮圖技巧 Win11怎麼停用工作列縮圖預覽? 關閉滑鼠移動工作列圖示顯示縮圖技巧 Feb 29, 2024 pm 03:20 PM

本文將介紹如何在Win11系統中關閉滑鼠移動工作列圖示時顯示的縮圖功能。這項功能在預設情況下是開啟的,當使用者將滑鼠指標懸停在工作列上的應用程式圖示上時,會顯示該應用程式的目前視窗縮圖。然而,有些用戶可能覺得這個功能不太實用或會幹擾到他們的使用體驗,因此想要關閉它。工作列縮圖可能很有趣,但它們也可能分散注意力或煩人。考慮到您將滑鼠懸停在該區域的頻率,您可能無意中關閉了重要視窗幾次。另一個缺點是它使用更多的系統資源,因此,如果您一直在尋找一種提高資源效率的方法,我們將向您展示如何停用它。不過

如何在Ubuntu開始功能表中移除圖示? 如何在Ubuntu開始功能表中移除圖示? Jan 13, 2024 am 10:45 AM

ubuntu系統開始選單裡面列出了很多的軟體圖標,有很多不常用的圖標,想要刪除,該怎麼刪除呢?下面我們就來看看詳細的教學。 1.先進入ubuntu桌面,點選左邊面板下面的開始選單。 2、裡面可以找到一個文字編輯器圖標,我們要把它刪除了。 3.現在我們回到桌面直接滑鼠右鍵開啟終端。 4、使用指令開啟應用程式列表目錄。 sudonautilus/usr/share/applicationssudonautilus~/.local/share/applications5、在裡面找到對應的文字編輯器圖示。 6、接著直

如何在我的所有 Windows 11 顯示器上顯示系統托盤圖標 如何在我的所有 Windows 11 顯示器上顯示系統托盤圖標 Sep 22, 2023 pm 03:21 PM

使用多顯示器設定時,使用者希望在所有顯示器上顯示托盤圖標,以便跟上最新通知或存取某些應用程式。這可能非常有用,在今天的指南中,我們將向您展示如何正確啟用此功能。如何在Windows11中的所有顯示器上顯示托盤圖示? 1.使用顯示融合軟體造訪DisplayFusion網站並下載軟體。下載軟體後,運行安裝檔並安裝它。啟動軟體並根據需要進行配置。在第二個畫面上,以滑鼠右鍵按一下工作列,選擇多顯示器工作列,然後選擇系統匣。最後,檢查顯示/隱藏圖示.完成此操作後,您應該在Windows11上的兩台顯示器上取得系統

下載手機設定圖示到桌面「秒懂:Android手機為應用程式換圖示步驟」 下載手機設定圖示到桌面「秒懂:Android手機為應用程式換圖示步驟」 Feb 06, 2024 pm 04:27 PM

為了美化桌面,許多用戶喜歡定期更換桌面主題,隨時保持新鮮感。不過,換主題卻不會更改第三方APP的圖標,個性美化不夠徹底。如果你厭倦了千篇一律的應用程式圖標,不妨將它們替換掉。理論上,想為手機APP換圖標,通常需要ROOT系統和一些工具來拆包裝替換圖標。但由於絕大多數手機不再支援ROOT系統,我們需要尋找其他方法來實現。例如,一些特定的應用程式可能提供了自訂圖示的選項,或者可以透過第三方啟動器來實現個人化圖示。此外,一些手機品牌也推出了專門的主題和圖標商店,供用戶選擇和更換圖標。在各大應用程式商店中,

您的T-mobile智慧型手機上的5G UC與5G UW圖示的意思是什麼? 您的T-mobile智慧型手機上的5G UC與5G UW圖示的意思是什麼? Feb 24, 2024 pm 06:10 PM

T-Mobile用戶已經開始注意到,他們的手機螢幕上的網路圖示有時顯示為5GUC,而其他業者則顯示為5GUW。這並不是拼字錯誤,而是代表不同類型的5G網路。事實上,營運商們正在不斷擴大他們的5G網路覆蓋範圍。在這個主題中,我們將探討T-Mobile智慧型手機上顯示的5GUC和5GUW圖示的意思。這兩種標誌代表著不同的5G技術,每種技術都有其獨特的特點和優點。透過了解這些標誌的含義,使用者可以更了解他們所連接的5G網路類型,以便選擇最適合自己需求的網路服務。 5GUCVS5GUW圖示在T

Win11如何關閉大小寫提示圖標 Win11如何關閉大小寫提示圖標 Jun 29, 2023 pm 01:00 PM

  Win11如何關閉大小寫提示圖示?當我們的電腦在進行大小寫切換時,有用戶的電腦螢幕會出現提示圖標,對此有用戶想要將該圖標關閉,那麼應該如何操作呢?其實方法很簡單,下面小編就為大家示範Win11關閉大小寫提示圖示的方法,希望以下教學對你有幫助。  Win11關閉大小寫提示圖示的方法  解決的方法很簡單,那就是打開任務管理器結束Thisutilitycontrolsspecialkeyboard這個進程。  總而言之就是關閉進程裡面的XXXXXUtility進程就可以了,如果是聯想電腦的話,就

PPT幻燈片插入excel圖示的操作方法 PPT幻燈片插入excel圖示的操作方法 Mar 26, 2024 pm 05:40 PM

1.開啟PPT,翻頁至需要插入excel圖示的頁面。點選插入選項卡。 2、點選【對象】。 3、跳出以下對話框。 4.點選【由檔案建立】,點選【瀏覽】。 5、選擇需要插入的excel表格。 6.點選確定後跳出如下頁面。 7.勾選【顯示為圖示】。 8.點選確定即可。

如何在iPhone中撤銷從主畫面中刪除 如何在iPhone中撤銷從主畫面中刪除 Apr 17, 2024 pm 07:37 PM

從主畫面中刪除了重要內容並試圖將其取回?您可以透過多種方式將應用程式圖示放回螢幕。我們已經討論了您可以遵循的所有方法,並將應用程式圖示放回主畫面如何在iPhone中撤消從主畫面中刪除正如我們之前提到的,有幾種方法可以在iPhone上恢復此變更。方法1–替換應用程式庫中的應用程式圖示您可以直接從應用程式庫將應用程式圖示放置在主畫面上。步驟1–橫向滑動以尋找應用程式庫中的所有應用程式。步驟2–找到您先前刪除的應用程式圖示。步驟3–只需將應用程式圖示從主庫拖曳到主畫面上的正確位置即可。這是將應用程式圖

See all articles