Làm cách nào để thu phóng một phần tử HTML trong Firefox và Opera?


82

Làm cách nào để thu phóng một phần tử HTML trong Firefox và Opera?

Các zoomtài sản đang làm việc trong IE, Google Chrome và Safari, nhưng nó không làm việc trong Firefox và Opera.

Có phương pháp nào để thêm thuộc tính này vào Firefox và Opera không?


1
Tôi muốn giới thiệu cho bạn câu hỏi này , câu trả lời của bạn khá kỹ lưỡng.
Ben

Câu trả lời:


80

Hãy thử mã này, điều này sẽ hoạt động:

-moz-transform: scale(2);

Bạn có thể tham khảo cái này .


2
Ya cái này đang hoạt động hoàn hảo. Có được phương pháp nào để thay đổi moz-transform yếu tố rộng tỷ lệ phần trăm

Nó là một phần trăm ở dạng thập phân. (1 = 100% 2 = 200% 0,2 = 20%) Nhưng tôi tin rằng bạn cũng có thể sử dụng ký hiệu phần trăm. w3.org/TR/css3-values/#percentages
sholsinger

45
Vấn đề với điều này, là khi bạn có các yếu tố vị trí cố định. Thu phóng hoạt động theo một cách khác với quy mô biến đổi.
Tom Roggero 14/02/12

3
Ngoài ra ... điều gì sẽ xảy ra khi ff hỗ trợ zoom? Điều này sẽ phóng to gấp đôi? Đây không phải là giải pháp imo.
Cory Mawhorter

điều này không hoạt động với hình ảnh sprite mặc dù nơi chúng ta thực sự cần phóng to một phần cụ thể của hình ảnh.
colin rickels

52

Tỷ lệ thu phóng và chuyển đổi không giống nhau. Chúng được áp dụng vào những thời điểm khác nhau. Thu phóng được áp dụng trước khi kết xuất diễn ra, chuyển đổi - sau. Kết quả của việc này là nếu bạn lấy một div có chiều rộng / chiều cao = 100% được lồng vào bên trong của một div khác, với kích thước cố định, nếu bạn áp dụng thu phóng, mọi thứ bên trong thu phóng bên trong của bạn sẽ thu nhỏ hoặc tăng lên, nhưng nếu bạn áp dụng thì chuyển đổi toàn bộ div bên trong sẽ co lại (mặc dù chiều rộng / chiều cao được đặt thành 100%, chúng sẽ không bằng 100% sau khi chuyển đổi).


35

Đối với tôi, điều này hoạt động để chống lại sự khác biệt giữa thu phóng và chuyển đổi tỷ lệ, điều chỉnh cho nguồn gốc dự định mong muốn:

zoom: 0.5;
-ms-zoom: 0.5;
-webkit-zoom: 0.5;
-moz-transform:  scale(0.5,0.5);
-moz-transform-origin: left center;

8

Sử dụng scalethay thế! Sau nhiều nghiên cứu và thử nghiệm, tôi đã thực hiện plugin này để đạt được nó trên nhiều trình duyệt:

$.fn.scale = function(x) {
    if(!$(this).filter(':visible').length && x!=1)return $(this);
    if(!$(this).parent().hasClass('scaleContainer')){
        $(this).wrap($('<div class="scaleContainer">').css('position','relative'));
        $(this).data({
            'originalWidth':$(this).width(),
            'originalHeight':$(this).height()});
    }
    $(this).css({
        'transform': 'scale('+x+')',
        '-ms-transform': 'scale('+x+')',
        '-moz-transform': 'scale('+x+')',
        '-webkit-transform': 'scale('+x+')',
        'transform-origin': 'right bottom',
        '-ms-transform-origin': 'right bottom',
        '-moz-transform-origin': 'right bottom',
        '-webkit-transform-origin': 'right bottom',
        'position': 'absolute',
        'bottom': '0',
        'right': '0',
    });
    if(x==1)
        $(this).unwrap().css('position','static');else
            $(this).parent()
                .width($(this).data('originalWidth')*x)
                .height($(this).data('originalHeight')*x);
    return $(this);
};

sử dụng:

$(selector).scale(0.5);

Ghi chú:

Nó sẽ tạo một trình bao bọc với một lớp scaleContainer. Hãy quan tâm đến điều đó trong khi tạo nội dung.


Bạn có thể làm cho điều này tuyệt vời hơn nữa bằng cách xử lý chiều rộng đường viền của phần tử được chia tỷ lệ ...width($(this).data('originalWidth') * x + borderWidth)
umutesen

5
zoom: 145%;
-moz-transform: scale(1.45);

