日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > CSS >内容正文

CSS

js锚点定位_overflow属性详解,利用CSS实现锚点定位

發布時間:2024/10/12 CSS 155 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js锚点定位_overflow属性详解,利用CSS实现锚点定位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.overflow的裁剪界線——border-box

overflow屬性用于指定塊容器元素的內容溢出時的表現方式——滾動,裁剪,自適應。“BFC的最佳結界”只是其衍生出來的特性,“裁剪”才是其本職工作。在使用overflow做裁剪工作的時候需要注意裁剪的邊界時border box的內邊緣,來看下面的例子。

<div style="width: 200px;height: 200px;overflow: hidden;border: 10px solid #ccc;padding: 20px"><img src="../小和尚.jpg"> </div>

裁切部分的留白似乎不是很符合我們的預期,如果想要實現元素裁切同時四周留白的話,可以利用透明邊框,此時padding屬性時無能為力的!

2.overflow與滾動條

HTML中有兩個標簽是默認可以產生滾動條的,一個是跟元素html,還有一個是文本標簽textarea,只有這兩個標簽的默認overflow是auto屬性,其他都是visible。關于瀏覽器的滾動條,有以下兩個結論:

(1)在PC端,無論什么瀏覽器,默認滾動條均來自html,而不是body,這點可以由瀏覽器下body的默認margin不為零,但當內容高度超過100%的時候,滾動條離瀏覽器不會有間隙(body的默認margin)可以得出結論。上述結論只針對PC端有效!

(2)在PC端,滾動條出現就一定會占用容器的可用寬度/高度,也就是你本來布局非常準確的200像素寬度,在加入右側滾動條后,可能會導致子元素的像素計算出現偏差,由于父容器的右側擠入了一個不速之客——滾動條。因此在考慮PC端帶滾動條布局的時候,可以減少子元素的實際可用寬度,通常情況下,瀏覽器滾動條所占的寬度是17px(并不是絕對的),因此可以考慮子元素在右側留白>17px。注意本條定律也僅針對PC端有效,由于移動端的屏幕分辨率本來就低,因此滾動條一般以懸浮的方式出現,并不會占用實際寬度。

(3)既然滾動條在CSS布局中有如此重要的地位,因此其樣式也是可以自定義的,在chrome瀏覽器中的屬性如下:

  • 整體部分,::-webkit-scrollbar;
  • 兩端按鈕,::-webkit-scrollbar-button;
  • 外層軌道,::-webkit-scrollbar-track;
  • 內層軌道,::-webkit-scrollbar-track-piece;
  • 滾動滑塊,::-webkit-scrollbar-thumb;
  • 邊角部分,::-webkit-scrollbar-corner;

overflow除了和滾動條是PY關系,還有一些衍生屬性也要依賴overflow,如單行文字超出部分省略號顯示,就需要用到overflow:hidden的聲明。代碼如下

<style> .overText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden; } </style>

3.overflow與錨點定位

什么是錨點定位?通俗點的解釋就是讓頁面定位到某個位置的點。在高度較高的頁面中,通常我們會通過側邊導航欄定位到文章的某一段內容中去,如bilibili的側邊導航欄即可實現這個功能。要實現錨點定位,很多人都知道可以通過Js通過調整scrollTop實現,但新手很少會知道CSS本身就已經提供了這個功能(包括我)。這跟網上教程中很少涉及"CSS錨點定位"功能實現有關,通常情況下,我們看到的都是"JS錨點定位"功能的講解。下面來看看如何用CSS實現錨點定位。CSS規定觸發錨點定位行為發生的條件有兩種:

(1)URL地址中的錨鏈與錨點元素對應并有交互行為

(2)可focus的錨點元素處于focus狀態

URL的觸發條件比較容易,最常用的a標簽即可幫助我們實現錨點定位功能。如下代碼:

<a href="#1">我要定位到和1綁定的元素</a> <div id="1">我是要被定位的元素</div>

此時我們點擊a標簽,便會觸發URL的哈希值改變,然后頁面會根據實際情況讓id為1的div元素定位在瀏覽器窗體的上邊緣(如果需要的話,div元素本身就在頁面的第一行就沒必要定位了)

可focus的錨點元素處于focus狀態不是本章要討論的重點,這里只舉一個簡單的鏈子,在PC端,我們使用Tab鍵可以快速定位可focus的元素,如果下一個focus元素位于屏幕外,那么瀏覽器就會自動重新定位,將這個屏幕外的元素定位到屏幕之中。

