日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

CSS錨點定位終于來了!

來源: 責編: 時間:2024-07-17 16:52:30 573觀看
導讀盼了好久,最近 Chrome 125終于迎來了CSS 錨點定位的正式支持。這是一個和 CSS 滾動驅動動畫一樣,足以顛覆整個 Web 開發領域的新特性。有了這個特性,很多以前強依賴 JS 的方式,都可以純 CSS解決,并且實現起來更加簡單、更

Lk428資訊網——每日最新資訊28at.com

盼了好久,最近 Chrome 125終于迎來了CSS 錨點定位的正式支持。這是一個和 CSS 滾動驅動動畫一樣,足以顛覆整個 Web 開發領域的新特性。有了這個特性,很多以前強依賴 JS 的方式,都可以純 CSS解決,并且實現起來更加簡單、更加靈活,一起看看吧!Lk428資訊網——每日最新資訊28at.com

Lk428資訊網——每日最新資訊28at.com

可以看到,在切換tab時,底下的背景是可以無縫過渡的。在以前,我們要實現這樣的功能,必須要借助 JS來獲取當前點擊元素的尺寸和位置,但現在,只需要借助 CSS 錨點定位就能輕松實現了。Lk428資訊網——每日最新資訊28at.com

位置信息前面以及提到了,用anchor(left)和anchor(top)就可以了,那尺寸呢,需要用到anchor-size。Lk428資訊網——每日最新資訊28at.com

anchor-size(width) /*錨點元素寬度*/anchor-size(height)  /*錨點元素高度*/

利用這個特性,我們可以很輕松的實現這樣一個效果,結構如下:Lk428資訊網——每日最新資訊28at.com

<nav class="tab">  <a class="item" href="#HTML" name="HTML">HTML</a>  <a class="item" href="#CSS" name="CSS">CSS</a>  <a class="item" href="#JavaScript" name="JavaScript">JavaScript</a>  <a class="item" href="#React" name="React">React</a>  <a class="item" href="#Vue" name="Vue">Vue</a></nav>

我們用偽元素來當做tab高亮背景,關鍵實現如下:Lk428資訊網——每日最新資訊28at.com

.tab::after{  content: '';  position: absolute;  border-radius: 100px;  background-color: rgba(65, 105, 225, 0.2);  position-anchor: --anchor-el;  width: anchor-size(width);  height: anchor-size(height);  left: anchor(left);  top: anchor(top);  transition: .3s;  pointer-events: none;}.item:target{  anchor-name: --anchor-el;}

這樣就能輕松實現這個效果了,你也可以訪問以下在線鏈接(Chrome 125+)Lk428資訊網——每日最新資訊28at.com

  • CSS anchor nav (codepen.io)[2]


Lk428資訊網——每日最新資訊28at.com

6. 動態調整位置 position-try-options

有時候定位元素會處于屏幕邊緣,當沒有足夠空間顯示時,可以通過position-try-options來設置一個備用位置。Lk428資訊網——每日最新資訊28at.com

舉個例子,比如一個氣泡,默認是朝上的,當滾動到屏幕邊緣時會自動朝下,示意如下:Lk428資訊網——每日最新資訊28at.com

Lk428資訊網——每日最新資訊28at.com

這種情況就可以用@position-try來實現了,具體做法是這樣的。Lk428資訊網——每日最新資訊28at.com

先通過position-try-options指定一個變量名,比如--bottom。Lk428資訊網——每日最新資訊28at.com

tooltip{      position: fixed;      position-anchor: --anchor-el;      inset-area: top;      position-try-options: --bottom;}

然后通過@position-try來定義規則。Lk428資訊網——每日最新資訊28at.com

@position-try --bottom {  inset-area: bottom;}

這樣就實現定位元素位置自動調整了。Lk428資訊網——每日最新資訊28at.com

除此之外,還有一種便捷寫法,直接給position-try-options指定以下關鍵字。Lk428資訊網——每日最新資訊28at.com

position-try-options: flip-block; /*垂直翻轉*/position-try-options: flip-inline; /*水平翻轉*/

這樣就無需@position-try定義了,實現更簡單。Lk428資訊網——每日最新資訊28at.com

  • CSS anchor position-try-options (codepen.io)[3]

當然,我覺得這個功能還是稍顯不足的,比如當氣泡帶有箭頭時,雖然也能翻轉,但是卻無法改變箭頭的位置,也就是無法查詢到當前是否已經翻轉了,就像這樣。Lk428資訊網——每日最新資訊28at.com

Lk428資訊網——每日最新資訊28at.com

