当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS样式表教程:screen媒体类型的作用

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

CSS样式表教程:screen媒体类型的作用


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-09   浏览: 109 ::
收藏到网摘: n/a

CSS @media 规则非常适合于将 HTML 或 XML 文档定位为目标输出方法。目前,print 媒体的使用非常普遍,与实现单独的 “可打印版本” 相比,print 提供了更加整洁的方式来创建打印机友好的页面。screen 媒体一直未得到充分利用,原因可能是因为人们通常都认为 screen 仅仅是 “默认的呈现方式”。然而,就布局而言(尤指绝对布局),screen 媒体类型具有重要的意义,样式表规则并不关心媒体类型,因此没有涵盖这一点。

最近,我在创建某个 Ajax Web 应用程序过程中遇到了一个难以解决的问题。和创建多数 Web 应用程序一样,我需要在屏幕的固定位置创建一个界面部件。在我的程序(本技巧)中,这个部件就是横跨信息显示区域底部的工具栏。对于我的实际应用程序,这个工具栏包含了各种子部件,可以对应用程序进行配置和交互;就这篇技巧而言,我将它替换为一个静态的信息集合。这种简化不会产生 CSS 问题。

通常,将元素放入 <frame><iframe> 元素内就可解决问题。但是,使用框架不仅会损失应用程序的简单性,还降低客户机 ECMAscript 在交互期间控制 <div> 元素可视性的能力。最好的方法是对界面使用纯粹的 CSS 表示。

对于本篇技巧,我创建了一个玩具式的文件查看应用程序,它可以读取 URL 或本地文件并使用编号的行和一个类似 wc 的摘要显示读取内容。我希望浏览器显示如图 1 所示的内容。

图 1. 基于 web 的 “less -N”

为创建这种外观,我使用如下的 HTML 模板:

<html>
<head> <title>Using CSS media types</title> @CSS
</head>
<body> <div class="top"> @ITEMS </div> <div class="bottom"> @SUMMARY </div>
</body>
</html>

不要关心这种模板语言(并不存在)的细节;其意图非常明显。我尝试使用的 CSS 为:

div.bottom { background-color: lightblue; position: absolute; bottom: 0px; left: 0px; right: 0px; height: 20px;
}
div.top { background-color: white;
}
li.odd { background-color: #EAEAFF;
}
li.even { background-color: #FCFCFC;
}

 非常简单,它将产生上面所示的屏幕截图。当您希望向下滚动 <div class="top"> 中编号的行时,问题出现了:

图 2. 非 @media 式样式表的屏幕问题

解决滚动问题的方法似乎是使用 <div>fixed 而不是 absolute 布局。

div.bottom { background-color: lightblue; position: fixed; bottom: 0px; left: 0px; right: 0px; height: 20px;
}
/* ...Rest of CSS styling */

 这个细微的改动确实修复了玩具应用程序的屏幕显示问题,但是现在,同一个页面的打印版本中出现了一个令人不快的工件。为演示这个问题,我设置了一个极其短小的页面长度:

图 3. 非 @media 式样式表的打印问题

当然,我希望将各种媒体以适合其显示特征的方法显示出来,但同时仍然共享独立于媒体(某些)的可视属性。要同时实现正确地屏幕显示和打印显示,我所需做的就是使用 @media 规则创建一个稍微复杂一点的样式表:

li.odd { background-color: #EAEAFF;
}
li.even { background-color: #FCFCFC;
}
@media screen { div.bottom { background-color: lightblue; position: fixed; bottom: 0px; left: 0px; right: 0px; height: 20px; } div.top { background-color: white; }
}
@media print { div.bottom { position: absolute; top: 0px; } div.top { position: relative; top: 20pt; }
}

 可以看到,奇偶行的颜色保持不变,但是 topbottom <div> 元素的特定位置针对媒体的不同做了调整。产生如图 4 的效果:

图 4. 在使用 @media 规则的样式表中纠正打印显示

令人高兴的是,屏幕仍然保持其正确的显示状态。