雖然兩者都是錨點定位,但是這兩種方式的表現行為還是有差異的,"URL錨點定位"實讓元素定位在瀏覽器窗體的上邊緣,而"focus錨點定位"是讓元素在瀏覽器窗體范圍顯示即可,不一定是在上邊緣(這個你自己一試便知,如CSDN的編輯器就有許多focus元素,把滾動條拖到最上方,按下Tab鍵就可以看到效果了~)

錨點定位行為發生的本質是通過改變容器滾動高度/寬度來實現的,除了html,錨點定位功能還可以在任何overflow不為visible的元素中實現,這句話中可以拆分成兩個條件。

條件(1):錨點定位行為可以在任何元素中發生,不只是html,還可以是普通的div元素

條件(2):只要是overflow不為visible的元素都可以錨點定位,包括overflow:hidden!

第二個條件說明,錨點定位功能和有沒有滾動條時也能實現,后面我們會借助這個條件用CSS實現一個選項卡功能。干巴巴的說了許多,還沒確認過功能,下面我們就來簡單驗證一下CSS自帶的錨點定位功能。

<!-- CSS錨點定位 --> <a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a> <a href="#4">4</a> <a href="#5">5</a> <a href="#6">6</a> <a href="#7">7</a> <a href="#8">8</a> <a href="#9">9</a> <a href="#10">10</a> <a href="#">回到頂部</a><div style="overflow:auto;height: 300px; width: 300px;"><div id="1" class="li">1</div><div id="2" class="li">2</div><div id="3" class="li">3</div><div id="4" class="li">4</div><div id="5" class="li">5</div><div id="6" class="li">6</div><div id="7" class="li">7</div><div id="8" class="li">8</div><div id="9" class="li">9</div><div id="10" class="li">10</div> </div><style type="text/css"> .li{width: 200px;height: 200px;margin-bottom: 20px;background: yellow;display: inline-block; } </style>

上面的例子證明了錨點定位也可以發生在普通元素中,同時我們還需要知道一個概念,就是錨點定位是可以同時發生在嵌套元素中的,且發生的順序是“由內而外的”,如普通元素和窗體可以同時滾動的時候,就會由內而外觸發所有可以滾動的窗體的錨點定位功能。

上面只是錨點定位功能的簡單測試,同時他也符合“錨點定位功能是滾動條的表現形式”的正常預期。然而本小節的核心內容是:overflow:hidden的元素也是可以實現錨點定位的,當元素聲明了overflow后,里面內容高度溢出的時候,滾動永遠存在,滾動條可有可無,下面我們就將上面例子中的overflow:auto改為overflow:hidden,看看是否符合這個理論。

結果跟理論相同,overflow:hidden的元素也可以實現錨點定位功能。(關于CSS的錨點定位,我個人求證了掘金右側的導航欄也是用的CSS錨點定位功能,感興趣的小伙伴可以自己看一下掘金自帶的錨點定位功能)

4.利用CSS實現選項卡效果

理論需要被用在實踐中才能發揮他的作用,下面我們就用overflow:hidden的錨點定位功能實現一個CSS選項卡效果。