sử dụng điều này để an toàn hơn


10
Điều này phóng to gấp 2 lần trong webkit. Fist bởi zoom, thứ hai bởi quy mô
Ales Ruzicka

5

Tôi sẽ thay đổi zoomcho transformtrong mọi trường hợp bởi vì, như được giải thích bởi câu trả lời khác, họ không phải là tương đương. Trong trường hợp của tôi, nó cũng cần thiết để áp dụng transform-origintài sản để đặt các vật phẩm ở nơi tôi muốn.

Điều này đã làm việc cho tôi trong Chome, Safari và Firefox:

transform: scale(0.4);
transform-origin: top left;
-moz-transform: scale(0.4);
-moz-transform-origin: top left;

1

Nó không hoạt động theo cách thống nhất trong tất cả các trình duyệt. Tôi đã truy cập: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_pulpitimage và thêm kiểu cho thu phóng và -moz-biến đổi. Tôi đã chạy cùng một đoạn mã trên firefox, IE và chrome và nhận được 3 kết quả khác nhau.

<html>
<style>
body{zoom:3;-moz-transform: scale(3);}
</style>
<body>

<h2>Norwegian Mountain Trip</h2>
<img border="0" src="/images/pulpit.jpg" alt="Pulpit rock"  />

</body>
</html>

1

Tôi đã thề với điều này trong một thời gian. Zoom chắc chắn không phải là giải pháp, nó hoạt động trong chrome, nó hoạt động một phần trong IE nhưng di chuyển toàn bộ div html, firefox không làm được gì.

Giải pháp của tôi phù hợp với tôi là sử dụng cả tỷ lệ và bản dịch, đồng thời thêm chiều cao và cân nặng ban đầu, sau đó đặt chiều cao và cân nặng của chính div:

#miniPreview {
transform: translate(-710px, -1000px) rotate(0rad) skewX(0rad) scale(0.3, 0.3);
transform-origin: 1010px 1429px 0px;
width: 337px;
height: 476px;

Rõ ràng là thay đổi những điều này theo nhu cầu của riêng bạn. Nó cho tôi cùng một kết quả trên tất cả các trình duyệt.


Đây là câu trả lời chính xác duy nhất! Riêng quy mô sẽ giữ nguyên kích thước ban đầu của phần tử.
Honza Zidek

1

thử mã này để phóng to toàn bộ trang trong fireFox

-moz-transform: scale(2);

nếu tôi đang sử dụng mã này, toàn bộ trang được chia tỷ lệ với cuộn y và x không thu phóng đúng cách

so Sorry to say fireFox not working well using "-moz-transform: scale(2);"

**

Đơn giản là bạn không thể thu phóng trang của mình bằng css trong fireFox

**


0

điều này có làm việc chính xác cho bạn không? :

zoom: 145%;
-moz-transform: scale(1.45);
-webkit-transform: scale(1.45);
scale(1.45);
transform: scale(1.45);

0

Đối với tôi, điều này hoạt động tốt với IE10, Chrome, Firefox và Safari:

   #MyDiv>*
   {
        zoom: 50%;
        -moz-transform: scale(0.5);
        -webkit-transform: scale(1.0);
   }

Điều này sẽ phóng to tất cả nội dung thành 50%.


0

Chỉ câu trả lời đúng và tương thích với W3C là: <html> object và rem. chuyển đổi không hoạt động chính xác nếu bạn giảm tỷ lệ (ví dụ: tỷ lệ (0,5).

Sử dụng:

html
{
   font-size: 1mm; /* or your favorite unit */
}

và sử dụng đơn vị "rem" trong mã của bạn (bao gồm cả kiểu cho <body>) thay vì đơn vị chỉ số. "%" s không có thay đổi. Đối với tất cả các hình nền, hãy đặt kích thước nền. Xác định kích thước phông chữ cho nội dung, kích thước này được kế thừa bởi các phần tử khác.

nếu bất kỳ điều kiện nào xảy ra sẽ kích hoạt thu phóng khác với 1.0, hãy thay đổi kích thước phông chữ cho thẻ (thông qua CSS hoặc JS).

ví dụ:

@media screen and (max-width:320pt)
{
   html
   {
      font-size: 0.5mm; 
   }
}

Điều này làm cho tương đương với thu phóng: 0,5 mà không có vấn đề trong JS với clientX và định vị trong các sự kiện kéo-thả.

Không sử dụng "rem" trong các truy vấn phương tiện.

Bạn thực sự không cần thu phóng, nhưng trong một số trường hợp, nó có thể nhanh hơn đối với các trang hiện có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.