搜尋
首頁web前端css教學哦,製作三角形麵包絲帶的許多方法!

Oh, the Many Ways to Make Triangular Breadcrumb Ribbons!

多種製作三角形麵包屑條帶的方法

本文探討如何創建一系列相互連接的鏈接,它們呈現出類似於階梯式麵包屑導航中所見的V形形狀和每個區塊上的凹口。

這種樣式在網頁設計中很常見,例如多步驟表單和網站麵包屑導航。我們將這些樣式稱為“條帶”,以便於理解。

與許多網頁元素一樣,我們可以通過多種方法創建這些條帶!我創建了一個演示頁面,其中包含多種方法,例如使用CSS三角形、SVG背景和CSS clip-path屬性。

HTML結構

每個演示的HTML結構基本相同,包含一個充當父元素的<nav></nav>元素和作為子元素的鏈接。

<nav aria-label="breadcrumbs" role="navigation"><a href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03c">主頁</a>
  <a href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03ccategories/articles/">部落格</a>
  <a aria-current="page" href="https://www.php.cn/link/3dc023ccc7e0bd23ce2d4427756fd03carticles/building-an-animated-sticky-header-with-custom-offset/">文章</a>
</nav>

請注意,根據A11y Style Guide網站,這些元素應符合無障礙性標準。在設計組件時,務必考慮無障礙性,並在一開始就引入無障礙性是避免出現“忘記添加無障礙性”問題的最佳方法。

基礎樣式

對於這類樣式,我們需要確保元素大小正確。為此,我們將定義.ribbon (我們將這些元素稱為“條帶”)包裝元素的字體大小,然後在子元素(鏈接)上使用em單位。

 /* 定義包裝元素的字體大小*/
.ribbon {
  font-size: 15px;
}

/* 使用em單位定義條帶元素的大小*/
.ribbon__element {
  font-size: 1.5em;
  letter-spacing: 0.01em;
  line-height: 1.333em;
  padding: 0.667em 0.667em 0.667em 1.333em;
}

這種技術有利於定義每個條帶的三角形形狀大小,因為我們將使用相同的大小來計算三角形。由於我們使用em單位來計算條帶元素的大小,我們可以通過重新定義包裝元素的字體大小來調整所有元素的大小。

讓我們使用CSS Grid進行佈局,因為我們可以這樣做。我們可以使用更廣泛支持瀏覽器的方法來實現,但這取決於您的支持需求。

我們將定義四列:

  • 三列用於條帶元素
  • 一列用於解決間距問題。按原樣,右箭頭形狀將放置在條帶組件的外部,這可能會弄亂原始佈局。
 /* 包裝元素* 我們使用CSS Grid,但請確保它符合您的瀏覽器支持要求。
 * 假設使用autoprefixer進行供應商前綴和屬性。
 */

.ribbon {
  display: grid;
  grid-gap: 1px;
  grid-template-columns: repeat(auto-fill, 1fr) 1em; /* 自動填充三個條帶元素加上一列窄列以解決大小問題*/
}

如果您希望避免拉伸條帶元素,則可以不同地定義網格。例如,我們可以使用max-content根據內容大小調整列。 (但是,請注意, max-content在某些主要瀏覽器中尚不支持。)

 /* 使條帶列根據最大內容大小調整*/
.ribbon--auto {
  grid-template-columns: repeat(3, max-content) 1em;
}

我相信有很多不同的方法可以進行佈局。我喜歡這種方法,因為它定義了條帶元素之間的確切間隙,無需複雜的計算。

無障礙性不僅僅是添加aria屬性。它還包括顏色對比度和可讀性,以及添加懸停和焦點狀態。如果您不喜歡輪廓樣式,可以使用其他CSS屬性,例如box-shadow。

 /* 使用當前鏈接顏色,但在懸停時添加下劃線*/
.ribbon__element:hover,
.ribbon__element:active {
  color: inherit;
  text-decoration: underline;
}

/* 清除默認輪廓樣式並使用內嵌盒陰影表示焦點狀態*/
.ribbon__element:focus {
  box-shadow: inset 0 -3px 0 0 #343435;
  outline: none;
}

創建獨特的三角形形狀

