婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用HTML和CSS實現的標簽云效果(附demo)

使用HTML和CSS實現的標簽云效果(附demo)

熱門標簽:智能語音電銷機器人客戶端 西安金倫外呼系統 高德地圖標注廁所 地圖標注員工作內容 地圖標注沿海城市房價 江西ai電銷機器人如何 中國地圖標注城市的 通遼地圖標注app 威海語音外呼系統平臺

標簽云的效果在博客和網站上不難見到,它其實就是帶有超鏈接的某些關鍵字,為了達到強調主題的作用。通常出現概率比較大或者受歡迎的標簽文字顯示比較大,相反的就顯示的小。

 

來源于TagCrowd.com

我們就不去深入研究標簽云帶來的效率上的提升和可用性的細節,僅僅在外觀上帶來的美感和對全站或一整篇文章所起到的高度概括的作用就不容忽視了。

接下來,我們將討論如何用HTML和CSS來創建標簽云效果。注意,我們僅僅討論如何實現這種UI效果而不去深究標簽的權重或受歡迎程度是怎么算出來的。

HTML基礎結構

前面說了,標簽云就是一個連接列表。所以從語義化的視角,使用無序列表來表達每個標簽是合理的,不用考慮按歡迎程度去排列,否則就毫無意義了。

在每個列表項里包含一個超鏈接標簽,所以大體結構就是下面的樣子:

<ul>
  <li><a href="/tag/word1">Word1</a></li>
  <li><a href="/tag/word2">Word2</a></li>
  <li><a href="/tag/word3">Word3</a></li>
  <!-- ... -->
</ul>

每個標簽的權重要提前算好,然后把它加到 <a> 上或者 <li> 上,我們就暫且把它加到鏈接上。

權重大的標簽對應顯示的文字也大,代表了它的受歡迎程度大。

<ul>
  <li><a href="/tag/word1" data-weight="3">Word1</a></li>
  <li><a href="/tag/word2" data-weight="7">Word2</a></li>
  <li><a href="/tag/word3" data-weight="4">Word3</a></li>
  <!-- ... -->
</ul>

注意:這里的data-weight是通過data-count和data-total計算而來的,這里沒辦法直接通過兩個屬性計算表示,所以我們把目標聚焦在data-weight這樣一個屬性上。

這樣基礎的HTML結構代碼就寫好了,只要稍加一些屬性就完美了。

  • class:有助于在添加樣式的時候確定是哪個標簽云
  • role:這個是一個導航組件,在屏幕閱讀器上標識和輔助作用
  • aria-label:給輔助功能添加標題和描述

注意:如果列表位于 <nav> 標簽內,就不需要添加 role="navigation" ,可以使用aria-labelledby代替導航標簽來指向導航標題。

讓我們來完善一下列表數據,添加一些和開發相關的名詞作為標簽,這樣看起來更貼近實際一點。

<ul class="cloud" role="navigation" aria-label="Webdev tag cloud">
  <li><a data-weight="4" href="/tag/http">HTTP</a></li>
  <li><a data-weight="2" href="/tag/ember">Ember</a></li>
  <li><a data-weight="5" href="/tag/sass">Sass</a></li>
  <li><a data-weight="8" href="/tag/html">HTML</a></li>
  <li><a data-weight="6" href="/tag/flexbox">FlexBox</a></li>
  <li><a data-weight="4" href="/tag/api">API</a></li>
  <li><a data-weight="5" href="/tag/vuejs">VueJS</a></li>
  <li><a data-weight="6" href="/tag/grid">Grid</a></li>
  <li><a data-weight="3" href="/tag/rest">Rest</a></li>
  <li><a data-weight="9" href="/tag/javascript">JavaScript</a></li>
  <li><a data-weight="3" href="/tag/animation">Animation</a></li>
  <li><a data-weight="7" href="/tag/react">React</a></li>
  <li><a data-weight="8" href="/tag/css">CSS</a></li>
  <li><a data-weight="1" href="/tag/cache">Cache</a></li>
  <li><a data-weight="3" href="/tag/less">Less</a></li>
</ul>

下面是標簽云現在看起來的效果:

這是還沒有添加任何樣式的結果,然后給它添加一些樣式

給標簽云添加樣式

以下是我們要通過添加樣式解決的:

  • 讓標簽以行內元素顯示
  • 讓每個標簽的font-size屬性根據 data-weight 大小顯示
  • 在標簽的右邊加上權重
  • 讓標簽的顏色隨機顯示
  • 給標簽添加:hover和:focus動態樣式

