2017-07-18 36 views
0

我有一個overflow: auto內的絕對定位的div,如下:如何解決溢出中溢出內容的自動切割:auto?

enter image description here

有5行與相對位置的div,我有一個.grayBlock行2格內。

正如您所見,由於overflow: auto,灰色塊被切斷。

我想讓它逃離容器。我能做什麼?

+0

Codepen是在這裏:https://codepen.io/owlran/pen/jwozwX –

+0

通過從'.canvasInfo__block'中刪除位置可能? – Berkay

+0

尋求代碼幫助的問題必須包括在問題本身**中重現它所需的最短代碼**最好在[** Stack Snippet **](https://blog.stackoverflow.com/2014/09/introducing-可運行的JavaScript-CSS-和HTML的代碼段/)。請參閱[**如何創建最小,完整和可驗證的示例**](http://stackoverflow.com/help/mcve) –

回答

1

您可以在當前環境中構建額外的canvasInfo__block。它應該比內部塊更寬一些(在我的例子中爲canvasInfo__block2)。

overflow: auto肯定會削減,你不能對它做任何事,但不會很糟糕,因爲它是足夠寬,以包含內部canvasInfo__block2,也是灰色塊從中溢出。

canvasInfo__block2需要一個overflow: visible,而外部的canvasInfo__block可以得到它的overflow: auto

結果:

enter image description here

HTML:

.canvasInfo 
    .canvasInfo__title 
    h3 Title 
    .hr 
    .canvasInfo__block 
    .canvasInfo__block2 
     .canvasInfo__slider sliderBar 
     .canvasInfo__activity Motion activity 
     .row 
     .circle 
      span line1 
     .row 
     .circle 
      span line2 
     .grayBlock hi2 
     .row 
     .circle 
      span line3 
     .row 
     .circle 
      span line4 
     .row 
     .circle 
      span line5 

CSS:

.canvasInfo { 
    margin: 0 auto; 
    width: 500px; 
} 

.hr { 
    margin: 10px 0; 
    border-bottom: 1px solid red; 
} 

.canvasInfo__block { 
    position: relative; 
    overflow: auto; 
    width: 400px; 
    height: 120px; 
    border: 2px solid red; 
} 

.canvasInfo__block2 { 
    position: relative; 
    overflow: visible; 
    height: 300px; 
    width: 300px; 
    margin-left: auto; 
    margin-right: auto; 
    border: 2px solid blue; 
} 

.grayBlock { 
    width: 50px; 
    height: 50px; 
    background-color: gray; 
    position: absolute; 
    top: 0px; 
    left: -20px; 
    z-index: -1; 
} 
.row { 
    border: 1px solid gray; 
    position: relative; 
} 
.circle 
{ 
    position: relative; 
    width: 10px; 
    height: 10px; 
    display: inline-block; 
    border-radius: 60px; 
    box-shadow: 0px 0px 2px #000; 
    span { 
    margin-left: 20px; 
    } 
} 
+0

'.canvasInfo__block2'中似乎不需要'overflow:visible;'。我從CSS中刪除它,並得到了與您的結果相同的結果。唯一的解決辦法是把更廣泛的div圍繞它嗎? –

+1

@ Wei-ChengChen'overflow:visible'沒有必要,因爲它是默認設置。我只是爲了更好的可讀性而把它放在了上面。 |如果您給外部div設定負邊距或邊框,則可能會「吃」左側的空白區域而不切割任何東西(注意,邊距僅在相對/靜態位置有意義)。 – peterh

+0

明白了,再次感謝:) –