2009-02-12 21 views
8

Làm cách nào để tắt hiệu ứng thu phóng ctrl/bánh xe bằng css hoặc javascript trên một số thành phần nhất định. Tôi tạo thanh menu bị méo khi áp dụng hiệu ứng thu phóng. Tôi muốn vô hiệu hóa nó chỉ cho các yếu tố nhất định.tắt hiệu ứng thu phóng CTRL/Wheel khi chạy

+0

Đây là vấn đề tiếp cận và bạn nên cố gắng làm việc với nó và không chống lại nó. Đây là lý do tại sao bạn nên sử dụng đơn vị tương đối "em" để định kích thước các phần tử css. Gmail là một ví dụ tuyệt vời về kích thước tương đối. Chuyển đến đó và thay đổi kích thước văn bản trình duyệt thành lớn hơn hoặc nhỏ hơn. –

Trả lời

0

Bạn không thể; đây là tính năng của trình duyệt, không phải là tính năng của tài liệu.

Có nói rằng, nếu bạn sử dụng kiểu CSS = "font-size: 9px;", bạn có thể ghi đè kích thước văn bản. Thu phóng trình duyệt sẽ vẫn hoạt động và các thay đổi kích thước phông chữ của trình duyệt sẽ có một số hiệu ứng định dạng.

11

Ý tưởng hay hơn: thiết kế bố cục của bạn để đủ mạnh để xử lý các thay đổi như thế này. Bạn không thể vô hiệu hóa chúng, ngay cả khi bạn sửa kích thước phông chữ (mà bạn không bao giờ nên làm ở nơi đầu tiên), vì vậy bạn cũng có thể đáp ứng để phóng to một cách duyên dáng.

Thực tế là, nếu tất cả các phần tử đều được chia tỷ lệ bằng trình duyệt, trang của bạn phải trông và hoạt động giống như trước đây (ngoại trừ, bạn biết, lớn hơn) trừ khi bạn đã thực hiện một số phím tắt trong thiết kế của mình một vài nơi.

+1

"Thực tế là, nếu tất cả các yếu tố được chia tỷ lệ bằng nhau bởi trình duyệt ..." Tôi nghĩ anh ấy đang gặp sự cố với việc thu phóng phông chữ chỉ được sử dụng để thống trị. May mắn thay, đó là trên đường ra ... Thật không may, nó vẫn sẽ là một vấn đề cho một vài năm được nêu ra. – AaronSieb

+0

Thật công bằng. Nếu có các phần chức năng của trang không cần được chia tỷ lệ với phông chữ (tức là bất kỳ nội dung nào trừ nội dung), tôi có thể chỉnh sửa kích thước của chúng. Nhưng nếu anh ta sử dụng JS dựa vào vị trí hoàn hảo của pixel hoặc bất kỳ thứ gì dọc theo những dòng đó, đó là nguyên nhân bị mất. – Welbog

+0

@Welbog Thực tế là các trình duyệt được biết là thiếu sót: http: // stackoverflow.com/q/10914174/632951 – Pacerier

0

Đây là vấn đề của tôi: Tôi luôn thiết kế với ems và chúng hoạt động một cách kỳ diệu. Nhưng với chế độ thu phóng toàn trang, hình nền của tôi cũng được phóng to. Nếu tôi có mẫu lặp lại làm nền chính, tôi không muốn nó trở thành pixelized. Chúng giúp chúng tôi tránh một số công việc, như triển khai Cửa trượt CSS của Doug Bowman, nhưng bây giờ tôi phải sống với các tab bị mờ.

Tôi cũng có một vấn đề khác với thu phóng toàn trang, ít nhất là nó được triển khai trong các trình duyệt hiện tại: Tôi là một trong những người '' đặt trình duyệt của tôi thành phông 12pt thay vì 16pt. Thỉnh thoảng, tôi đã đi qua một trang web (chiều rộng cố định) để thay đổi kích cỡ văn bản thành một kích thước nhỏ (tôi đoán họ đã sử dụng 0.9em hoặc cái gì đó, thay vì 14px, trong khi cố gắng làm cho nó nhỏ hơn). Tôi thường chỉ phóng to một hoặc hai, và tất cả sẽ tốt. Tuy nhiên, với thu phóng toàn trang, các hình ảnh có tỷ lệ rất lớn và tôi có một thanh cuộn ngang.

Giải pháp cho vấn đề đầu tiên là cho phép một số loại lệnh xử lý trong thẻ hình nền không cho phép thu phóng toàn trang trên phần tử đó. Hoặc có thể một cái gì đó trong đầu của tài liệu. Nếu trình duyệt thực sự muốn công bằng về điều đó, họ cũng có thể cung cấp cho người dùng tùy chọn họ có thể đặt để vượt quá hướng dẫn không thu phóng để họ có thể thu phóng nếu họ chọn. Giải pháp cho vấn đề thứ hai là thu phóng toàn trang để chuyển đổi tất cả px thành em với tốc độ 16px/em trước và rồi thu phóng kích thước văn bản của bạn, thay vì chuyển đổi px sang em bằng văn bản của bạn kích thước làm cơ sở. Sau đó cuộn lại lên đến 16px sẽ làm cho hình ảnh có kích thước hoàn hảo, như dự định.

2

giải pháp cho IE và Firefox:

var obj=document.body; // obj=element for example body 
// bind mousewheel event on the mouseWheel function 
if(obj.addEventListener) 
{ 
    obj.addEventListener('DOMMouseScroll',mouseWheel,false); 
    obj.addEventListener("mousewheel",mouseWheel,false); 
} 
else obj.onmousewheel=mouseWheel; 

function mouseWheel(e) 
{ 
    // disabling 
    e=e?e:window.event; 
    if(e.ctrlKey) 
    { 
     if(e.preventDefault) e.preventDefault(); 
     else e.returnValue=false; 
     return false; 
    } 
} 
+0

FYI, điều này sẽ không hoạt động trong các trình duyệt webkit khi nhấn phím điều khiển đã đè lên sự kiện mousewheel và không được phát hiện. – SpYk3HH