日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
原生Details支持手風琴模式了!

最近details元素新增了一個name屬性,如下

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。

圖片

別看這只是一個普普通通的屬性,這可是帶來了一個全新的模式,一起了解一下吧

一、快速了解 details

有些同學可能從來沒有用過details這個標簽,這里簡單介紹一下。

details通常和summary配合使用,天然支持展開收起的效果。例如

System Requirements

Requires a computer running an operating system. The computer must have some memory and ideally some kind of long-term storage. An input device as well as some form of output device is recommended.

效果如下

圖片

雖然有些難看,但都是可以通過 CSS 自定義的。

如果想去除這個“黑色三角”,這個“黑色三角”其實是 ::marker生成的,,而這個 ::marker是通過list-style生成,所以要去除可以這樣

summary{
  list-style: none;
}
/*或者*/
summary{
  display: flex; /*默認是list-style*/
}

還支持嵌套,進一步美化可以實現(xiàn)樹形結構目錄

圖片

以后碰到類似的交互就直接用這個標簽吧,別用JS了

二、新增的 name 屬性

和大多數(shù)表單元素一樣,這個name也是可以直接設置和獲取的

details.name; // 獲取
details.name = 'xxx'; // 設置

除此之外,還支持了“手風琴”模式。所謂“手風琴”模式,相信大家都有所耳聞,就是多個折疊面板,打開其中一個會關閉其他的,比如下方是ant design中的手風琴效果

圖片

現(xiàn)在如果用details就可以很輕易的實現(xiàn)這個效果,結構如下

歡迎

最近 details元素新增了一個name屬性

關注

別看這只是一個普普通通的屬性,這可是帶來了一個全新的模式,一起了解一下吧

前端

details通常和summary配合使用,天然支持展開收起的效果

偵探

雖然有些難看,但都是可以通過 CSS 自定義的

效果如下

圖片

嗯,有點丑...我們美化一下

.con{
  width: 300px;
  border-radius: 8px;
  border: 1px solid #9747FF;
  background-color: #fdf0ca ;
  overflow: hidden;
}
summary{
  display: flex;
  align-items: center;
  line-height: 2;
  padding: 0 10px;
  cursor: pointer;
  border-bottom: 1px solid #9747FF;
  background-color: #FFE8A3;
}
summary::before{
  content: '';
  width: 20px;
  height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E %3Cpath d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'%3E%3C/path%3E %3C/svg%3E") center/50% no-repeat;
  opacity: .6;
  transform: rotate(-90deg);
}
details[open] summary::before{
  transform: rotate(0deg);
}
p{
  margin: 0;
  padding: 5px 10px;
  border-bottom: 1px solid #9747FF;
}
details:last-child p,
details:last-child:not([open]) summary{
  border: 0;
}

效果如下

圖片

不過現(xiàn)在每個折疊面板是互相獨立的,都可以打開或者關閉。

現(xiàn)在我們想要把這幾個面板關聯(lián)起來,就像單選框一樣,用相同的name表示

歡迎

最近 details元素新增了一個name屬性

關注

別看這只是一個普普通通的屬性,這可是帶來了一個全新的模式,一起了解一下吧

前端

details通常和summary配合使用,天然支持展開收起的效果

偵探

雖然有些難看,但都是可以通過 CSS 自定義的

這樣就是實現(xiàn)了手風琴的效果了

圖片

是不是非常簡單呢?

三、還是需要 polyfill 一下

雖然好用,但是兼容性還不行,需要用一段 JS 來兜個底。

首先我們需要判斷一下,也就是檢測details到底支不支持name這個特性,這個很簡單,我們只需要創(chuàng)建一個details元素,然后看這個屬性是否存在就行了,如下

'name' in document.createElement('details');

效果如下

圖片

對于不支持的瀏覽器,我們就需要通過監(jiān)聽打開關閉狀態(tài)了,直接監(jiān)聽click事件

details元素其實還有一個toggle事件,也可以用于監(jiān)聽,但是在這里不太合適,因為toggle是在狀態(tài)改變后才觸發(fā),有點晚了,會造成閃爍的問題

我們需要監(jiān)聽所有的details元素,然后根據(jù)name屬性,把其他相同name的都關閉,具體實現(xiàn)如下

// details name polyfill
if (!('name' in document.createElement('details'))) {
  const details = [...document.querySelectorAll('details')]
  details.forEach(el => {
    el.addEventListener('click', () => {
      if (!el.open) {
        details.filter(d => d.getAttribute('name') === el.getAttribute('name') && d!==el && d.open).forEach(m => {
          m.open = false
        })
      }
    })
  })
}

我們現(xiàn)在來看Firefox的效果

圖片

同樣支持多個分組,每個分組設置相同的name就行

圖片

完整代碼可以訪問以下鏈接:

  • details with name (juejin.cn)[1]
  • details with name (codepen.io)[2]

四、總結一下

總的來說是一個不痛不癢的新特性,你學到了,下面總結一下

  1. details通常和summary配合使用,天然支持展開收起的效果
  2. summary前面的黑色三角形是::marker渲染的,可以通過設置list-style: none去除
  3. 新增的name屬性可以直接通過dom.name的方式設置和獲取
  4. 多個details元素添加name屬性后會變成手風琴模式,即打開其中一個會關閉其他
  5. 目前兼容性還不行,需要polyfill一下
  6. 可以通過'name' in document.createElement('details')來檢測是否支持該特性

分享名稱:原生Details支持手風琴模式了!
轉(zhuǎn)載源于:http://www.5511xx.com/article/dpoohcp.html