CSS3 为不同媒介设置样式的方法(CSS3 Media Queries)

随着智能手机、平板电脑越来越流行,许多网站都开始考虑为这些移动设备开发一套专属布局和样式。幸好 CSS3 提供了针对不同设备的查询规则,让这一目的变得非常容易实现。

<style type="text/css">
/*
	说明:CSS3 为不同媒介设置样式的方式(CSS3 Media Queries)
	来源:http://www.stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries/
	整理:CodeBit.cn [ http://www.codebit.cn ]
*/

/* 智能手机 (纵向 和 横向) ----------- */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) {
/* Styles */
}

/* 智能手机 (横向) ----------- */
@media only screen 
and (min-width : 321px) {
/* Styles */
}

/* 智能手机 (纵向) ----------- */
@media only screen 
and (max-width : 320px) {
/* Styles */
}

/* iPad 系列 (纵向 和 横向) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
/* Styles */
}

/* iPad 系列 (横向) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : landscape) {
/* Styles */
}

/* iPad 系列 (纵向) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : portrait) {
/* Styles */
}

/* 台式机 和 笔记本 ----------- */
@media only screen 
and (min-width : 1224px) {
/* Styles */
}

/* 大屏幕 ----------- */
@media only screen 
and (min-width : 1824px) {
/* Styles */
}

/* iPhone 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) {
/* Styles */
}
</style>

当然,将所有样式放在一起不是一个好主意,你可以将不同设备特定的 CSS 放到不同文件中,然后再通过 link 节点的 media 属性来加载:

<head>

<link rel="stylesheet" href="smartphone.css" 
media="only screen and (min-device-width : 320px) 
and (max-device-width : 480px)">

<link rel="stylesheet" href="smartphone-landscape.css" 
media="only screen and (min-width : 321px)">

<link rel="stylesheet" href="smartphone-portrait.css" 
media="only screen and (max-width : 320px)">

<link rel="stylesheet" href="ipad.css" 
media="only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px)">

<link rel="stylesheet" href="ipad-landscape.css" 
media="only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : landscape)">

<link rel="stylesheet" href="ipad-portrait.css" 
media="only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : portrait)">

<link rel="stylesheet" href="widescreen.css" 
media="only screen and (min-width : 1824px)">

<link rel="stylesheet" href="iphone4.css" 
media="only screen 
and (-webkit-min-device-pixel-ratio : 1.5), 
only screen and (min-device-pixel-ratio : 1.5)">

</head>

纯 CSS3 制作的页面卷曲阴影效果

虽然 CSS3 还没有完全定稿,但目前已知的一些功能足以让所有的前端开发攻城师激动不已,灵活的背景图片设置、轻松实现的阴影及边框,还有之前只能靠 Javascript 才能实现的动画效果,在 CSS3 中都能由前端攻城师自己来定义。

虽然 IE 系列浏览器对 CSS3 还不能很好的支持,但 CSS3 毕竟是趋势,所以本站会开始介绍一些 CSS3 的效果。更多精彩,敬请期待 :) 如果你有好的点子,也欢迎和网友们分享,点此了解如何发布文章

本文介绍的是使用纯 CSS3 制作的页面卷曲阴影效果,先看图和示例:

纯 CSS3 制作的页面卷曲阴影效果

纯 CSS3 制作的页面卷曲阴影效果 – 示例

<style type="text/css">
/*
	说明:纯 CSS3 制作的页面卷曲阴影效果
	来源:Matt Hamm [ http://matthamm.com/box-shadow-curl.html ]
	整理:CodeBit.cn [ http://www.codebit.cn ]
*/
ul.box {
	position: relative;
	z-index: 1; /* prevent shadows falling behind containers with backgrounds */
	overflow: hidden;
	list-style: none;
	margin: 0;
	padding: 0;
}

ul.box li {
	position: relative;
	float: left;
	width: 250px;
	height: 150px;
	padding: 0;
	border: 1px solid #efefef;
	margin: 0 30px 30px 0;
	background: #fff;
	-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
	-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
}

ul.box li:before,
ul.box li:after {
	content: '';
	z-index: -1;
	position: absolute;
	left: 10px;
	bottom: 10px;
	width: 70%;
	max-width: 300px; /* avoid rotation causing ugly appearance at large container widths */
	max-height: 100px;
	height: 55%;
	-webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	-moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	-webkit-transform: skew(-15deg) rotate(-6deg);
	-moz-transform: skew(-15deg) rotate(-6deg);
	-ms-transform: skew(-15deg) rotate(-6deg);
	-o-transform: skew(-15deg) rotate(-6deg);
	transform: skew(-15deg) rotate(-6deg);
}

ul.box li:after {
	left: auto;
	right: 10px;
	-webkit-transform: skew(15deg) rotate(6deg);
	-moz-transform: skew(15deg) rotate(6deg);
	-ms-transform: skew(15deg) rotate(6deg);
	-o-transform: skew(15deg) rotate(6deg);
	transform: skew(15deg) rotate(6deg);
}
</style>
<ul class="box">
	<li></li>
	<li></li>
	<li></li>
	<li></li>
	<li></li>
	<li></li>
</ul>

注意:如果有父节点,需要给父节点设置 position: relative; z-index: 99; 否则,阴影可能不会正常显示。