<!-- CSS實現選項卡功能 --> <div class="box"><div class="list" id="one">1</div><div class="list" id="two">2</div><div class="list" id="three">3</div><div class="list" id="four">4</div> </div> <div class="link"><a class="click" href="#one">1</a><a class="click" href="#two">2</a><a class="click" href="#three">3</a><a class="click" href="#four">4</a> </div> <style type="text/css"> .box {width: 20em;height: 10em;border: 1px solid #ddd;overflow: hidden; } .list {line-height: 10em;background: #ddd;text-align: center; } </style>

由于markdown編輯器支持標簽語言,因此我們可以直接預覽最終效果如下(小提示:你可以直接點擊1,2,3,4看到效果,建議copy代碼到本地查看效果)

當然這個方法也有其缺點,就是需要固定高度,當然這只是一個小缺點,他還有個更麻煩的地方就是,錨點功能“由內而外”的特性會使其觸發窗體外的重定位,也就是說如果頁面也是可以滾動,那么點擊選項卡后頁面會發生跳動,這種體驗顯然是“bug”級別的存在,因此這里只是介紹這種方法,在實際場景中,我更推薦使用第二種方法去實現CSS錨點定位功能。

還記得剛才提到的focus元素也可以觸發錨點定位的功能嘛?而且focus的特性就是只要元素在瀏覽器內,就不會觸發瀏覽器窗口的重新定位,這個屬性用在選項卡這兒,簡直是太棒了。那么如何觸發元素的focus呢?原生的標簽也可以觸發這個屬性,就是已經快被我們遺忘的label標簽可以完美觸發input的focus,知道了這些理論后我們就可以實現一個完美的CSS選項卡功能了。

<!-- CSS實現選項卡功能 --> <div class="box"><div class="list"><input id="one">1</div><div class="list"><input id="two">2</div><div class="list"><input id="three">3</div><div class="list"><input id="four">4</div> </div> <div class="link"><label class="click" for="one">1</label><label class="click" for="two">2</label><label class="click" for="three">3</label><label class="click" for="four">4</label> </div> <style type="text/css"> .box {width: 20em;height: 10em;border: 1px solid #ddd;overflow: hidden; } .list {height: 100%;background: #ddd;text-align: center;position: relative; } .list > input { position: absolute; top:0; height: 100%; width: 1px;border:0; padding: 0; margin: 0;clip: rect(0 0 0 0); } </style>

overflow的講解到此就結束了,下一章我們繼續來探討CSS世界的流破壞與流保護,之前講了float,下一章float的好PY position:absolute相關的內容,感興趣的關注一下吧~

最后,給大家推薦一個前端學習進階內推交流群685910553(前端資料分享),不管你在地球哪個方位,
不管你參加工作幾年都歡迎你的入駐!(群內會定期免費提供一些群主收藏的免費學習書籍資料以及整理好的面試題和答案文檔!)

如果您對這個文章有任何異議,那么請在文章評論處寫上你的評論。

如果您覺得這個文章有意思,那么請分享并轉發,或者也可以關注一下表示您對我們文章的認可與鼓勵。

愿大家都能在編程這條路,越走越遠。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的js锚点定位_overflow属性详解,利用CSS实现锚点定位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 动漫女被黄漫免费视频 | 波多野结衣爱爱 | 国产 日韩 欧美 精品 | 欧美精品二区 | 四色永久访问 | 蜜桃视频在线观看www | 美女在线免费视频 | 国产九九久久 | 国产免费av电影 | 中文字幕在线免费播放 | 亚洲男人的天堂网 | 亚洲免费网站在线观看 | 国产精品久久久影院 | www中文字幕在线观看 | 欧美日色| 国产欧美综合一区二区三区 | 黄色片网站国产 | 精品视频一区二区三区在线观看 | 麻豆一区二区 | 色91精品久久久久久久久 | 久久午夜免费视频 | 操女人的逼逼 | 亚洲精品免费视频 | 福利网站在线观看 | 曰韩精品| 97超碰人人爱 | 三级av在线免费观看 | 天天摸日日摸 | 日韩和欧美一区二区 | 亚洲一区二区麻豆 | 都市激情一区 | 国产www免费 | 91爱爱影院 | 扒开伸进免费视频 | 天堂综合网久久 | 天天天av| 777黄色| 欧美成人精品一区二区免费看片 | 一区二区三区四区欧美 | 少妇熟女一区二区 | 香蕉视频在线播放 | 激情小视频在线观看 | 一级特黄性色生活片 | 老公吃小头头视频免费观看 | av黄| 中文天堂在线观看 | 大陆熟妇丰满多毛xxxⅹ | 日韩视频欧美视频 | 中出在线观看 | 欧美群交射精内射颜射潮喷 | 宅男的天堂 | 欧美乱妇在线观看 | 自拍偷拍视频在线观看 | 日韩电影在线一区 | 被黑人各种姿势猛c哭h文1 | 成年人小视频在线观看 | 免费av网站在线播放 | 黄色一及毛片 | 国产专区一区 | 日韩免费专区 | 朝鲜女人性猛交 | 欧美成人精品欧美一 | 久久激情婷婷 | 亚洲欧美日韩国产一区二区 | 亚洲欧美婷婷 | 日本人妻丰满熟妇久久久久久 | gv天堂gv无码男同在线观看 | 黄色片免费看 | 外国电影免费观看高清完整版 | 无码人妻丰满熟妇区毛片蜜桃精品 | 东京热加勒比无码少妇 | 亚洲精品视频中文字幕 | 国产毛片一区二区三区va在线 | 亚洲欧美综合精品久久成人 | 欧美一区网站 | 免费伊人网 | 成人av电影天堂 | 激情另类小说 | 国产视频久久久久久 | 男女插插视频 | 精品国产乱码久久久久久图片 | 国产亚洲福利 | 天天干夜夜做 | 91一区二区三区四区 | 青青草草视频 | 亚洲男女| 国产在线视频卡一卡二 | 亚洲大尺度网站 | 久久久久久久久久久久国产 | 精品国产乱码久久久久久影片 | 黄色福利网 | 艳妇臀荡乳欲伦交换在线看 | 污黄视频在线观看 | 亚洲中文字幕无码爆乳av | 波多野结衣 一区 | 激情国产一区 | 一起艹在线观看 | 漂亮人妻被黑人久久精品 | 国产精品尤物 |