2013-09-08 37 views
6

Tôi đang viết một ứng dụng web có thể chạy trên cả trình duyệt iPad và Máy tính để bàn.JavaScript/Jquery Phát hiện va chạm cho cửa sổ bật lên

Tôi có một phần bộ lọc với cửa sổ bật lên tới từ phía bên (popup được hoàn toàn vị trí tương đối so với thẻ lọc <li>):

enter image description here

Mọi chuyện có vẻ tốt đẹp và dandy trên máy tính để bàn, nhưng trên một Ipad ở chế độ ngang, dưới cùng của cửa sổ bật lên bị cắt vì nó vượt ra ngoài chế độ xem.

tôi đã cố gắng giải quyết nó bằng cách sử queryUI position:

$('.capbIpadPopupAutoComplete').position({ 
    "my": "left center" ,  // Horizontal then vertical, missing values default to center 
    "at": "left top",  // Horizontal then vertical, missing values default to center 
    "of": $(this).closest('li'),  // Element to position against 
    // "offset": "20 30" ,  // Pixel values for offset, Horizontal then vertical, negative values OK 
    "collision": "fit flip" // What to do in case of 
}); 

nhưng điều đó chỉ hoạt động nếu popup va chạm với phía bên trái của màn hình và không đáy.

Tôi cũng cần phải đảm bảo tam giác di chuyển tương ứng vì nó luôn phải trỏ đến bộ lọc chính xác.

Tôi có đang sử dụng vị trí JqueryUI sai không? là có một giải pháp tốt hơn?

Here is a very simplified fiddle

+0

Fiddle của bạn quá đơn giản - nó không sử dụng JQUI, hoặc bất kỳ javascript nào cả. JQUI là những gì được cho là để xử lý flipping. – user1618143

+0

Uh, bạn sẽ trả lời? – user1618143

+0

@ user1618143 - Xin lỗi, tôi đã đi nghỉ mát. Tôi sẽ thử nó vào ngày mai và xem nếu nó giúp – Tomer

Trả lời

2

Được rồi, có vẻ như vấn đề lớn nhất là "flip fit" không phải là thực sự là một giá trị hợp lệ cho collision. (Tôi nghĩ rằng nó đang được coi là "flip".) Có thể bạn đang tìm kiếm "flipfit" (không có khoảng trống), hoặc có thể chỉ "fit". Bạn cũng nên đảm bảo căn chỉnh bên phải bên phải của cửa sổ bật lên với cạnh bên trái của li - căn chỉnh bên trái với bên trái khiến chúng trùng lặp và sau đó nó bị lật vì không có đủ chỗ. Tôi đã chỉnh sửa mã của bạn và làm cho nó hoạt động tốt hơn (nhưng vẫn không hoàn hảo; bạn sẽ phải tinh chỉnh nó).

$('.capbIpadPopupAutoComplete').position({ 
    "my": "right top" ,  // Horizontal then vertical, missing values default to center 
    "at": "left top",  // Horizontal then vertical, missing values default to center 
    "of": $('.capbStrategicPlan'),  // Element to position against 
    // "offset": "20 30" ,  // Pixel values for offset, Horizontal then vertical, negative values OK 
    "collision": "fit" // What to do in case of 
}); 

$(this) dường như không được làm việc trong đối số of, vì vậy tôi thay thế nó.

Bạn cũng không cần đặt giá trị right của cửa sổ bật lên, vì .position đặt left và đặt cả hai đều nhấn vào cửa sổ bật lên.

Đối với mũi tên, tại sao bạn không chỉ định vị chúng một cách riêng biệt? Nếu cửa sổ bật lên phải di chuyển một chút, nó sẽ chồng chéo lên một số mũi tên, nhưng điều đó sẽ làm cho mũi tên trông nhỏ hơn.

+0

Nó không hoạt động, không chắc chắn lý do tại sao, tôi đã thử tất cả các loại biến thể nhưng không có gì hữu ích. Cuối cùng tôi đã thực hiện phát hiện va chạm của tôi ... – Tomer

+0

Bạn đã bật lên cửa sổ bật lên và sau đó thay đổi kích thước cửa sổ? Điều đó sẽ giải thích tại sao nó không làm việc cho bạn; 'vị trí' chỉ nhìn vào kích thước của cửa sổ khi nó lần đầu tiên chạy; nó không tiếp tục theo dõi và điều chỉnh chính nó. – user1618143

+0

Tôi biết, tôi đã mở nó trên Ipad, nơi nó va chạm lần đầu tiên nó mở ra – Tomer

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