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. 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ờ. –
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
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. –