2009-12-04 2 views
1

У меня есть страница с кнопкой «дружественный принтер», которая использует метод jQuery .css() для удаления некоторых фонов и границ из определенных элементов и изменения размера шрифта. Я могу установить другой метод .css(), чтобы изменить все так, как было, но есть ли простой способ вернуть все на странице в исходный CSS (кроме обновления страницы)?Вернитесь к исходному CSS CSS с помощью jQuery

+3

Почему все неудобные JavaScript? Просто используйте таблицу стилей для печати с самого начала. Затем он будет «Просто работать», когда пользователь печатает. http://www.alistapart.com/articles/goingtoprint/ – Quentin

+0

Не знал, что это существовало. Спасибо. – Matthew

+0

Я понимаю, что это правильный путь, но я все равно хотел бы знать, как делать то, что вы действительно просили через jquery. – User

ответ

6

Вы должны определить свои печати дружественных стили как правила селекторных в основном файле CSS

body.printfriendly .selector .rule 
{ 
    font-size:bigger; 
} 

И тогда вы можете добавить и удалить printfriendly класс по тегу тела, чтобы показать или скрыть правила.

Вы также можете использовать раздел @media print, чтобы объявлять правила, которые применяются только тогда, когда пользователь печатает.

@media print 
{ 
    .selector .rule 
    { 
    font-size:bigger; 
    } 
} 
+0

Действительно, это правильный путь. – Noldorin

5

Вы можете удалить все встроенные стили, делая что-то вроде

$('*[style]').removeAttr('style'); 

Это удалит все стили, заданные с помощью JQuery, но и потенциально любых других встроенных стилей, установленных в HTML. Не то, чтобы я рекомендую его.

Я понимаю, что вы, возможно, не захотите использовать лист стилей печати. Некоторые пользователи хотели бы распечатать страницу по своему усмотрению, и вы можете добавить предварительный просмотр перед фактической печатью.

Я рекомендую использовать класс .printfriendly, который можно переключить на тег body. Таким образом, вы полностью контролируете CSS и уровень представления.

+0

Хотя я согласен с другими ответами и комментариями для конкретного использования OP, этот ответ на самом деле отвечает на вопрос в названии, и поэтому я искал его. Благодарю. +1 –

0

Вы можете использовать .removeClass удалить класс, прикрепленной

.addClass('printFriendly'); 

.removeClass('printFriendly'); 
0

Почему вы не используете таблицы стилей печати, который строит на вершине вы экран таблицы стилей? Это было бы гораздо чище:

в шаблоне HTML:

<link href="/stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css" /> 
<link href="/stylesheets/print.css" media="print" rel="stylesheet" type="text/css" /> 

в вашем print.css:

@import "screen.css"; 
// overwrite disired parts of your screen.css 

Теперь вы можете добавить кнопку со следующей командой яваскрипта:

document.print(); 

, чтобы открыть браузер по умолчанию print promt.

0

Удобная кнопка для принтера - довольно старая школа. CSS 2 имеет механизм media rule.

@media print { 
    /* style sheet for print goes here */ 
}