搜尋
首頁web前端html教學聊聊前端裡一個奇怪的水平捲軸

##@charset "UTF-8";.markdown-body{font-family:-apple-system,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif , BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial;color:#00325e}.markdown-body ::selection{background-color:#00325e;color:#fff}.markdown-body blockquote{padding :#fff}.markdown-body blockquote{padding : 10px 20px;背景顏色:#fffaf0;盒子陰影:0 3px 10px 0 rgba(255,172,194,.24);邊框:1px 實心#f3ca8e;過渡:全部.2s;邊框:1em 0;邊框半徑:5px }.mark:5px -body blockquote p{font-size:14px;line-height:25px;color:#795548}.markdown-body blockquote p:last-child{margin:0}.markdown-body blockquote:hover{border-顏色:# ff9800;背景顏色:#fff8e0;box-shadow:0 6px 10px -5px rgba(225,173,98,.3803921569)}.markdown-body 區塊引用程式碼{color:#ff502c}.markdown-body prexmarkdown-body 實心 prex #8cc0f3;box-shadow:0 3px 10px 0 rgba(255,198,198,.28);border-radius:5px;transition:all .2s;overflow-x:auto;white-space:pre-wrap}.markdown -body pre :hover{border-color:#6d9dce}.markdown-body pre>code{padding:10px 20px;color:#00325e;background:#f0f8ff;font-size:12px;line-height:1.6;display:塊}. markdown-body程式碼{背景:#f6fbff;顏色:#0b5393;padding:2px 4px;border-radius:4px;font-size:12px}.markdown-body p{font-size:14px;line-height :28px; text-align:justify;margin-bottom:17px;color:#595959}.markdown-body a{color:#00325e;text-decoration:none}.markdown-body a:after{content:url(data :image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs 9AAAAAXNSR0IArs4c6QAAAQdJREFUKFNt0DtLA0EUBeBzZle0Eks7rcUfEfBRCha7NorYa6NtLA0EUBeBzZle0Eks7rcUfEfBRCha7NorYa6NtLA0EUBeBzZle0Eks7rcUfEfBRCha7NorYa6NmVJygyi4HwwwwwwwelwwwFii34FG; Oh0P8c8mZm uJrEN4BJFTeP/MUVe3bnocfALwkOlo1zS7iZAzf6Cx7oXgbaqjxiDEWCcVaGyxQ8pSWo9XhqhoQ/xUFbaKjhe5V CmR7GyxQ8pSWo9XhqhoQ/x它X7z8O8MzsWBucifMx0dDGE1kmm458KDVukAlnNdDz/exEeW3dNkbfsYC0xtmgDWP6ELLZ0/F6BJu/UoFQN5AkoeUjeJPvx6 i5SjahAAAtA6g-m-B4m-Mr.ElFTS. 1px} .markdown -body表{max-width:100%;border-collapse:collapse;border-spacing:0;box-shadow:0 3px 10px 0 rgba(255,238,172,.24);transition:all .2s}.markdown-主體表:懸停{box-shadow:0 3px 10px 0 rgba(185,169,103,.24)}.markdown-主體表tr th{邊框:1px實體#8cc0f3;背景顏色:#f0f8ff;填充:12px 15px}.mark表tr td{邊框:1px 實心rgba(243,202,142,.4);padding:12px 15px}.markdown-body 表tbody tr{transition:all .2s}.markdown-bodytbody tr:hover 表 td{border-顏色: #f3ca8e;背景顏色:#fff8e0;z-index:1}.markdown-body img{max-width:100%}.markdown-body h1{font-size:20px;margin-top:30px;margin -bottom: 10px;padding-left:30px;position:relative}.markdown-body h1>code{font-size:20px}.markdown-body h1:before{content:"?";display:block;font-size :18px;寬度:18px;高度:18px;左:0;位置:絕對}.markdown-body h2{字體大小:18px;上邊距:30px;下邊距:10px;左內邊距:28px;位置:relative}.markdown -body h2>code{font-size:18px}.markdown-body h2:before{content:"?";display:block;font-size:16px;width:16px;height:16px;left :0;position: absolute}.markdown-body h3{font-size:16px;margin-top:30px;margin-bottom:10px;padding-left:26px;position:relative}.markdown-body h3>code{font -size:16px} .markdown-body h3:before{內容:"?";display:block;font-size:14px;width:14px;height:14px;left:0;position:absolute}.markdown-body h4 {font-size: 14px;margin-top:30px;margin-bottom:10px;padding-left:24px;position:relative}.markdown-body h4>程式碼{font-size:14px}.markdown-body h4:之前{內容:「? 」;顯示:塊;字體大小:12px;寬度:12px;高度:12px;左:0;位置:絕對}.markdown-body h5{字體大小:12px;邊距頂部:30px ;margin-bottom:10px} .markdown-body h5>程式碼{font-size:12px}.markdown-body h6{font-size:10px;margin-top:30px;margin-bottom:10px}.markdown-body h6 >code{font-size: 10px}.markdown-body h1,.markdown-body h2{color:#ff502c}.markdown-body hr{height:4px;border:none;margin-top:32px;margin-bottom: 32px;背景大小:4px 1px ;背景影像:線性漸層(270deg,#6d9dce,#8cc0f3 25%,透明50%)}.markdown-body hr:nth-child(2n){背景影像:線性-gradient(270deg,#ff9800,#fff8e0 25 %,透明50%)}.markdown-body ul{padding-inline-start:20px}.markdown-body ul li{list-style-type:"?"}. markdown-body ul li li{list-style- type:"◻️"}.markdown-body ul li li li{list-style-type:"▫️"}.markdown-body ol{padding-inline-start:20px} .markdown-body ol ::marker{color: #ff9800}.markdown-body ol,.markdown-body ul{line-height:2em}.markdown-body li{padding-inline-start:1ch}.markdown-body li.task-list-item{list-style :none;padding-inline-start:0}.markdown-body li input{padding-right:2px}.markdown-body li input[type=checkbox i]{外觀:無}.markdown-body li input:before{ content:"?";display:block;width:13px;height:13px}.markdown-body li input:checked:before{content:"✅"}@media (max -width:720px){.markdown-body h1 {font-size:24px}.markdown-body h2{font-size:20px}.markdown-body h3{font-size:18px}}