給ul添加樣式

首先移除列表前面的小圓點和縮進

list-style: none;
padding-left: 0;

然后設置 ul 以Flexbox顯示,并且水平垂直居中保證所有的標簽元素在一行或者多行內顯示

display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;

添加上行高相互之間保持一定的垂直距離,最終的ul元素的樣式如下:

ul.cloud {
  list-style: none;
  padding-left: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  line-height: 2.5rem;
}

然而這個時候標簽云看起來還差很多

 

根據權重調整標簽的大小

讓我們開始給標簽一些小的變化

ul.cloud a {
  color: #a33;
  display: block;
  font-size: 1.5rem;
  padding: 0.125rem 0.25rem;
  text-decoration: none;
  position: relative;
}

通過上面的樣式,所有的標簽變成淡紅色并且設置1.5rem大小

然而我們的要求是字體大小根據 data-weight 而來的,怎么實現呢?

web標準有一種方式是CSS可以通過 attr() 方法讀取HTML的data屬性值,所以我們可以通過以下方式讀取 data-weight

attr([attribute-name] [attribute-unit]? [, default-value]?)

不幸的是,目前任何瀏覽器均不支持該表示法和功能。相反,attr()將僅返回一個字符串,并且只能在content屬性中使用。

如果web標準支持這種做法,那好辦,我們可以直接讀取屬性權重的數據,將它們保存到CSS變量中,并直接對其進行操作,如下所示:

ul.cloud a {
  --size: attr(data-weight number, 2); 
  font-size: calc(var(--size) * 1rem);
}

但是這樣不行,我們只能通過CSS規則,屬性選擇器:data-attribute

ul.cloud a[data-weight="1"] { --size: 1; }
ul.cloud a[data-weight="2"] { --size: 2; }
ul.cloud a[data-weight="3"] { --size: 3; }
ul.cloud a[data-weight="4"] { --size: 4; }
ul.cloud a[data-weight="5"] { --size: 5; }
ul.cloud a[data-weight="6"] { --size: 6; }
ul.cloud a[data-weight="7"] { --size: 7; }
ul.cloud a[data-weight="8"] { --size: 8; }
ul.cloud a[data-weight="9"] { --size: 9; }

ul.cloud a {
  --size: 4;
  font-size: calc(var(--size) * 0.25rem + 0.5rem);
  /* ... */
}

為了避免將字體大小直接設置成權重導致太大,因此通過一定的方法計算,結果顯示如下:

現在看來已經小有成就。

為標簽添加權重顯示

我們常見的標簽云效果在標簽的旁邊都有權重顯示,權重已經有了,我們要將它展示在偽元素 ::after 的content中

ul.cloud[data-show-value] a::after {
  content: " (" attr(data-weight) ")";
  font-size: 1rem;
}

然后還需要給 ul 元素增加 [data-show-value] 屬性選擇器,將它的值設為true或者false來控制標簽后面的數字權重是否顯示

注意: data-show-value 屬性選擇器的值為布爾值,即使你設置為false,它也會顯示,如果不讓它顯示,就移除該屬性

這是顯示數字權重的效果

下面的案例中將不顯示標簽旁邊的數字

為標簽云添加顏色

所有的標簽一個顏色看起來很沉悶,我們將嘗試用兩種不同的方法來為它添加不同的顏色。

使用隨機生成的顏色

在CSS中沒有隨機數這么一說(雖然可以模擬出來)。我們將要做的是根據標簽的序列號來給它定義不同的顏色,方法如下:

