javascript
  • jquery
  • 2010-02-09 4307 views 12 likes 
    12

    tôi có mã như dưới đây:Jquery/Javascript tìm yếu tố có thể nhìn thấy đầu tiên sau khi cuộn

    <div id="container"> 
    <div class="item" id="1">blah blah</div> 
    <div class="item" id="2">blah blah 2</div> 
    </div> 
    

    Nhưng trên thực tế có rất nhiều và rất nhiều với class = 'mục'.

    Về cơ bản khi người dùng cuộn danh sách các mục tuyệt vời này, tôi muốn thay đổi kiểu dáng của mặt hàng hiển thị trên cùng hiện tại (như trình đọc google!). Đã xem xét xung quanh cho giải pháp trong javascript jquery hoặc đồng bằng nhưng dường như không thể tìm thấy một. Ai có ý tưởng gì không?

    Cảm ơn

    Đánh dấu

    Trả lời

    16

    Nếu yếu tố của bạn không phải là cùng một chiều cao, bạn có thể lặp qua chúng trên cuộn:

    $(document).scroll(function() { 
        var cutoff = $(window).scrollTop(); 
        $('.item').removeClass('top').each(function() { 
         if ($(this).offset().top > cutoff) { 
          $(this).addClass('top'); 
          return false; // stops the iteration after the first one on screen 
         } 
        }); 
    }); 
    

    Nếu đây là quá chậm, bạn có thể bộ nhớ cache $ ('mục'). Offset(). vào một mảng, thay vì gọi hàm offset() mỗi lần.

    +0

    Cảm ơn, hoạt động tốt với tinh chỉnh nhỏ, thêm một số 25 rằng họ được chọn ngay trước khi họ chạm vào đỉnh của cửa sổ, nếu không thì người được chọn sẽ được di chuyển một nửa trước khi người được chọn tiếp theo được chọn –

    +0

    $ ('. item'). offset() sẽ không hoạt động - bù trừ sẽ nhận được tọa độ hiện tại của phần tử đầu tiên trong tập hợp các phần tử đã so khớp, liên quan đến tài liệu. –

    -4

    Bạn có thể tạo cuộn của riêng bạn sử dụng javascript.

    Nó không phải là ý tưởng rất thiết thực nhưng bạn có thể thử.

    Và đặt liên kết tới hình ảnh mô tả tốt hơn. Nó sẽ rất hữu ích.

    +0

    Thêm mẫu triển khai hoặc ít nhất là mô hình hoặc công nghệ triển khai, sẽ hữu ích. Mô tả tốt hơn, ví dụ: ý bạn là gì với trình cuộn, bạn sẽ sử dụng thư viện/plugin nào, tại sao bạn không coi đó là một ý tưởng thực tế, v.v. –

    2

    Dưới đây là một ý tưởng khác, dựa trên các hàm javascipt dựng sẵn.

    var range = document.caretRangeFromPoint(0,0); // screen coordinates of upper-left corner of a scolled area (in this case screen itself) 
    var element = range.startContainer.parentNode; // this an upper onscreen element 
    

    chút mã này không phải là một sản phẩm sẵn sàng để sử dụng - nó chỉ là ví dụ, mà chỉ hoạt động trong các trình duyệt webkit. Nếu bạn muốn sử dụng nó, bạn nên google cho tương đương trình duyệt chéo của caretRangeFromPoint()

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