2013-01-02 22 views
7

Bài đăng này có liên quan đến this one. Xin vui lòng xem xét đọc nó là tốt. :-)Nhận chiều cao có thể nhìn thấy của một phần tử thay vì chiều cao thực tế của nó bằng jquery

Trong bài đăng tôi liên kết đến, tôi đã tìm ra giải pháp cho vấn đề của mình là thay đổi mục tiêu của liên kết nếu chiều cao có thể nhìn thấy của div lớn hơn giá trị của div khác. Trong bố cục của tôi, tất cả các div tôi đang đề cập đến có chiều cao là 1100px. Nhưng đó không phải là những gì tôi muốn nhận được. Tôi muốn kịch bản để có được chiều cao của div mà hiện tại có thể nhìn thấy cho khách truy cập, không phải chiều cao thực sự của nó. Có cách nào để làm điều đó bằng cách sử dụng jQuery?

Cảm ơn trước!

+1

Bạn đã thử những gì? Kiểm tra hàm 'jQuery.offset()', cùng với thông tin khung nhìn và chiều cao phần tử sẽ giúp bạn tìm ra nó. Chỉ là vấn đề cộng và trừ. – Pablo

+0

Bạn đã bao giờ tìm ra điều này chưa? Tôi đang cố gắng làm điều tương tự, và tôi không có may mắn. – JacobTheDev

Trả lời

1

Bọc nội dung của chế độ xem DIV bằng một DIV khác. Nhắm mục tiêu DIV để đọc chiều cao của tất cả các nội dung như vậy:

JQuery: $ ('div # contents'). Height();

Layout:

<div id="viewport"> 
    <div id="contents">...all your div contents...</div> 
</div> 

Hope this helps. Chúc may mắn.

-1

Bạn có phải sử dụng chiều cao cố định 1100px không? Nguyên nhân bạn cũng có thể chỉ định chiều cao tối đa: 1100px; và chiều cao: 100%; Tùy thuộc vào những gì bạn muốn đặt bên trong div bạn tất nhiên có thể có được chiều cao hiện tại bằng cách

$('.divclass').height(); 
7

Những gì bạn có thể làm là lấy các yếu tố vị trí để phía trên cùng của hộp mẹ của nó và sau đó trừ nó từ cha mẹ chiều cao container. Điều đó sẽ cho bạn chiều cao có thể nhìn thấy của phần tử.

$('#container').height() - $('#overflow').position().top 

Đây là số fiddle hiển thị thông tin này.

+0

Tôi chưa bao giờ được sử dụng trước đây, trước hết, vì vậy trước hết hãy cảm ơn bạn vì câu trả lời của bạn đã dạy tôi điều gì đó. :-) Tôi đã cố gắng để tìm ra một cái gì đó bằng cách sử dụng phương pháp của bạn, nhưng tiếc là nó không hoạt động. Giả sử tôi có 3 divs cao tới 1100px. Toàn bộ tài liệu của tôi cao tới 3300px. Những gì tôi muốn làm là tính toán khoảng cách giữa đầu div cuối cùng và trên cùng của tài liệu và sau đó thay đổi mục tiêu của liên kết của tôi theo kết quả. Vì vậy: cảnh báo (3300 - $ ('# div3'). Offset(). Top) –

+0

Khi tôi ở trên cùng của tài liệu, nó quay trở lại 1100, đó là những gì tôi mong đợi. Nhưng sau đó tôi cuộn xuống một chút, đưa ra kịch bản, nhưng nó vẫn quay trở lại 1100. Tôi nghĩ nó sẽ cho tôi một con số cao hơn 1100, nhưng nó thì không. Vì vậy, tôi đoán .offset không hoàn toàn làm những gì tôi nghĩ nó đã làm và nó chỉ không thích ứng với vị trí hiện tại của cuộn. : -/ –

+0

@TomS. thêm '$ (cửa sổ) .scrollTop()' vào cảnh báo của bạn và nó sẽ cung cấp cho bạn những gì bạn muốn. [fiddle] (http://jsfiddle.net/bplumb/mbZby/4/) –

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