溫馨提示×

溫馨提示×

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

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

CSS中overflow-y: visible;不起作用的原因是什么

發(fā)布時間:2021-05-27 11:47:28 來源:億速云 閱讀:433 作者:小新 欄目:web開發(fā)

這篇文章主要介紹CSS中overflow-y: visible;不起作用的原因是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

場景

最近要做的一個需求是移動端的h6頁面,要求有一排可選擇的卡片, 超出容器部分可以左右滑動,同時每張卡片左上角要有一個刪除按鈕。如下圖:

CSS中overflow-y: visible;不起作用的原因是什么

心想:so easy, 在父容器上加一個max-width: 200px; white-space: nowrap; overflow-x: auto;不就搞定了嘛。Demo如下:

<div class="container">
  <div class="son">
    <div class="delete_btn"></div>
  </div>
  <div class="son">
    <div class="delete_btn"></div>
  </div>
  <div class="son">
    <div class="delete_btn"></div>
  </div>
</div>
.container {
  max-width: 500px;
  overflow-x: auto;
  white-space: nowrap;
}
.son {
  display: inline-block;
  width: 200px;
  height: 200px;
  background-color: lightblue;
  position: relative;
  margin-right: 20px;
}
.delete_btn {
  width: 20px;
  height: 20px;
  position: absolute;
  top: 0;
  left: 0;
  background-color: red;
  transform: translateX(-50%) translateY(-50%);
}

原本以為一切順利,結果得到的結果如圖:

CSS中overflow-y: visible;不起作用的原因是什么

看第矩形左上角的紅色方塊,原本為20 * 20的紅色方塊有一部分被隱藏了。我想應該是overflow影響的,所以想通過overflow-y: visible;來解決,結果是不行的。細心的朋友應該記得overflow的默認值就是visible。那么原因是什么呢?

Why

找了好久,大致了解到是如下原因

The computed values of &lsquo;overflow-x&rsquo; and &lsquo;overflow-y&rsquo; are the same as their specified values, except that some combinations with &lsquo;visible&rsquo; are not possible: if one is specified as &lsquo;visible&rsquo; and the other is &lsquo;scroll&rsquo; or &lsquo;auto&rsquo;, then &lsquo;visible&rsquo; is set to &lsquo;auto&rsquo;. The computed value of &lsquo;overflow&rsquo; is equal to the computed value of &lsquo;overflow-x&rsquo; if &lsquo;overflow-y&rsquo; is the same; otherwise it is the pair of computed values of &lsquo;overflow-x&rsquo; and &lsquo;overflow-y&rsquo;.
大致意思是,當overflow-x為scroll或者auto時,overflow-y被設置為auto,反之亦然。這就很尷尬了,那怎么解決這個問題呢。

ps: 上面那段話說是來自于w3c的文檔,但是我找了半天沒找到原文,麻煩找到了的小伙伴留個鏈接~ [手動狗頭]

How

終究還是想讓左上角的紅色方塊顯示完整的,那么解決方案呢,我這里采用的是在container上添加以下樣式

padding-top: 20px;
margin-top: -20px;

原理其實挺簡單的,加了padding-top: 20px;后,絕對定位的紅色方塊就有空間顯示了,不會超出容器體積,然后通過margin-top: -20px;抵消位置的變化.如圖

CSS中overflow-y: visible;不起作用的原因是什么

ps: 第一個紅色方塊左邊被遮住的部分同樣的思路解決,即通過padding-left和margin-left來處理。

以上是“CSS中overflow-y: visible;不起作用的原因是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

AI