2012-06-22 24 views
12

CSS sau ảnh hưởng đến việc liệu trang có in theo chiều dọc hoặc ngang theo mặc định hay không.JavaScript có thể thay đổi giá trị của @page CSS không?

@page { 
    size: landscape; 
} 

Tôi nhận ra rằng điều này chỉ hoạt động trên một nhóm trình duyệt rất hạn chế và người dùng có thể ghi đè lên. Không sao đâu; Tôi chỉ cố gắng cung cấp một mặc định tốt.

Điều này hoạt động tốt như một giá trị tĩnh trong CSS, nhưng tôi muốn chuyển động động giữa cảnh quan & dọc dựa trên lựa chọn của người dùng. Có thể sử dụng JavaScript để thay đổi giá trị này không?

+0

thể trùng lặp của [tùy chọn vô hiệu hóa in trình duyệt (headers, footers, lợi nhuận) từ trang?] (Http: // stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margins-from-page) –

+0

@ J-16SDiZ: Tôi không nghĩ vậy; Tôi đã xem qua câu hỏi đó và không thấy bất kỳ điều gì về việc thay đổi cài đặt động. – DNS

+0

@BNL: Không nhiều; Tôi đã dành thời gian xem qua DOM để biết nơi tôi có thể truy cập vào tài sản này, nhưng không thể tìm thấy bất cứ điều gì. Tôi đã suy nghĩ một chút về việc thay đổi bản định kiểu, vaguely dọc theo dòng câu trả lời của jasssonpet, nhưng điều đó dường như có vấn đề với tôi vào thời điểm đó. – DNS

Trả lời

16

Một cách đơn giản là tạo ra một phong cách riêng biệt cho @page và thay đổi nó:

var cssPagedMedia = (function() { 
    var style = document.createElement('style'); 
    document.head.appendChild(style); 
    return function (rule) { 
     style.innerHTML = rule; 
    }; 
}()); 

cssPagedMedia.size = function (size) { 
    cssPagedMedia('@page {size: ' + size + '}'); 
}; 

cssPagedMedia.size('landscape'); 
+1

Tôi thường chờ một vài ngày để đánh dấu một cái gì đó là chính xác, trong trường hợp bất cứ ai khác đến cùng với cái nhìn sâu sắc hơn, nhưng đây là một cách tiếp cận hợp lý, tốt mà chỉ hoạt động; cảm ơn bạn. – DNS

+0

Điều này thật tuyệt vời. – CrazyTim

Các vấn đề liên quan