CSS: cách lấy thanh cuộn cho div bên trong vùng chứa có chiều cao cố định


92

Tôi có đánh dấu sau:

<div class="FixedHeightContainer">
  <h2>Title</h2>
  <div class="Content">
    ..blah blah blah...
  </div>
</div>

CSS trông như thế này:

.FixedHeightContainer
{
  float:right;
  height: 250px;
  width:250px;  
}
.Content
{
  ???
}

Do nội dung của nó, chiều cao của div.Contentthường lớn hơn không gian được cung cấp bởi div.FixedHeightContainer. Hiện tại, div.Contentvui vẻ mở rộng ra khỏi đáy của div.FixedHeightContainer- không phải ở tất cả những gì tôi muốn.

Làm cách nào để chỉ định div.Contentthanh cuộn (tốt nhất là chỉ dọc, nhưng tôi không kén chọn) khi chiều cao của nó quá lớn để phù hợp?

overflow:autooverflow:scrollkhông làm gì cả, vì một số lý do kỳ lạ.

Câu trả lời:


154

cài đặt overflowcần quan tâm đến nó, nhưng bạn cũng cần đặt chiều cao của Content. Nếu thuộc tính height không được đặt, div sẽ phát triển theo chiều dọc cao như nó cần và sẽ không cần đến thanh cuộn.

Xem Ví dụ: http://jsfiddle.net/ftkbL/1/


Được rồi, cảm ơn. Vì vậy, tôi cần chỉ định chiều cao cho div.Content? Tôi cho rằng nó sẽ hoạt động từ vùng chứa mà nó không phù hợp và áp dụng thanh cuộn trên cơ sở đó.
David

6
Nếu bạn đưa ra Contentchiều cao cố định, bạn không nên đưa ra FixedHeightContainerchiều cao cố định, vì bạn không thể biết tiêu đề của mình sẽ cao bao nhiêu, do đó Contentcó thể bị đẩy ra ngoài. Xem: jsfiddle.net/ftkbL/2 Bạn nên thiết lập chiều cao cố định chỉ trên phần tử với overflow: scroll. Xem jsfiddle.net/ftkbL/3 hoặc jsfiddle.net/ftkbL/4
RoToRa

Tôi thấy quan điểm của bạn (từ liên kết đầu tiên) nhưng văn bản tiêu đề được biết đến và quá ngắn để ngắt dòng trừ khi người dùng thổi phồng văn bản lên một kích thước không thực tế.
David

Có cách nào để có chiều cao ngắn và ẩn thanh cuộn cùng một lúc không? bằng cách này khi người dùng kéo xuống trên thiết bị di động, họ sẽ thấy rằng họ đang cuộn xuống, nhưng không có sự rườm rà khi thấy 2 thanh cuộn trên trình duyệt của họ?
klewis

@blackhawk - Tôi không biết. Bạn có thể cần sử dụng Javascript cho việc này. Cụ thể là tôi đang nghĩ đến thư viện jQuery Draggable: jqueryui.com/draggable -một điều cần xem xét là ... người dùng máy tính để bàn sẽ biết cuộn như thế nào?
Dutchie432

2

FWIW, đây là cách tiếp cận của tôi = một cách đơn giản phù hợp với tôi:

<div id="outerDivWrapper">
   <div id="outerDiv">
      <div id="scrollableContent">
blah blah blah
      </div>
   </div>
</div>

html, body {
   height: 100%;
   margin: 0em;
}

#outerDivWrapper, #outerDiv {
   height: 100%;
   margin: 0em;
}

#scrollableContent {
   height: 100%;
   margin: 0em;
   overflow-y: auto;
}

1

Mã từ câu trả lời trên bởi Dutchie432

.FixedHeightContainer {
    float:right;
    height: 250px;
    width:250px; 
    padding:3px; 
    background:#f00;
}

.Content {
    height:224px;
    overflow:auto;
    background:#fff;
}

-2

sử dụng overflowtài sản

overflow: hidden; 

overflow: auto;

overflow: scroll;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.