สำหรับโครงการของฉัน (ดูโครงการ BigPictu.reหรือbigpicture.js GitHub ) ฉันต้องจัดการกับ<div>
คอนเทนเนอร์ที่ใหญ่มากและใหญ่มาก
ฉันรู้ว่ามีความเสี่ยงที่จะมีประสิทธิภาพต่ำด้วยวิธีง่ายๆที่ฉันใช้ แต่ฉันไม่ได้คาดหวังว่ามันจะมีอยู่ใน ... Chrome เท่านั้น!
หากคุณทดสอบเพจเล็ก ๆ นี้ (ดูโค้ดด้านล่าง) การแพน (คลิก + ลาก) จะเป็น:
- ปกติ / ราบรื่นบน Firefox
- ปกติ / ราบรื่นแม้ใน Internet Explorer
- ช้ามาก (เกือบจะขัดข้อง) บน Chrome!
แน่นอนฉันสามารถเพิ่มโค้ด (ในโปรเจ็กต์ของฉัน) เพื่อทำเช่นนั้นเมื่อคุณซูมเข้ามากข้อความที่มีขนาดฟอนต์ใหญ่มากจะถูกซ่อนไว้ แต่เหตุใด Firefox และ Internet Explorer จึงจัดการอย่างถูกต้องและไม่ใช่ Chrome
มีวิธีใน JavaScript, HTML หรือ CSS ที่จะบอกเบราว์เซอร์ไม่ให้พยายามแสดงผลทั้งหน้า (ซึ่งกว้าง 10,000 พิกเซลที่นี่) สำหรับทุกการกระทำหรือไม่? (แสดงผลวิวพอร์ตปัจจุบันเท่านั้น!)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
html, body {
overflow: hidden;
min-height: 100%; }
#container {
position: absolute;
min-height: 100%;
min-width: 100%; }
.text {
font-family: "Arial";
position: absolute;
}
</style>
</head>
<body>
<div id="container">
<div class="text" style="font-size: 600px; left:100px; top:100px">Small text</div>
<div class="text" style="font-size: 600000px; left:10000px; top:10000px">Very big text</div>
</div>
<script>
var container = document.getElementById('container'), dragging = false, previousmouse;
container.x = 0; container.y = 0;
window.onmousedown = function(e) { dragging = true; previousmouse = {x: e.pageX, y: e.pageY}; }
window.onmouseup = function() { dragging = false; }
window.ondragstart = function(e) { e.preventDefault(); }
window.onmousemove = function(e) {
if (dragging) {
container.x += e.pageX - previousmouse.x; container.y += e.pageY - previousmouse.y;
container.style.left = container.x + 'px'; container.style.top = container.y + 'px';
previousmouse = {x: e.pageX, y: e.pageY};
}
}
</script>
</body>
</html>