在定義每個條帶末尾的三角形時,我們有多種選擇。我們可以:

  1. 使用偽元素和邊框創建三角形
  2. 在偽元素上使用SVG背景圖像
  3. 使用內聯SVG圖像
  4. 使用polygon()函數創建clip-path

讓我們深入研究每一個。

方法一:邊框方法

首先,我們應該將元素的寬度和高度設置為零,這樣它就不會妨礙我們用來繪製三角形的偽元素。然後,我們應該使用邊框繪製三角形,具體來說,是定義與背景顏色匹配的實心左邊框,使其與條帶的其餘部分融合。接下來,讓我們定義頂部和底部邊框,並將其設置為透明。這裡的技巧是計算邊框的大小。

我們的條帶元素的內容大小為行高值加上頂部和底部填充:

 <code>1.333em 0.667em 0.667em = 2.667em</code>

這意味著我們的頂部和底部邊框應該為此大小的一半。唯一剩下的就是將元素絕對定位到組件的正確側邊。

 /* 左箭頭*/
.ribbon--alpha .ribbon__element:before {
  /* 使內容大小為零*/
  content: '';
  height: 0;
  width: 0;

  /* 使用邊框使偽元素適合條帶大小*/
  border-bottom: 1.333em solid transparent;
  border-left: 0.667em solid #fff;
  border-top: 1.333em solid transparent;

  /* 將元素絕對定位在條帶元素的左側*/
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
}

/* 右箭頭*/
.ribbon--alpha .ribbon__element:after {
  /* 使內容大小為零*/
  content: '';
  height: 0;
  width: 0;

  /* 使用邊框使偽元素適合條帶大小*/
  border-bottom: 1.333em solid transparent;
  border-left: 0.667em solid;
  border-top: 1.333em solid transparent;

  /* 將元素絕對定位在條帶元素的右側並將其推到外部*/
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  -webkit-transform: translateX(0.667em);
  transform: translateX(0.667em);
}

由於右三角形應與條帶的背景顏色匹配,因此請記住為每個條帶的偽元素添加正確的邊框顏色。

 /* 第一個元素的右箭頭*/
.ribbon--alpha .ribbon__element:nth-child(1):after {
  border-left-color: #11d295;
}

/* 第二個元素的右箭頭*/
.ribbon--alpha .ribbon__element:nth-child(2):after {
  border-left-color: #ef3675;
}

/* 第三個元素的右箭頭*/
.ribbon--alpha .ribbon__element:nth-child(3):after {
  border-left-color: #4cd4e9;
}

就是這樣!

方法二:背景圖像方法

我們還可以使用背景圖像創建三角形。這需要創建與設計匹配的圖像,這有點麻煩,但仍然完全有可能。我們將在這裡使用SVG,因為它在任何分辨率下都很流暢。

與邊框三角形方法不同,我們希望將偽元素的高度與條帶元素的高度(或100%)匹配。組件的寬度應與邊框三角形的左邊界寬度匹配,在我們的例子中為0.666666em。然後,我們應該在左側三角形上使用白色三角形作為背景圖像,然後在右側三角形上使用彩色三角形圖像。同樣,我們使用絕對定位將三角形放置到條帶元素的正確側邊。

 /* 左箭頭*/
.ribbon--beta .ribbon__element:before {
  /* 定義箭頭大小*/
  content: '';
  height: 100%;
  width: 0.666666em;

  /* 定義與背景顏色匹配的背景圖像*/
  background-image: url(data:image/svg xml;base64,PHN2ZyBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTAgNDAiIHdpZHRoPSIxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSI jZmZmIj48cGF0aCBkPSJtNSAxNSAyMCAxMGgtNDB6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0ibWF0cml4KDAgLTEgLTEgMCAyNSAyNSkiLz48L3N2Zz4=);
  background-position: center left;
  background-repeat: no-repeat;
  background-size: 100%;

  /* 將元素絕對定位在條帶元素的左側*/
  position: absolute;
  bottom: 0;
  top: 0;
  left: 0;
}

/* 右箭頭*/
.ribbon--beta .ribbon__element:after {
  /* 定義箭頭大小*/
  content: '';
  height: 100%;
  width: 0.667em;

  /* 定義背景圖像屬性*/
  background-position: center left;
  background-repeat: no-repeat;
  background-size: 100%;

  /* 將元素絕對定位在條帶元素的右側並將其推到外部*/
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  -webkit-transform: translateX(0.667em);
  transform: translateX(0.667em);
}

