精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 SVG 和 CSS 構建 UI 組件

開發(fā) 前端
SVG 不僅僅是圖標和插圖,它還有很多我們開發(fā)人員有時會忘記的隱藏力量。與 CSS 相比,使用 SVG 有很多用途。

SVG 不僅僅是圖標和插圖,它還有很多我們開發(fā)人員有時會忘記的隱藏力量。與 CSS 相比,使用 SVG 有很多用途。例如,構建循環(huán)加載動畫,或在圖像上應用蒙版,在這種情況下,這并不意味著無法使用 CSS,但有時基于所使用的技術(例如:掩碼)來解決跨瀏覽器問題可能會很痛苦,因此,使用 SVG 可以節(jié)省時間和精力。

SVG 的偉大之處在于它們可以響應迅速、高性能,并且可以使用 HTML 和 CSS 開箱即用。在本文中,我的目標是向您介紹不同的用例,在這些用例中,我們可以使用 SVG 以及 HTML 和 CSS 來構建特定的 UI 組件。

現(xiàn)在,讓我們進入用例,你準備好了嗎?

刪減頭像

裁切出的頭像效果是我在查看 Facebook 的 CSS 時發(fā)現(xiàn)的,在 messenger 中,用戶頭像上可以有一個提示徽章,化身被剪裁為徽章分配空間。

這可以通過添加 CSS 白色邊框(作為快速修復)來完成。但是為什么不將其進一步應用到動態(tài) SVG 組件中呢?

.badge {
border: 2px solid #ff;
}

您可能在想,如果邊框有效,為什么要使用 SVG?好吧,這里沒有對錯。但是有一個比另一個更好的解決方案,你還記得在數(shù)學課上老師可能會提到同一個問題可能有不同的解決方案,而其中一個在靈活性方面可能會更好嗎?我對我們的情況也有同樣的感覺。

無論如何,我將向您展示邊界解決方案將如何快速失敗,它會失敗:

  • 懸停時:卡片背景會發(fā)生變化,因此白色邊框會顯得奇怪。
  • 深色模式:白色邊框?qū)⑽挥诤谏尘爸?/li>

在下圖中,請注意徽章的白色邊框如何干擾深色背景和懸停狀態(tài)。

圖片

我們可以通過改變懸停時的邊框顏色來解決這個問題,但這對我來說似乎不是最好的解決方案。

.card__badge {
border: 2px solid #ff;
}

.card:hover .card__badge {
border-color: lightgrey;
}

@media (prefers-color-scheme: dark) {
.card__badge {
border-color: #454545;
}
}

使用 SVG,可以通過切割徽章下方的區(qū)域,這是更好的方式,就可以解決上述問題,這樣,它將適用于任何類型的背景。

考慮下圖:

圖片

我們使用 SVG <image> 元素來包含頭像,為了切出徽章區(qū)域,我們需要創(chuàng)建兩個 <circle> 元素,一個是白色的,另一個是黑色的。

在遮罩中,任何帶有黑色填充的元素都將被隱藏??,而白色的元素將可見。黑色圓圈位于右下角,半徑為 18。

在設計工具中,上述稱為減法,我們想從較大的圓圈中減去小圓圈。

代碼演示地址:https://codepen.io/shadeed/pen/bGWaQOG

部分標題

在我的一個客戶項目中,我通過結合 SVG 和 CSS 設計并構建了一個章節(jié)標題,該品牌與安全有關,因此使用這種風格可能適合。

組件需要處理短標題和長標題,如果標題太長,它應該換成多行而不破壞布局。為了構建它,我做了以下事情:

  • 首先,我復制了固定部分(在右側)并將其附加為內(nèi)聯(lián) SVG。
  • 使用 CSS 創(chuàng)建標題下的線條,以及線條開頭和結尾的小圓圈。
  • 我使用 flexbox 構建了組件布局,以避免使用任何不需要的定位。