首先是點擊出現,這個就是popover的功能了,通過popovertarget和popover屬性,將兩者結合起來,就能輕松實現點擊出現菜單的功能。Lk428資訊網——每日最新資訊28at.com

<button class="btn" popovertarget="more"></button><div class="menu" id="more" popover>  <button class="item">編輯</button>  <button class="item">刪除</button></div>

然后就定位,利用CSS錨點定位,將菜單定位到按鈕的右下方,也就兩三行代碼的事。Lk428資訊網——每日最新資訊28at.com

.btn{  anchor-name: --menu;}.menu{  position-anchor: --menu;  inset-area: bottom span-right;}

這樣就能輕易實現懸浮菜單了,你也可以訪問以下在線鏈接(Chrome 125+)Lk428資訊網——每日最新資訊28at.com

  • CSS anchor menu (codepen.io)[4]

在codepen上找到了一個更完善的多級菜單案例。Lk428資訊網——每日最新資訊28at.com

https://codepen.io/jh3y/pen/dyLjbwGLk428資訊網——每日最新資訊28at.com

四、總結和其他

介紹了這么多,一下子肯定難以接受,多回顧幾遍就明白了,至少可以知道錨點定位是干嘛的,如果以后有類似的需求也有一定的方向,下面總結一下本文要點Lk428資訊網——每日最新資訊28at.com

  • CSS 錨點定位是一個顛覆性的新特性,一定要學會
  • CSS 錨點定位可以設置任意元素相對任意元素做定位
  • 主要是通過anchor-name和position-anchor兩個屬性關聯
  • 錨點的位置用anchor()來定義,比如anchor(left)表示錨定元素的最左側,anchor(top)表示錨定元素的最上側
  • anchor-center可以實現居中定位,水平居中justify-self: anchor-center,垂直居中align-self: anchor-center
  • inset-area是一種更人性化的定位方式,和常見的組件庫表示方位比較類似
  • 還可以通過 anchor-size來錨點元素的尺寸,anchor-size(width)表示寬度,anchor-size(height)表示高度
  • position-try-options可以根據定位元素是否處于屏幕邊緣而自適應定位方向
  • 實際中更推薦和popover相互配合,可以輕松實現各類懸浮層效果
  • 兼容性要求 Chrome 125+,期待早日使用吧

最近幾年CSS更新的確實有點太快了,很多以往的疑難雜癥都有了新的解決方式。但是很多時候學這些好像暫時沒啥用,畢竟可能 5 年以后才用得上。但是原生特性不像其他,一個框架兩三年就有可能被淘汰,或者有新的替代品出現,原生的學到了就學到了,只要web存在的一天,就永遠都不會過時,所以也不虧是吧。Lk428資訊網——每日最新資訊28at.com

[1]CSS anchor (codepen.io): https://codepen.io/xboxyan/pen/dyEVVPb。Lk428資訊網——每日最新資訊28at.com

[2]CSS anchor nav (codepen.io): https://codepen.io/xboxyan/pen/zYQpvqg。Lk428資訊網——每日最新資訊28at.com

[3]CSS anchor position-try-options (codepen.io): https://codepen.io/xboxyan/pen/dyEJYRO。Lk428資訊網——每日最新資訊28at.com

[4]CSS anchor menu (codepen.io): https://codepen.io/xboxyan/pen/qBGpOKq。Lk428資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-101375-0.htmlCSS錨點定位終于來了!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: ES13 中最具變革性的五個 JavaScript 功能

下一篇: 軟件版本號為什么那么奇怪?你知道嗎?

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 華為和江淮汽車合作開發百萬元問界MPV?雙方回應來了

    8月1日消息,郭明錤今天在社交平臺發文稱,華為正在和江淮汽車合作,開發售價在100萬元的問界MPV,預計在2024年第2季度量產,銷量目標為上市首年交付5萬輛。
  • 三星Galaxy Z Fold/Flip 5國行售價曝光 :最低7499元/12999元起

    據官方此前宣布,三星將于7月26日也就是明天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
Top 主站蜘蛛池模板: 墨玉县| 临海市| 甘德县| 化隆| 阿城市| 太白县| 大厂| 松原市| 乌兰浩特市| 安庆市| 手游| 积石山| 绍兴市| 定结县| 河津市| 江川县| 伊吾县| 岳阳县| 云林县| 松滋市| 永春县| 彭水| 达尔| 揭阳市| 黔西| 金华市| 聂拉木县| 襄汾县| 刚察县| 阳谷县| 忻城县| 永年县| 泽州县| 梁山县| 乌拉特后旗| 襄樊市| 潮州市| 卢龙县| 潜江市| 达州市| 京山县|