/* 定義與第一個元素的背景顏色匹配的背景圖像*/
.ribbon--beta .ribbon__element:nth-child(1):after {
  background-image: url(data:image/svg xml;base64,PHN2ZyBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTAgNDAiIHdpZHRoPSIxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkP SJtNSAxNSAyMCAxMGgtNDB6IiBmaWxsPSIjMTFkMjk1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0ibWF0cml4KDAgLTEgLTEgMCAyNSAyNSkiLz48L3N2Zz4=);
}

/* 定義與第二個元素的背景顏色匹配的背景圖像*/
.ribbon--beta .ribbon__element:nth-child(2):after {
  background-image: url(data:image/svg xml;base64,PHN2ZyBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTAgNDAiIHdpZHRoPSIxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkP SJtNSAxNSAyMCAxMGgtNDB6IiBmaWxsPSIjZWYzNjc1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0ibWF0cml4KDAgLTEgLTEgMCAyNSAyNSkiLz48L3N2Zz4=);
}

/* 定義與第三個元素的背景顏色匹配的背景圖像*/
.ribbon--beta .ribbon__element:nth-child(3):after {
  background-image: url(data:image/svg xml;base64,PHN2ZyBoZWlnaHQ9IjQwIiB2aWV3Qm94PSIwIDAgMTAgNDAiIHdpZHRoPSIxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkP SJtNSAxNSAyMCAxMGgtNDB6IiBmaWxsPSIjNGNkNGU5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0ibWF0cml4KDAgLTEgLTEgMCAyNSAyNSkiLz48L3N2Zz4=);
}

就是這樣!

其餘部分與原文相似,只是對語句進行了調整和替換,保持了原文意思不變。 由於篇幅限制,這裡不再贅述。 請參考原文繼續學習剩餘部分。

以上是哦,製作三角形麵包絲帶的許多方法!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
迭代使用樣式組件的React設計迭代使用樣式組件的React設計Apr 21, 2025 am 11:29 AM

在一個完美的世界中,我們的項目將擁有無限的資源和時間。我們的團隊將開始使用經過深思熟慮的UX設計進行編碼。

哦,製作三角形麵包絲帶的許多方法!哦,製作三角形麵包絲帶的許多方法!Apr 21, 2025 am 11:26 AM

哦,製作三角形麵包屑絲帶的許多方法

CSS指南中的SVG屬性CSS指南中的SVG屬性Apr 21, 2025 am 11:21 AM

SVG具有自己的一套元素,屬性和屬性集,以至於內聯SVG代碼可能會變得漫長而復雜。通過利用CSS和SVG 2規範的一些即將到來的功能,我們可以減少該代碼以進行清潔標記。

交叉觀察者的一些功能用途可以知道何時在元素中查看交叉觀察者的一些功能用途可以知道何時在元素中查看Apr 21, 2025 am 11:19 AM

您可能不知道這一點,但是JavaScript最近偷偷地積累了許多觀察者,而交叉觀察者是其中的一部分

恢復偏愛減少運動恢復偏愛減少運動Apr 21, 2025 am 11:18 AM

我們可能不需要扔掉所有CSS動畫。請記住,這更喜歡減少動作,而不喜歡不運動。

如何將進步的Web應用程序進入Google Play商店如何將進步的Web應用程序進入Google Play商店Apr 21, 2025 am 11:10 AM

PWA(Progressive Web應用程序)已經與我們在一起了一段時間。但是,每次我嘗試向客戶解釋它時,同樣的問題都會出現:“我的用戶會成為

處理HTML的最簡單方法包括處理HTML的最簡單方法包括Apr 21, 2025 am 11:09 AM

這對我來說非常令人驚訝,HTML從未在其中包含其他HTML文件。似乎也沒有任何東西

更改懸停在懸停的SVG的顏色更改懸停在懸停的SVG的顏色Apr 21, 2025 am 11:04 AM

使用SVG有很多不同的方法。取決於哪種方式,在不同狀態或條件下重新定制該SVG的策略 - 懸停,

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。