各位前端的好朋友們!我今天發現了一個超級驚人的新功能,我簡直不敢相信我的眼睛 —— CSS3 現在內建 Popover 支援了!沒錯,你沒看錯,我們終於可以擺脫那些冗長的 JavaScript 程式碼了!
還記得以前要寫一個 Popover 有多麻煩嗎?要處理點擊事件、控制顯示隱藏、計算位置、處理動畫...光想到就頭痛。但現在,只要幾行 HTML 和 CSS 就搞定了!來看看這個超簡單的寫法:
<div id="popover" popover>
<div class="popover-content">
<h3>Welcome!</h3>
<p>這是個超級簡單的 Popover!</p>
</div>
</div>
<button popovertarget="popover">打開 Popover</button>
看到了嗎?只要加個 popover
屬性和 popovertarget
,Popover 就實現了!完全不需要寫 JavaScript!這簡直是在跟我開玩笑吧?!
但這還不是最神奇的!你看看這個動畫效果:
[popover]:popover-open {
translate: 0 -8rem;
opacity: 1;
transform: scale(1);
transition:
translate 0.4s cubic-bezier(0.16, 1, 0.3, 1),
opacity 0.4s cubic-bezier(0.16, 1, 0.3, 1),
transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
不敢相信吧?一個平滑的彈出動畫就這樣完成了!以前要寫這種效果,不知道要糾結多久的 JavaScript 邏輯,現在就...這樣?
鍵盤支援開箱即用
樣式自由度超高 想要什麼風格就套什麼風格,完全不受限!
[popover] {
width: 300px;
border-radius: 12px;
border: 2px solid #ff69b4;
background-color: white;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}
還有動畫初始狀態!
這個 @starting-style
也太貼心了吧!
@starting-style {
[popover]:popover-open {
translate: 0 2rem;
opacity: 0;
transform: scale(0.95);
}
}
根據官方資料,目前支援度如下: