Tôi không tin rằng có thể có truy vấn phương tiện CSS, nhưng tôi biết rằng chiều cao cuộn có thể được tìm thấy trong JavaScript bằng cách sử dụng window.pageYOffset
. Nếu bạn muốn chạy giá trị này thông qua một chức năng mỗi khi người dùng cuộn lên hoặc xuống trên một trang, bạn có thể làm một cái gì đó giống như
window.onscroll = function() {
scrollFunctionHere(window.pageYOffset);
};
Hoặc chỉ:
window.onscroll = scrollFunctionHere;
Nếu chức năng tự kiểm tra giá trị của window.pageYOffset
.
Để được tư vấn thêm về cách sử dụng window.onscroll
hiệu quả trong JavaScript, hãy tham khảo mynameistechno's answer.
Lưu ý quan trọng về hiệu quả: chạy một hàm mỗi lần một sự kiện cuộn được phát ra có thể xé qua các chu kỳ CPU nếu bất kỳ điều gì không tầm thường được thực hiện trong cuộc gọi lại. Thay vào đó, thực hành tốt là chỉ cho phép gọi lại để chạy quá nhiều lần mỗi giây. Điều này đã được gọi là "debouncing".
Mã trình xử lý sự kiện cuộn được đánh dấu đơn giản dưới đây. Chú ý các văn bản Toggles giữa "HELLO" và "WORLD" mỗi 250ms, chứ không phải là mỗi khung duy nhất:
var outputTo = document.querySelector(".output");
var timeout_debounce;
window.addEventListener("scroll", debounce);
function debounce(event) {
if(timeout_debounce) {
return;
}
timeout_debounce = setTimeout(clearDebounce, 250);
// Pass the event to the actual callback.
actualCallback(event);
}
function clearDebounce() {
timeout_debounce = null;
}
function actualCallback(event) {
// Perform your logic here with no CPU hogging.
outputTo.innerText = outputTo.innerText === "HELLO"
? "WORLD"
: "HELLO";
}
p {
padding: 40vh;
margin: 20vh;
background: blue;
color: white;
}
<p class="output">Test!</p>
Nguồn
2013-06-04 16:26:35
+1 Câu trả lời hay. – iConnor
Không hoạt động. Xem câu trả lời của tôi – mynameistechno
Tôi đã sửa lỗi viết hoa trong câu trả lời của mình và thêm nội dung nào đó đề cập đến câu trả lời của bạn để biết thêm thông tin về cách sử dụng 'window.onscroll'. Chỉ để ghi lại, tôi đã chọn không thêm nhiều thông tin vào câu trả lời của mình vì tôi cho rằng các nhà phát triển muốn sử dụng kỹ thuật JavaScript sẽ thực hiện nghiên cứu riêng của họ về 'window.onscroll'. @mynameistechno –