2014-10-30 23 views
6

Tôi đang tạo một menu xuất hiện sau khi nhấp vào liên kết và tôi đang cố gắng sử dụng jQuery animate(); để trượt nó thay vì chỉ xuất hiện.jQuery animate() chỉ hoạt động trên nhấp chuột thứ hai

Sự cố tôi gặp phải là dường như nó chỉ kích hoạt bit trượt trên lần thử thứ hai, mặc dù dường như nó có vẻ tạm dừng 500ms như thể nó đã xảy ra.

Tôi đã nhìn thấy một loạt các câu hỏi khác về vấn đề này nhưng câu trả lời là "bạn có lỗi cụ thể trong mã" hoặc "bạn phải chuyển đổi hoặc giả mạo hoạt ảnh khi tải trang". Tôi hy vọng mã của tôi là không có lỗi và tôi không thực sự quan tâm để sử dụng một hack chuyển đổi chỉ để bỏ qua các hoạt hình đầu tiên no-show.

Có lẽ điều này là nghĩa vụ phải làm việc lần đầu tiên & mỗi lần tiếp theo vì vậy câu hỏi của tôi là: Làm cách nào để hoạt ảnh hoạt động lần đầu mà không cần sửa chữa/hack?

HTML

<section id="mover"> 
    <div class="menu_Content"> 
    <div class="menu_close"> 
     <a href="#" id="closeMenu">close menu</a> 
    </div> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    <h5><a href="/">[menu link]</a></h5> 
    </div> 
</section> 
<div class="core home"> 
    <header> 
    <div class="menu_link"> <a href="#" id="openMenu">[menu]</a></div> 
    </header> 
    <div class="content"> 
    <h1 class="big-head">[headline one]</h1> 
    <p>[some content]</p> 
    </div> 
</div> 

CSS

#mover { 
    background:rgba(47, 47, 47, 1); 
    min-height: 100%; 
    position: absolute; 
    z-index: 2; 
    right: 100%; 
    overflow: hidden; 
    display: none; 
    width: 100%; 
    right: 0%; 
} 
#mover a { 
    width: 100px; 
    height: 60px; 
    color: #fff; 
    text-decoration: none; 
    display: block; 
    padding-top: 10px; 
} 
#mover .menu_close { 
    width: 100px; 
    height: 60px; 
    background: #FF7466; 
    color: #fff; 
    text-align: center; 
} 

JS/jQuery

//menu open 
jQuery('#openMenu').click(function (event) { 
    event.preventDefault(); 
    jQuery('#mover') 
     .animate({ 
     right: '0%' 
    }, 500, function() { 
     jQuery('#mover').show(); 
    }); 
}); 
//menu close 
jQuery('#closeMenu').click(function (event) { 
    event.preventDefault(); 
    jQuery('#mover').animate({ 
     right: '100%' 
    }, 500); 
}); 

Đây là một fiddle: http://jsfiddle.net/tymothytym/05gu7bpr/4/

Cảm ơn!

+1

+1. Tất cả các câu hỏi SO nên được hình thành như thế này. Ngoài ra, bạn có cân nhắc sử dụng chuyển tiếp CSS thay thế không? Điều này không trả lời câu hỏi của bạn, nhưng thường là cách tiếp cận ưa thích của tôi đối với hoạt ảnh dựa trên trình duyệt ngay bây giờ. –

+0

Tôi muốn nó hoạt động chỉ khi nhấn để JS có vẻ như là con đường để đi, tôi mở cửa cho bất kỳ giải pháp nào và thường thích một tùy chọn CSS. Câu hỏi SO là gì? – tymothytym

+0

Câu hỏi StackOverflow. Tôi sẽ viết thay thế CSS cho bạn vào buổi sáng. Nhưng về cơ bản, bạn chuyển đổi một lớp với jQuery của bạn. Một lớp sẽ có 'right: 0%;' và lớp kia sẽ có 'right: 100%'. Điều này sẽ nhanh chóng nhấp vào bây giờ (rõ ràng), nhưng sau đó bạn xác định quá trình chuyển đổi như vậy: 'transition: tất cả 3s dễ dàng;'. 'All' có nghĩa là bất kỳ sự khác biệt nào trong các thuộc tính CSS sẽ được làm động khi có thể, bạn có thể đã có' right' nhưng tôi cho rằng bạn có thể muốn chơi với nó để lại 'all' trong. LƯU Ý: Kiểm tra' -webkit 'tương đương của các thuộc tính chuyển đổi, v.v. –

Trả lời

4

Thay đổi #mover CSS như sau:

#mover { 
    background:rgba(47, 47, 47, 1); 
    min-height: 100%; 
    position: absolute; 
    z-index: 2; 
    right: 100%; 
    overflow: hidden; 
    display: block; 
    width: 100%; 
} 

DEMO

+0

và bạn mã quá tất cả như: http: // jsfiddle.net/05gu7bpr/6/ –

+0

Darn nó. Vì vậy, đó là một lỗi, thực hành nhiều hơn trong việc kiểm tra yêu cầu ... ưa thích đặt ngay trong hai lần * rên *. – tymothytym

0

http://jsfiddle.net/desmo/05gu7bpr/5/

Chương trình xảy ra sau khi các hình ảnh động trên nhấp chuột đầu tiên

tôi sửa css và js

css:

#mover { 
    background:rgba(47, 47, 47, 1); 
    min-height: 100%; 
    position: absolute; 
    z-index: 2; 
    right: 100%; 
    overflow: hidden; 
    width: 100%; 
} 
#mover a { 
    width: 100px; 
    height: 60px; 
    color: #fff; 
    text-decoration: none; 
    display: block; 
    padding-top: 10px; 
} 
#mover .menu_close { 
    width: 100px; 
    height: 60px; 
    background: #FF7466; 
    color: #fff; 
    text-align: center; 
} 

JS:

//menu open 
jQuery('#openMenu').click(function (event) { 
    event.preventDefault(); 
    jQuery('#mover') 
     .animate({ 
     right: '0%' 
    }, 500); 
}); 
//menu close 
jQuery('#closeMenu').click(function (event) { 
    event.preventDefault(); 
    jQuery('#mover').animate({ 
     right: '100%' 
    }, 500); 
}); 
Các vấn đề liên quan