讓我們從基本的 HTML 和 CSS 開始。

HTML:

<h2 class="c-section__title">
<span>CSS is awesome</span>
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="34.5" viewBox="0 0 128 34.5" preserveAspectRatio="none">
<path fill="none" stroke="#d8d8d8" stroke-width="2" d="M127 1H33.5L1 33.5"></path>
</svg>
</h2>

CSS:

.c-section__title {
max-width: 700px;
width: fit-content;
display: flex;
margin-left: auto;
margin-right: auto;
}

圖片

下一步,我想在 <span> 元素下添加一個邊框,以模仿 SVG 的連接線。

我注意到 SVG 沒有與線路連接,由于我們使用的是 flexbox,因此,修復它很簡單,我們只需要將 flex 項目與 flex-end 對齊。


.c-section__title {
max-width: 700px;
width: fit-content;
display: flex;
align-items: flex-end;
margin-left: auto;
margin-right: auto;
}

然后,我們需要使用具有絕對定位的偽元素在開始和結束處添加圓圈。

代碼演示地址:https://codepen.io/shadeed/pen/bGoOxXL

使用 SVG 的另一個好處是,我們可以將 SVG 路徑變成可以動畫的虛線。為此,我們需要確保未列出 SVG 中的導出路徑。

HTML:

<path d="M127 1H33.5L1 33.5" fill="none" stroke="#d8d8d8" stroke-width="2"></path>

這個方法是我從 Jake Archibald 的文章中學到的。

在 Chrome DevTools 中,檢查 SVG 并選擇 <path> 元素,您會注意到它末尾旁邊的 == $0,保持選中狀態(tài),將其移至控制臺并編寫以下腳本。

$0.getTotalLength()
// 139.46

$0 是一種從 DOM 中選擇元素的快速方法,無需進行如下操作:

let sectionPath = document.querySelector('#path');
console.log(sectionPath.getTotalLength());

這是本示例上下文中的一個快速提示。

現(xiàn)在我們有了長度,我們可以用它做任何我們想做的事情。例如,我們可以在懸停時對其進行動畫處理。

.c-section__title--dashed path {
stroke-dasharray: 139;
stroke-dashoffset: 0;
transition: 0.7s;
}

.c-section__title--dashed:hover path {
stroke-dashoffset: 139;
}

代碼演示地址:https://codepen.io/shadeed/pen/xxXmyWE

或者我們可以簡單地把它變成一條虛線(在這種情況下我們真的不需要知道路徑長度)。

圖片

帶有 SVG 的自定義鏈接下劃線

我們可以使用 SVG 創(chuàng)建自定義鏈接下劃線來激發(fā)快樂,我?guī)啄昵皠?chuàng)建了一個腳本,它隨機生成一條路徑并在懸停時重新繪制它。

前后預覽效果如下:

圖片

我們的想法是我們要為每個鏈接插入一個 SVG,它看起來像下面這樣:

<svg width="400" height="35" xmlns="http://www.w3.org/2000/svg">
<path id="pathItem"
d="M5 5 Q 30 15 170 5"
stroke="black"
fill="transparent"
stroke-width="7"
stroke-linecap="round"/>
</svg>

神奇的是通過改變 d 屬性值來實現(xiàn)的。這是一個顯示路徑實際繪制方式的視覺效果。

圖片

圖片

代碼演示地址:https://codepen.io/shadeed/pen/OeNbMO

定制 SVG 膠帶效果

在處理客戶項目時,我需要一種將磁帶附加到部分內(nèi)容的方法,該方法可以使用 CSS 放置在任何地方,并且足夠動態(tài),僅通過一個 CSS 變量即可更改其顏色。

效果如下圖:

圖片

在 Adobe Illustrator 中,我將磁帶分為幾層:

  • 基礎:采用填充顏色
  • 透明黑色:顯示較暗的區(qū)域
  • 透明白色:顯示較亮的區(qū)域

圖片

讓我們看一下 SVG 代碼。