ul.cloud li:nth-child(2n+1) a { --color: #181; }
ul.cloud li:nth-child(3n+1) a { --color: #33a; }
ul.cloud li:nth-child(4n+1) a { --color: #c38; }

通過這種方式我們給它添加了綠色,藍色和紫色代替了之前的淡紅色,雖然也不是完全隨機(有一定的規律在),但是用戶很難發現。

 

使用同一種顏色的不同透明度值

我們通過增加標簽對比度來達到強調受歡迎程度的效果,在淺色背景下,使用深色更加明顯。

HSL格式的顏色值可以實現,但是我們采用最快的方式,直接對標簽設置透明度,透明度的值根據權重值計算而來:

看下變化后的效果

 

定義它的輪廓

當我們觸摸標簽的時候 outline 樣式會比較重要,尤其對于殘障人士在可訪問性方面。

我們將給 outline 添加和標簽字體顏色一致的邊框

ul.cloud a:focus {
  outline: 1px dashed;
} 

在這里我們是通過鼠標點擊事件去模擬的

添加動態效果

為了增加交互性,我們為它添加一個簡單的動畫:當用戶將鼠標移動或者懸停在一個標簽上時,標簽的背景色變換并且有一個水平展開的效果。

因為它是取決于狀態的動畫,所以我們將使用transition而不是animation動畫。

實現方式是通過 a 標簽的偽元素::before的寬度值變化,在focus和hover狀態下從0變為100%來達到這樣一個微交互。

CSS代碼和偽元素的狀態行為:

ul.cloud a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  width: 0;
  height: 100%;
  background: var(--color);
  transform: translate(-50%, 0);
  opacity: 0.15;
  transition: width 0.25s;
}

ul.cloud a:focus::before,
ul.cloud a:hover::before {
  width: 100%;
}

對于動畫效果:用戶不能根據自己的喜好來開啟或者關閉。如果真是一個需求的話,我們還是要尊重用戶的喜好移除動畫的。

可以通過媒體查詢特性 prefers-reduced-motion 來達到https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion

@media (prefers-reduced-motion) {
  ul.cloud * {
    transition: none !important;
  }
}

到此這篇關于使用HTML和CSS實現的標簽云效果(附demo)的文章就介紹到這了,更多相關HTML和CSS標簽云內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:眉山 晉中 營口 崇左 河池 青海 北海 阜陽

巨人網絡通訊聲明:本文標題《使用HTML和CSS實現的標簽云效果(附demo)》,本文關鍵詞  使用,HTML,和,CSS,實現,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用HTML和CSS實現的標簽云效果(附demo)》相關的同類信息!
  • 本頁收集關于使用HTML和CSS實現的標簽云效果(附demo)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    麻豆精品视频在线| 国产欧美精品一区二区色综合朱莉| 欧美无砖专区一中文字| 26uuu欧美日本| 亚洲成人www| a级精品国产片在线观看| 日韩欧美黄色影院| 亚洲成人免费av| 在线视频国产一区| 亚洲欧美日韩国产综合| 国产福利91精品一区二区三区| 欧美一区二区三区免费观看视频 | 欧美色综合网站| 亚洲欧美综合网| 国产成都精品91一区二区三| 精品国产制服丝袜高跟| 麻豆久久一区二区| 日韩一区二区三区高清免费看看| 午夜视频在线观看一区二区| 欧美色老头old∨ideo| 亚洲第四色夜色| 欧美日韩激情一区二区三区| 午夜欧美视频在线观看| 欧美人与性动xxxx| 日韩1区2区3区| 欧美一区二区三区在线观看视频| 日韩综合一区二区| 91精品国产综合久久久久| 日韩激情中文字幕| 日韩精品一区二区三区在线观看 | 色婷婷久久久综合中文字幕| 亚洲天堂免费在线观看视频| av中文字幕亚洲| 欧美精品一二三| 麻豆国产欧美一区二区三区| 欧美v日韩v国产v| 国产一区二区三区综合| 欧美激情一区在线观看| 91蜜桃在线免费视频| 亚洲精品日韩一| 欧美日韩第一区日日骚| 日本不卡一二三| 精品国产乱码久久久久久老虎| 亚洲国产日韩综合久久精品| 5月丁香婷婷综合| 国产一区在线看| 亚洲日韩欧美一区二区在线| 欧美日韩国产美| 国产一区二区在线观看视频| 国产精品色婷婷久久58| 九色综合狠狠综合久久| 国产色综合久久| 一本久久a久久免费精品不卡| 亚洲小说春色综合另类电影| 欧美成人精精品一区二区频| 成人av午夜影院| 视频一区中文字幕国产| 国产人成一区二区三区影院| 91麻豆福利精品推荐| 日本系列欧美系列| 中文字幕乱码久久午夜不卡| 色婷婷精品大视频在线蜜桃视频| 日韩 欧美一区二区三区| 久久久久99精品一区| 91国偷自产一区二区三区成为亚洲经典 | 麻豆精品精品国产自在97香蕉| 久久九九久精品国产免费直播| www.99精品| 蜜臀av一区二区三区| 国产精品伦理一区二区| 日韩三级在线观看| 一本一道综合狠狠老| 国产一区不卡视频| 亚洲成av人片一区二区梦乃| 久久久蜜臀国产一区二区| 欧美日韩在线直播| 成人国产精品免费观看| 日韩精品成人一区二区在线| 亚洲另类在线一区| 国产亚洲1区2区3区| 欧美三级午夜理伦三级中视频| 国产成人自拍网| 美腿丝袜一区二区三区| 亚洲成人综合网站| 欧美国产一区在线| 精品国产免费视频| 777奇米成人网| 欧美午夜影院一区| 97精品久久久午夜一区二区三区 | 曰韩精品一区二区| 中文字幕一区二区三区不卡在线 | 五月综合激情网| 亚洲黄色片在线观看| 综合色天天鬼久久鬼色| 久久久不卡影院| 欧美精品 国产精品| 99综合电影在线视频| 国产精品一级二级三级| 日韩不卡手机在线v区| 国产精品国产三级国产aⅴ无密码| 亚洲精品在线免费播放| 欧美在线观看视频一区二区三区| 国产精品一二三| www国产亚洲精品久久麻豆| 91精品国产入口在线| 一本一道综合狠狠老| 国产成人免费xxxxxxxx| 日韩影视精彩在线| 亚洲麻豆国产自偷在线| 国产亚洲污的网站| 国产人成亚洲第一网站在线播放| 欧美一区二区三区免费视频| 色婷婷av一区二区三区gif| 国产剧情在线观看一区二区| 日韩经典一区二区| 中文字幕av一区二区三区免费看| 国产精品视频在线看| 2017欧美狠狠色| 日韩精品最新网址| 9191久久久久久久久久久| 在线亚洲人成电影网站色www| 国产精品麻豆网站| 夜夜亚洲天天久久| 亚洲女同女同女同女同女同69| 欧美国产禁国产网站cc| 欧美v国产在线一区二区三区| 欧美日韩国产乱码电影| 91久久免费观看| 69久久夜色精品国产69蝌蚪网 | 夜夜精品浪潮av一区二区三区| 国产精品国产三级国产普通话99 | av电影在线观看完整版一区二区| 国产精品一卡二卡在线观看| 亚洲成人精品一区二区| 国产精品少妇自拍| 337p粉嫩大胆噜噜噜噜噜91av| 欧美在线你懂的| 欧美日韩日日骚| 精品国产乱码久久久久久图片| 欧美不卡123| 精品成人一区二区三区| 日韩视频免费观看高清完整版在线观看| 欧美精品在线一区二区三区| 在线观看91精品国产麻豆| 久久久激情视频| 国产精品超碰97尤物18| 亚洲欧洲精品一区二区精品久久久 | 777午夜精品免费视频| 6080亚洲精品一区二区| 日韩欧美一级特黄在线播放| 精品久久久久久久久久久久包黑料 | 狠狠色狠狠色合久久伊人| 国产在线精品免费av| 99视频国产精品| 91麻豆自制传媒国产之光| 在线免费观看视频一区| 777奇米四色成人影色区| 26uuu精品一区二区| 久久丝袜美腿综合| 67194成人在线观看| 国产精品久久久久aaaa樱花| 亚洲美女视频在线观看| 三级不卡在线观看| 激情综合网av| 国产乱对白刺激视频不卡| 97aⅴ精品视频一二三区| 欧美另类高清zo欧美| 欧美一二三区在线| 国产午夜久久久久| 欧美极品少妇xxxxⅹ高跟鞋| 日韩经典中文字幕一区| 国产伦精一区二区三区| 99精品久久只有精品| 欧美高清www午色夜在线视频| 2022国产精品视频| 依依成人综合视频| 99re热这里只有精品免费视频| 在线观看亚洲精品| 亚洲精品一区二区在线观看| 亚洲三级小视频| 天使萌一区二区三区免费观看| 99久久久国产精品| 日韩一区二区在线观看视频| 国产亚洲成av人在线观看导航| 亚洲高清视频在线| 国产91清纯白嫩初高中在线观看| 欧美午夜一区二区三区 | 久久久久国产免费免费 | 成人黄色片在线观看| 欧美挠脚心视频网站| 中文字幕乱码日本亚洲一区二区| 偷拍亚洲欧洲综合| 91网站在线播放| 久久精品男人的天堂| 日韩国产精品久久| 精品在线观看免费| 精品福利在线导航| 午夜亚洲国产au精品一区二区| 大胆欧美人体老妇| 7777女厕盗摄久久久|