【问题标题】:IE11 Ignoring @page rule?IE11 忽略@page 规则?
【发布时间】:2016-01-15 02:32:25
【问题描述】:
我正在尝试在我正在打印的页面上设置页边距。在 chrome 中,它看起来很棒。 IE没那么多。我正在尝试像这样设置边距:
@media print {
@page {
margin: -0.5cm;
margin-left: -1.5cm;
margin-right: -1.5cm;
}
}
我在头中引用了这样的 css 文件:
<link rel="stylesheet" href="Content/print.css" type="text/css" media="print">
我可以通过调整边距值在 chrome 中很好地调整边距,但在 IE11 中,它似乎完全忽略了这一点......
我做错了什么?
【问题讨论】:
标签:
debugging
cross-browser
internet-explorer-11
css-paged-media
【解决方案1】:
@page 选择器不需要嵌套,因为假定为 page context:
@page 规则中的声明被称为在页面上下文中。
负边距是user-agent 特定的:
由于负边距值(在页面框或元素上)或绝对定位内容可能最终会出现在页面框之外,但此内容可能会被“剪切”——由用户代理、打印机或最终,切纸机。
此外,CSS grammar 没有定义嵌套 at 规则的行为。
作品有:
样式表
: [ CHARSET_SYM 字符串 ';' ]?
[S|CDO|CDC]* [ 导入 [ CDO S* |疾病预防控制中心* ]* ]*
[ [ 规则集 |媒体 |页] [ CDO S* |疾病预防控制中心* ]* ]*
;
进口
: IMPORT_SYM S*
[STRING|URI] S* 媒体列表? ';'小号*
;
媒体
: MEDIA_SYM S* media_list '{' S* 规则集* '}' S*
;
媒体列表
: 中 [ 逗号 S* 中]*
;
中等的
: IDENT S*
;
页
: PAGE_SYM S* 伪页面?
'{' S* 声明? [';' S* 声明? ]* '}' S*
;
伪页面
: ':' IDENT S*
;
操作员
: '/' S* | ',' S*
;
组合子
: '+' S*
| '>' S*
;
一元运算符
: '-' | '+'
;
财产
: IDENT S*
;
规则集
: 选择器 [ ',' S* 选择器 ]*
'{' S* 声明? [';' S* 声明? ]* '}' S*
;
选择器
: simple_selector [组合选择器| S+ [ 组合子?选择器]? ]?
;
简单选择器
:元素名称[哈希|班级 |属性 |伪]*
| [哈希|班级 |属性 |伪]+
;
班级
:'。'标识
;
元素名称
: 标识 | '*'
;
属性
: '[' S* IDENT S* [ [ '=' |包括 | DASHMATCH ] S*
[ 标识 |字符串] S* ]? ']'
;
伪
:':'[标识|函数 S* [标识 S*]? ')']
;
宣言
: 属性 ':' S* expr prio?
;
优先
: IMPORTANT_SYM S*
;
表达式
: 术语 [ 运算符?学期 ]*
;
学期
: 一元运算符?
[ 数字 S* |百分比 S* |长度 S* |特快专递* | EXS S* |角度 S* |
时间 S* |频率 S* ]
|字符串 S* |标识 S* | URI S* |六角色 |功能
;
功能
: 函数 S* expr ')' S*
;
/*
* 它必须对颜色有一个限制
* 有 3 或 6 个十六进制数字(即 [0-9a-fA-F])
* 之后 ”#”;例如,“#000”是可以的,但“#abcd”不是。
*/
十六进制颜色
: 哈希 S*
;