<svg>
<defs>
<g id="tape" fill="currentColor">
<!-- path contents -->
</g>
</defs>
</svg>

請注意,我添加了 fill=currentColor。currentColor 關鍵字將繼承 CSS color 屬性的值,以便我們可以僅使用一個屬性動態(tài)更改顏色。

鑒于我們有一個純色的底座,以及另外兩層用于明暗區(qū)域的圖層,因此,更改顏色會產(chǎn)生不同外觀的膠帶。

圖片

更好的是,我們可以將 SVG 轉換為模板,并從 <use> SVG 元素中獲得幫助,以便在不復制 SVG 的情況下重用膠帶效果。

<svg style="display: none;">
<defs>
<g id="tape" fill="currentColor">
<!-- path contents -->
</g>
</defs>
</svg>

<!-- An example of using the tape from a template -->
<svg class="tape" style="--angle: 10deg; color: red; --size: 120px;" aria-hidden="true" focusable="false" viewBox="0 0 123 47">
<use href="#tape"></use>
</svg>

請注意我是如何通過 <use> 元素添加磁帶的。這樣做的好處是使用 CSS 變量作為內(nèi)聯(lián)樣式。

下面是 CSS 的樣子:


.tape {
width: var(--size);
transform: rotate(var(--angle));
}

源碼演示地址:https://codepen.io/shadeed/pen/OJRYaZK

最后總結

借助 SVG 構建 UI 組件可以讓事情變得更簡單、更直接,一些 UI 組件可能不是 100% 完美的用例或 SVG(例如:頭像剪裁),但這取決于您正在處理的項目需求。

你有使用 SVG 和 CSS 的用例嗎?如果有的話,歡迎您跟我們一起來分享。如果您覺得我這篇文章內(nèi)容對你有幫助的話,請記得點贊我,關注我,并將它分享給您的朋友,也許能夠幫助到他。

最后,感謝您的閱讀,編程快樂!

責任編輯:華軒 來源: web前端開發(fā)
相關推薦

2024-01-29 09:33:48

CSS前端SVG

2020-07-28 15:20:43

PythonUI代碼

2021-01-20 13:50:36

鴻蒙HarmonyOS應用開發(fā)

2024-04-08 09:11:13

SVG前端CSS

2020-12-28 07:52:50

CSS網(wǎng)站Header

2022-09-20 12:21:25

Vue2Vue3$attrs

2012-06-15 11:32:19

ibmdw

2022-07-21 07:05:13

粒子動畫CSS

2022-02-08 15:55:00

Vue組件庫Vue Demi

2009-06-14 17:56:56

ibmdwWebSphere

2024-05-16 10:35:09

SVGCSS背景平鋪

2025-01-17 16:53:44

2009-06-25 13:03:48

JSF的UI組件

2024-09-13 09:55:38

RustP2P網(wǎng)

2022-11-28 17:22:02

CanvasCSS

2012-05-08 10:20:36

HTML5

2009-06-24 17:05:10

2021-01-19 12:16:10

CSS前端UI

2010-08-03 15:36:38

FlexBuilder

2023-10-10 09:00:00

CSSJavaScript
點贊
收藏

51CTO技術棧公眾號

