Tôi muốn xóa/thêm các lớp khi người dùng ở các khoảng cách khác nhau từ trên cùng bằng cách sử dụng jQuery.Thêm và xóa các lớp ở các độ cao khác nhau trên trang bằng cách sử dụng jQuery
Tôi đã thực hiện thành công nó, và nó hoạt động tốt, nhưng tôi nghĩ rằng tôi đang làm điều đó sai, và tôi muốn giúp đỡ của bạn để tối ưu hóa mã.
html đơn giản, về cơ bản các phần (bao gồm tiêu đề), có chiều rộng 100%. và màu sắc khác nhau. Tôi muốn làm cho màu sắc thay đổi tiêu đề khi nó trên phần đầu tiên (cho mục đích thẩm mỹ). Và tôi cũng muốn nó có bóng khi trang được cuộn nhiều hơn 1 pixel.
Tôi đang làm điều đó bằng cách thêm/xóa lớp học.
Khi tôi sử dụng một câu lệnh khác nếu câu lệnh không hoạt động tốt vì bất kỳ khi nào bất kỳ điều kiện nào khớp với js đều dừng kiểm tra các trận đấu khác, vì vậy nó không áp dụng tất cả các lớp cần thiết.
Mã tiếp theo hoạt động, tuy nhiên như tôi đã nói, tôi nghĩ rằng đó không phải là tối ưu/viết xấu. Dưới đây là đánh dấu HTML:
<header class="dark no-shadow">
Header
</header>
<section class="blue">
Please Scroll Down to see the header changes...
</section>
<section>
The header color Should change when you pass through me.
</section>
Và đây là đoạn code jQuery: (! Như tôi)
var header = $('header'),
blueSection = $('section.blue'),
// Calculate when to change the color.
offset = blueSection.offset().top + blueSection.height() - header.height();
$(window).scroll(function(){
var scroll = $(window).scrollTop();
// Remove Class "dark" after scrolling over the dark section
if (scroll >= offset) {
header.removeClass('dark');
} else {
header.addClass('dark');
}
// Remove Class "no-shadows" whenever not on the top of the page.
if (scroll >= 1) {
header.removeClass('no-shadow');
} else {
header.addClass('no-shadow');
}
});
Và đối với những người thích sử dụng jsfiddle: https://jsfiddle.net/shock/wztdt077/6/
Cảm ơn các bạn!
kiểm tra ở đây về cách thực hiện hành động sau khi bạn cuộn một nơi nào đó - http://stackoverflow.com/questions/25660289/show-hide-div-when-passed-the-other-div/25661103#25661103 - bạn có thể làm điều đó theo vị trí của một div hoặc theo pixel – Tasos
bản demo sử dụng mã từ conent ở trên - https://jsfiddle.net/tgaoyx4b/ – Tasos
Điều này có thể nên truy cập http://codereview.stackexchange.com/ – xpy