#這篇文章為大家帶來了關於前端的相關知識,其中主要給大家聊聊一個奇怪的水平滾動題,有興趣的朋友下面一起來看看吧,歡迎大家收藏學習!

今天改一個前端同學的樣式程式碼,發現了一個奇怪的問題.

#大概是這樣:

聊聊前端裡一個奇怪的水平捲軸

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

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

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

findScroller(document.body);

列印出的物件是 ,。這就不明白了。明明元素離body還很遠,也沒有元素超寬,這個滾動條到底從哪裡來?

這不是標準答案

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

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

更迷惑了。

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

聊聊前端裡一個奇怪的水平捲軸

  1. 當容器出現捲軸後, 產生滾動條元素的可用水平寬度 = 原始寬度- 17px。
  2. 一定有子元素設定的寬度> 原始寬度- 17px ,且為有效像素單位px,em ,rem, vw等
  3. 子元素設定的寬度 = 原始寬度

這麼一來就可知, 如果有body下的子元素的寬度設定為1920px或100vw 或等於100wv的任一項,即可出現,此出現橫向捲軸的現象。

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

nbsp;html>



    <meta>
    <meta>
    <meta>
    <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>



    <div> </div>
    <div></div>


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

推薦學習:《web前端開發

以上是聊聊前端裡一個奇怪的水平捲軸的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:juejin。如有侵權,請聯絡admin@php.cn刪除
巧用CSS实现各种奇形怪状按钮(附代码)巧用CSS实现各种奇形怪状按钮(附代码)Jul 19, 2022 am 11:28 AM

本篇文章带大家看看怎么使用 CSS 轻松实现高频出现的各类奇形怪状按钮,希望对大家有所帮助!

5个常见的JavaScript内存错误5个常见的JavaScript内存错误Aug 25, 2022 am 10:27 AM

JavaScript 不提供任何内存管理操作。相反,内存由 JavaScript VM 通过内存回收过程管理,该过程称为垃圾收集。

Node.js 19正式发布,聊聊它的 6 大特性!Node.js 19正式发布,聊聊它的 6 大特性!Nov 16, 2022 pm 08:34 PM

Node 19已正式发布,下面本篇文章就来带大家详解了解一下Node.js 19的 6 大特性,希望对大家有所帮助!

实战:vscode中开发一个支持vue文件跳转到定义的插件实战:vscode中开发一个支持vue文件跳转到定义的插件Nov 16, 2022 pm 08:43 PM

vscode自身是支持vue文件组件跳转到定义的,但是支持的力度是非常弱的。我们在vue-cli的配置的下,可以写很多灵活的用法,这样可以提升我们的生产效率。但是正是这些灵活的写法,导致了vscode自身提供的功能无法支持跳转到文件定义。为了兼容这些灵活的写法,提高工作效率,所以写了一个vscode支持vue文件跳转到定义的插件。

浅析Vue3动态组件怎么进行异常处理浅析Vue3动态组件怎么进行异常处理Dec 02, 2022 pm 09:11 PM

Vue3动态组件怎么进行异常处理?下面本篇文章带大家聊聊Vue3 动态组件异常处理的方法,希望对大家有所帮助!

聊聊如何选择一个最好的Node.js Docker镜像?聊聊如何选择一个最好的Node.js Docker镜像?Dec 13, 2022 pm 08:00 PM

选择一个Node​的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

聊聊Node.js中的 GC (垃圾回收)机制聊聊Node.js中的 GC (垃圾回收)机制Nov 29, 2022 pm 08:44 PM

Node.js 是如何做 GC (垃圾回收)的?下面本篇文章就来带大家了解一下。

【6大类】实用的前端处理文件的工具库,快来收藏吧!【6大类】实用的前端处理文件的工具库,快来收藏吧!Jul 15, 2022 pm 02:58 PM

本篇文章给大家整理和分享几个前端文件处理相关的实用工具库,共分成6大类一一介绍给大家,希望对大家有所帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版