蜜桃久久久久久| 精品视频99| 精品久久久视频| 欧洲亚洲一区二区| 国产超碰人人模人人爽人人添| 在线看片成人| 永久免费精品影视网站| 中文字幕avav| 欧美xxxx做受欧美护士| 亚洲免费在线视频一区 二区| 国产一区二区精品免费| 中文无码av一区二区三区| 欧美久久一区| 亚洲精品视频在线观看视频| av在线网站免费观看| 六月婷婷综合| 亚洲午夜国产一区99re久久| 午夜一区二区三区| 四虎永久在线观看| 国产最新精品免费| 国产成人精品日本亚洲专区61| 亚洲波多野结衣| 国产欧美日韩视频在线| 精品日韩在线观看| 99re精彩视频| 欧美片第一页| 亚洲成人1区2区| 黄色一级片网址| 国产香蕉在线| 91在线看国产| 国产精品久久久久久久久久直播 | www.中文字幕久久久| 成人三级伦理片| 91久久久久久久久| 中日韩av在线| 久久经典综合| 136fldh精品导航福利| 亚洲欧美小视频| 日韩久久精品网| 亚洲色图欧美制服丝袜另类第一页| 国产xxx在线观看| 国产精品国产亚洲精品| 欧美在线色视频| 久久久久久香蕉| 偷拍视频一区二区三区| 欧美日韩国产在线| www.av中文字幕| a'aaa级片在线观看| 一区二区三区在线免费播放| 在线不卡日本| 日本网站在线免费观看视频| 国产精品妹子av| 亚洲欧美日韩另类精品一区二区三区| 婷婷国产在线| 私拍精品福利视频在线一区| 欧美电视剧在线看免费| 四虎国产精品永久免费观看视频| 99视频这里有精品| 91精品国产丝袜白色高跟鞋| 不用播放器的免费av| 亚洲精品一区二区在线播放∴| 欧美日韩一区高清| 欧美日韩一区二区三区69堂| 小说区图片区亚洲| 91精品欧美久久久久久动漫| www,av在线| 日韩精品成人在线观看| 精品日韩一区二区三区| 国模私拍在线观看| 亚洲丁香日韩| 在线看日韩欧美| 成人欧美一区二区三区黑人一| 欧美a级片视频| 91视频精品| 一区二区三区欧美视频| 日本久久高清视频| 污污在线观看| 狠狠干狠狠久久| 视色视频在线观看| 久久伊人精品| 亚洲国产日韩一区| 久久久久久久久久久久| 国产韩日影视精品| 欧美黄色片视频| 无码人妻丰满熟妇精品区| 毛片av一区二区| 成人h在线播放| 狠狠人妻久久久久久| 视频在线观看一区二区三区| 成人黄色片在线| 欧美一级在线免费观看| 久久久久久久久一| 中文字幕久久一区| 黄色在线观看www| 欧美日韩午夜在线视频| 69xxx免费视频| 欧美日韩国产传媒| 欧美成人在线影院| 精品视频一二三区| 国产伦精品一区二区三区免费| 久久99国产精品99久久| 欧美r级在线| 色综合天天综合网国产成人综合天| 性chinese极品按摩| 久草精品视频| 久久久精品欧美| 国产免费一区二区三区四区五区| 国模大尺度一区二区三区| 欧美日韩国产免费一区二区三区 | 天堂网一区二区| 国产aⅴ综合色| 一区二区三区观看| 中老年在线免费视频| 777午夜精品视频在线播放| 国产又爽又黄无码无遮挡在线观看| 91欧美大片| 国产成人一区二区三区小说| 好吊色在线观看| 亚洲欧美另类综合偷拍| 99视频免费播放| 国产精品伦理一区| 老司机亚洲精品一区二区| 亚洲精品久久久久久下一站| 成人在线观看免费完整| 日本中文字幕一区| 快播日韩欧美| av电影院在线看| 精品日韩一区二区三区 | 日韩精品永久网址| 欧洲亚洲免费视频| 色婷婷av一区二区三区之红樱桃 | 久久精品最新地址| 亚洲高清视频免费观看| 久久亚洲一区二区三区明星换脸| avav在线播放| **爰片久久毛片| 欧美风情在线观看| 国产成a人亚洲精v品无码 | av动漫免费观看| 国产精品久久久久久久久免费高清 | 亚洲一级片网站| 精品国产91乱码一区二区三区四区| 91国产一区在线| 五月天婷婷激情网| 同产精品九九九| 强迫凌虐淫辱の牝奴在线观看| 极品尤物久久久av免费看| 国产传媒一区二区| 天堂va在线| 亚洲精品一区二区三区99| 黄色一级视频免费观看| 国产91综合一区在线观看| 日韩中文字幕亚洲精品欧美| 麻豆精品一区| 欧美日韩不卡合集视频| 亚洲成人77777| 亚洲一区二区高清| 青青草视频网站| 国产日韩一区| 日本一区二区视频| 欧洲亚洲精品| 欧美激情视频一区二区三区不卡| 免费av一级片| 色偷偷88欧美精品久久久| 男人天堂av电影| 奇米影视在线99精品| 国产精品一二三四区| 国产伦精品一区二区三区免费视频 | 高h震动喷水双性1v1| 亚洲图片欧美视频| 国产美女喷水视频| 老司机精品视频导航| 正在播放91九色| 大香伊人久久精品一区二区| 欧美一区二三区| av网站无病毒在线| 日韩欧美在线影院| 国产成人自拍视频在线| 中文字幕av在线一区二区三区| 日韩av片免费观看| 在线综合亚洲| 亚洲色图自拍| 久久免费视频66| 国产欧美一区二区三区久久| 污影院在线观看| 亚洲午夜女主播在线直播| 国产免费一区二区三区最新不卡 | 久久九九影视网| 中文字幕丰满乱码| 亚洲免费成人| 亚洲一区三区| 久久夜色电影| 国产欧洲精品视频| 激情视频网站在线播放色 | 6699嫩草久久久精品影院| 国产亚洲精品一区二区| 亚洲AV无码精品国产| 欧美中文字幕一区| 日韩av片在线播放| 亚洲欧洲精品一区二区三区不卡| 亚洲麻豆一区二区三区| 久久99久久久欧美国产| www黄色av| 欧美日韩日本国产亚洲在线| 日本一区二区三区视频免费看 | 亚洲成avwww人| 黄色污污视频软件| 亚洲成av人片观看| 神马久久精品综合| 国产午夜亚洲精品午夜鲁丝片| 成年人性生活视频| 麻豆成人在线观看| 成年人免费大片| 亚洲精品日韩久久| 国产专区在线视频| 欧美mv日韩| 欧美在线播放一区| 国产美女撒尿一区二区| 51成人做爰www免费看网站| 国产亚洲精品精品国产亚洲综合| 午夜精品久久久久久久99黑人 | 欧美性高潮在线| 国产主播在线播放| 一区二区激情视频| 欧美第一页在线观看| 国产精品精品国产色婷婷| 最近中文字幕在线mv视频在线 | 国产91av视频在线观看| 欧美色就是色| 欧美精品一区二区三区四区五区| 国产精品久久久久av蜜臀| 97超碰人人看人人| 久久免费精品| 亚洲999一在线观看www| 亚洲毛片亚洲毛片亚洲毛片| 午夜国产精品视频免费体验区| 亚洲成人自拍| 成人vr资源| 亚洲电影一二三区| 日韩精品二区| 一区二区三区四区国产| 日本一二区不卡| 亚洲欧美日韩精品久久久| 动漫一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 久久久黄色大片| 都市激情亚洲色图| 69视频免费在线观看| 天天色 色综合| 国产成人精品一区二三区| 偷偷要91色婷婷| 国产三级av片| 色菇凉天天综合网| 成人免费一级片| 欧美三级中文字幕在线观看| 中国女人一级一次看片| 7777精品伊人久久久大香线蕉完整版 | 久久综合国产| 中文字幕在线中文字幕日亚韩一区| 欧美高清视频手机在在线| 老司机av福利| 欧美激情性爽国产精品17p| 隔壁人妻偷人bd中字| 亚洲裸体俱乐部裸体舞表演av| 日本欧美黄色片| 日韩二区在线观看| 最新免费av网址| 国产精品一二三区视频| 亚洲免费观看高清完整版在线观看 | 国产精品美女久久久久久久久久久| 国产在线免费av| 亚洲欧美区自拍先锋| 日韩欧美激情视频| 在线观看日韩毛片| 国产又粗又猛又爽| 精品成人私密视频| 免费在线观看一级毛片| 中文字幕亚洲情99在线| av在线播放观看| 性欧美xxxx| a成人v在线| 91超碰在线电影| 亚洲警察之高压线| 亚洲一区免费看| 亚洲第一黄网| 精品日韩久久久| 国产成人免费在线观看| www.色天使| 亚洲欧美日韩国产一区二区三区| 五月天综合在线| 欧美军同video69gay| 久久久久久国产免费a片| 自拍偷自拍亚洲精品播放| 国产精品99精品| 欧美三级蜜桃2在线观看| 成人精品在线播放| 中文字幕日韩高清| 波多野结衣在线观看| 国产精品网红福利| 卡通动漫精品一区二区三区| 国产精品h视频| 模特精品在线| 色哟哟网站在线观看| 国产区在线观看成人精品| 久草成人在线视频| 欧美日韩国产影片| 性xxxxbbbb| 欧美国产日韩中文字幕在线| 第四色男人最爱上成人网| 99在线热播| 99精品小视频| 精品国产成人av在线免| 国产一区二区三区香蕉| 日本成人免费视频| 欧美日韩国产一区二区| 成人av无码一区二区三区| 中文字幕日韩精品有码视频| 中文字幕资源网在线观看免费| av在线不卡一区| 天天影视综合| 999精品视频在线| 久久综合五月天婷婷伊人| 免费在线观看黄视频| 欧美精品日韩一本| 久久久久久久久久码影片| 天天揉久久久久亚洲精品| 日av中文字幕| 91小视频在线| 日韩久久久久久久久| 精品久久久久香蕉网| 亚洲小说区图片区都市| 91精品久久久久久久久不口人| 精品国产一区二区三区小蝌蚪 | 一区二区精品| 国产精品果冻传媒| 亚洲综合在线免费观看| 国产精品一区二区av白丝下载| 中文字幕亚洲欧美在线| 播放一区二区| 五月天久久狠狠| 青娱乐精品视频| 亚洲欧美va天堂人熟伦| 色婷婷综合久久久久中文一区二区| 欧美性受xxxx狂喷水| 欧美精品激情视频| 国产精品任我爽爆在线播放| www.日本三级| zzijzzij亚洲日本少妇熟睡| 国产精品第一页在线观看| 精品久久久久av影院| segui88久久综合9999| 久久久久九九九| 久久精品一区| 免费黄色在线网址| 欧美日韩大陆一区二区| 好吊日视频在线观看| 亚洲永久在线观看| 黄色日韩在线| 日韩成人av一区二区| 欧美日韩亚洲网| 国产日本在线视频| 国产色婷婷国产综合在线理论片a| 成人久久电影| 日韩精品在线播放视频| 亚洲一区二区欧美激情| 亚洲区小说区图片区| 国产成人精品在线观看| 久久精品国产www456c0m| www.51色.com| 亚洲成人www| 嫩草研究院在线| 成人激情免费在线| 国内自拍视频一区二区三区| 特大黑人巨人吊xxxx| 欧美视频日韩视频在线观看| 精产国品自在线www| 国产99午夜精品一区二区三区| 国产精品日韩| 男人av资源站| 精品成人私密视频| 不卡亚洲精品| av一区二区三区免费观看| 91原创在线视频| 一本色道久久综合精品婷婷| 欧美国产在线视频| 国产亚洲一区| 真实乱偷全部视频| 日本韩国精品在线| 最新国产在线拍揄自揄视频| 免费一区二区三区| 国产一区二区免费看| 日韩久久中文字幕| 久久在线观看视频| 少妇精品久久久一区二区| 两女双腿交缠激烈磨豆腐| 91久久精品网| 欧美色图天堂| 中文字幕剧情在线观看一区| 91蜜桃网址入口| 国产精品女人久久久|