中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web前端奇怪的水平滾動條問題怎么解決

發布時間:2023-03-01 17:05:34 來源:億速云 閱讀:146 作者:iii 欄目:web開發

這篇“web前端奇怪的水平滾動條問題怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“web前端奇怪的水平滾動條問題怎么解決”文章吧。

今天改一個前端同學的樣式代碼,發現了一個奇怪的問題.大概是這樣:

web前端奇怪的水平滾動條問題怎么解決

我的視窗寬度是1920px,滾動容器寬度1903px,然后還出現了水平滾動條,匪夷所思。由于文件嵌套太深,查找起來非常耗時,因此就求助于全局函數,是誰觸發了滾動條的操作。于是就有了以下代碼

function findScroller(element) {
   element.onscroll = function() { console.log(element)}

   Array.from(element.children).forEach(findScroller);
}

findScroller(document.body);

打印出的對象是 ,<body>。這就不明白了。 明明元素離body還很遠,也沒有元素超寬,這個滾動條到底從哪兒來?

這并不是標準答案

非常難過,一個技能不行就要求助第二個方式 —— 刪代碼。 一行一行的刪,然后將他轉為基礎元素,比如自定義的模型,直接替換成一個div,然后添加樣式,再刪除無用的代碼,這樣就做出來了一個簡易模型。

經過觀察發現, 如果元素沒有超高,那么元素也不會出現橫向滾動的問題,如果元素超高,則就會同時出現垂直和水平兩個滾動條。

更迷惑了。

所以,我倒過來分析,發現,這個超高元素的寬度雖然沒有超過視窗寬度,為1903px,但是,PC下瀏覽器滾動條默認寬度為17px,且此垂直滾動條是在body下的, 和上文的打印對象吻合。由此可知:

web前端奇怪的水平滾動條問題怎么解決

  1. 當容器出現滾動條后, 產生滾動條元素的可用水平寬度 = 原始寬度- 17px。

  2. 一定有子元素設置的寬度 > 原始寬度- 17px ,且為有效像素單位 px,em ,rem, vw等

  3. 子元素設置的寬度  = 原始寬度

這么一來就可知, 如果有body下的子元素的寬度設置為 1920px或者 100vw 或者等于100wv的任意一項,即可出現,此出現橫向滾動條的現象。

經過老師傅的一頓操作,終于發現了一個設置樣式不合理的問題。由此我簡化了模型代碼如下:

<!DOCTYPE html>
<html>

<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>超寬導致元素溢出滾動條</title>
   <style>
       body,
       html {
           margin: 0;
           padding: 0;
       }

       .menu-bar {
           height: 50px;
           border: 1px solid;
           box-sizing: border-box;
       }

       .incorrect {
           width: 100vw;
       }

       .oversize {
           height: 100vh;
       }
   </style>
</head>

<body>
   <div class="menu-bar incorrect"> </div>
   <div></div>
</body>

</html>

由此, 寫代碼時需要不斷分析,css樣式一定要有跡可循,切不可隨意添加。導致異常出現時費心費力。

以上就是關于“web前端奇怪的水平滾動條問題怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇州市| 江口县| 文登市| 河间市| 西吉县| 县级市| 衢州市| 怀集县| 武山县| 囊谦县| 梓潼县| 德清县| 长丰县| 阜南县| 宝坻区| 光泽县| 苏尼特右旗| 班戈县| 汶上县| 滦南县| 长阳| 盘锦市| 正安县| 内丘县| 辰溪县| 峨山| 孝义市| 海门市| 长治市| 杭锦后旗| 陵川县| 卢龙县| 乌恰县| 高唐县| 浙江省| 东丰县| 武胜县| 海阳市| 塔河县| 水城县| 景德镇市|