2013-06-25 69 views
47

Tôi đang tìm giải pháp CSS/Javascript cho vấn đề cuộn trang HTML của mình.Css cuộn tràn không hoạt động trong div

tôi có ba divs có chứa một div, một tiêu đề và một div wrapper,

Tôi cần một thanh cuộn dọc trong div wrapper, chiều cao nên được tự động hoặc 100% dựa trên nội dung.

Các tiêu đề phải được cố định, và tôi không muốn thanh cuộn tổng thể vì vậy tôi đã đưa ra overflow:hidden trong thẻ cơ thể,

tôi cần thanh cuộn dọc trong div wrapper của tôi. Làm thế nào tôi có thể sửa lỗi này?

HTML

<div id="container"> 

    <div class="header"></div> 

    <div class="wrapper"> 
     <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus porta tortor sed metus. Nam pretium. Sed tempor. Integer ullamcorper, odio quis porttitor sagittis, nisl erat tincidunt massa, eu eleifend eros nibh sollicitudin est. Nulla dignissim. Mauris sollicitudin, arcu id sagittis placerat, tellus mauris egestas felis, eget interdum mi nibh vel lorem. Aliquam egestas hendrerit massa. Suspendisse sed nunc et lacus feugiat hendrerit. Nam cursus euismod augue. Aenean vehicula nisl eu quam luctus adipiscing. Nunc consequat justo pretium orci. Mauris hendrerit fermentum massa. Aenean consectetuer est ut arcu. Aliquam nisl massa, blandit at, accumsan sed, porta vel, metus. Duis fringilla quam ut eros.</p> 
     <!-- Lots more paragraphs--> 
    </div> 

</div> 

CSS

body{ margin:0; padding:0; overflow:hidden; height:100%} 
#container { width:1000px; margin:0 auto;} 
.header { width:1000px; height:30px; background-color:#dadada;} 
.wrapper{ width:1000px; overflow:scroll; position:relative;} 

Vui lòng tham khảo này JS Fiddle

Trả lời

1

Hãy thử điều này cho một thanh cuộn dọc:

overflow-y:scroll; 
+2

overflow-y: cuộn cũng không hoạt động. – user2493730

+0

Nhưng nếu bạn đang sử dụng máy Mac chỉ có bàn di chuột, điều này cũng không hoạt động. –

11

Nếu bạn thêm chiều cao trong lớp .wrapper thì cuộn của bạn đang hoạt động, mà không cần di chuyển height không hoạt động.

Hãy thử điều này http://jsfiddle.net/ZcrFr/3/

CSS:

.wrapper { 
    position: relative; 
    overflow: scroll; 
    width: 1000px; 
    height: 800px; 
} 
+2

Cảm ơn, nhưng yêu cầu thực tế của tôi là tôi không nên đưa ra bất kỳ chiều cao nào có thể cung cấp 100% hoặc tự động, nội dung sẽ theo cửa sổ trình duyệt, bạn có thể giải quyết bất kỳ giải pháp nào khác trong CSS/JAVASCRIPT không? – user2493730

3

Bạn đã không cho các div một chiều cao. Vì vậy, nó sẽ tự động kéo dài khi có thêm nội dung. Cung cấp cho nó độ cao cố định và các thanh cuộn sẽ hiển thị.

+1

Cảm ơn, nhưng yêu cầu thực tế của tôi là tôi không nên đưa ra bất kỳ chiều cao nào có thể cung cấp 100% hoặc tự động, nội dung sẽ theo cửa sổ trình duyệt, bạn có thể giải quyết bất kỳ giải pháp nào khác trong CSS/JAVASCRIPT không? – user2493730

+1

Đặt chiều cao là 100%. Sau đó, bạn đáp ứng các yêu cầu cho tràn và chính mình. – Nick

3

tôi thay đổi nội dung của bạn: Fiddle

html, body{ margin:0; padding:0; overflow:hidden; height:100% } 
.header { margin: 0 auto; width:500px; height:30px; background-color:#dadada;} 
.wrapper{ margin: 0 auto; width:500px; overflow:scroll; height: 100%;} 

Giving html-tag một chiều cao 100% là giải pháp. Tôi cũng đã xóa div vùng chứa. Bạn không cần nó khi bố trí của bạn vẫn như thế này.

+0

Cảm ơn làm việc của nó, nhưng đang sử dụng khái niệm thanh trượt coder của nó có div container chính, khu vực tiêu đề tôi có ba div nên cố định, bên trong nội dung wrapper khu vực chỉ nên được di chuyển, Bạn nói loại bỏ các thùng chứa như vậy làm thế nào tôi có thể khắc phục vấn đề này cách pl? – user2493730

90

Bạn đang thiếu thuộc tính CSS height.

Thêm vào đó bạn sẽ thấy thanh cuộn sẽ xuất hiện.

.wrapper{ 
    // width: 1000px; 
    width:600px; 
    overflow-y:scroll; 
    position:relative; 
    height: 300px; 
} 

JSFIDDLE

Từ documentation:

overflow-y

Thuộc tính CSS overflow-y cho phéo clip nội dung, biểu hiện một thanh cuộn, hoặc nội dung tràn màn hình của một khối yếu tố cấp, khi nó tràn ở các cạnh trên và dưới.

+2

cách làm cho chiều cao dừng ở chế độ xem? Tôi không muốn mã hóa bằng pixel vì nó không hoạt động với các kích thước màn hình khác nhau – djechlin

+0

@djechlin Đặt câu hỏi cho điều đó. Có lẽ bạn có thể sử dụng giá trị phần trăm hoặc 'dislpay: fixed' ... Tôi không chắc bạn đang cố gắng làm gì. –

+4

sử dụng thuộc tính chiều cao chế độ xem: chiều cao: 100vh – Joseph

0

Tôi muốn nhận xét về @Ionica Bizau, nhưng tôi không có đủ danh tiếng.
Để trả lời câu hỏi của bạn về mã javascript:
Điều bạn cần làm là lấy chiều cao phần tử của cha mẹ (trừ bất kỳ yếu tố nào chiếm không gian) và áp dụng điều đó cho các phần tử con.

function wrapperHeight(){ 
    var height = $(window).outerHeight() - $('#header').outerHeight(true); 
    $('.wrapper').css({"max-height":height+"px"});  
} 

Lưu ý cửa sổ
có thể được thay thế bằng ".container" nếu đó là người ta không có con nổi hoặc có cách khắc phục để có được chiều cao chính xác tính toán. Giải pháp này sử dụng jQuery.

1

Giải pháp là thêm chiều cao: 100%; cho tất cả các phần tử cha-mẹ của .wrapper-div của bạn. Vì vậy:

html{ 
    heigth: 100%; 
} 

body{ 
    margin:0; 
    padding:0; 
    overflow:hidden; 
    height:100%; 
} 

#container{ 
    width:1000px; 
    margin:0 auto; 
    height:100%; 
} 
0

Đối Angular2 + Material2 + Sidenav, bạn sẽ cần phải làm như sau:

ngAfterViewInit() { 
    this.element.nativeElement.getElementsByClassName('md-sidenav-content')[0].style.overflow = 'hidden'; 
    } 
+0

bất kỳ chi tiết nào khác về điều đó? tại sao bạn không thể đặt 'overflow: hidden' vào' css' trong trường hợp material2? – Kuncevic

Các vấn đề liên quan