??xml version="1.0" encoding="utf-8" standalone="yes"?>
首先看一D?/span>HTML?/span>CSS代码Q如代码清单4-1所C?/span>
------------------------------------------------------------------------ 代码清单 4-1 ------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>式布局</title>
<title>Document</title>
<style type="text/css">
div {
width: 90%;
height: 200px;
background: blue;
margin: 0 auto;
}
}
</style>
</head>
<body>
<div></div>
</body>
</html>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
元素的相对宽度的参照物是其父元素。代码中div元素的父元素?/span>bodyQ所?/span>CSS中对div的宽度设计ؓ90%Q是指其?/span>body元素宽度?/span>90%?br />
有必要提示一点,在?/span>HTML5漫谈-03-盒子模型》中提到q元素的width属性的默认值是content盒子的宽度,元素实际占的宽度q要加上padding?/span>border的倹{?/span>
在上面代码的基础上,?/span>div元素中增加两?/span>p元素Q如果代码清?/span>4-2所C?/span>
------------------------------------------------------------------------ 代码清单 4-2 ------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>式布局</title>
<title>Document</title>
<style type="text/css">
div {
width: 90%;
height: 200px;
background: blue;
margin: 0 auto;
}
p.no1 {
width: 60%;
height: 150px;
background: yellow;
padding-left: 10%;
float: left;
}
p.no2 {
width: 20%;
padding: 0 5%;
height: 150px;
background: red;
float: left;
}
</style>
</head>
<body>
<div>
<p class="no1">文字</p>
<p class="no2">文字</p>
</div>
</body>
</html>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
p.no1?/span>p.no2?/span>width属性值分别是60%?/span>20%Q是指相对它们父元素div?/span>width属性来说的。很重要的一ҎQ?/span>p.no01q设|了padding-left的gؓ10%Q这个g是相对于父元?/span>div?/span>width属性来说的Q所?/span>p.no1实际占用的宽度ؓ70%。同?/span>p.no2实际占有的宽度ؓ30%?br />
不管?/span>width属性,q是padding?/span>margin属性,对其q行癑ֈ比设|的时候,参照的都是父元素?/span>width属性的倹{?/span>
min-width属性?/span>max-width属?/span>
当宽度是癑ֈ比来指定Ӟ通常要设|最的宽度和最大的宽度。详见代码清?/span>4-3所C?/span>
------------------------------------------------------------------------ 代码清单 4-3 ------------------------------------------------------------------------
div {
width: 90%;
height: 200px;
background: blue;
margin: 0 auto;
max-width: 1215px;
min-width: 400px;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
div的宽度是body宽度?/span>90%Q但是最大不会超q?/span>1215pxQ最不会小?/span>400px?/span>
首先看一D?/span>HTML代码Q如代码清单3-1所C?/span>
---------------------------------------------- 代码清单 3-1 -----------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML 5 Demo</title>
</head>
<body>
<div>CSS盒子模型</div>
</body>
</html>
----------------------------------------------------------------------------------------------------------
?/span>Chrome览?#8220;开发者工?/span>”视图中可以看到示例代码中div元素的盒子模型,如图3-1所C?br />
---------------------------------------------- ?3-1 ----------------------------------------------------
----------------------------------------------------------------------------------------------------------
CZ中的
div元素除了内容之外Q蓝色部分)Q还包括padding?/span>border?/span>marginQ就像多个盒子套在一Pq也许就?#8220;盒子模型”名字的由来吧。如果打个比方的话,HTML元素?/span>CSS看来q当于一q画Q内容就是画本nQ?/span>padding相当于画周围的留白,border是画框,margin是两幅M间的距离?/span>?/span>Chrome览器下Q?/span>padding?/span>border的默认gؓ0Q?/span>margin的默认gؓ8。运行这D代码的电脑的屏q分辨率?/span>1366Q?/span>1350 x 10?/span>div内容部分的宽度,也就?/span>div元素width属性的倹{可以看得出来,HTML元素width属性的宽度默认是以“外扩”的方式呈现的?/span>
下面通过CSS对这?/span>div盒子的各个部分做讄Q如代码清单3-2所C?br />---------------------------------------------- 代码清单 3-2 -----------------------------------------------
div {
width: 200px;
padding: 10px;
border: solid 5px;
margin: 20px;
}
----------------------------------------------------------------------------------------------------------
?/span>HTML面?/span>head元素中以link方式引入CSS样式表,如代码清?/span>3-3所C:
---------------------------------------------- 代码清单 3-3 -----------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML 5 Demo</title>
<link href="3-1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>CSS盒子模型</div>
</body>
</html>
-----------------------------------------------------------------------------------------------------
讄了样式之后,q个div盒子模型的变化如?/span>3-2所C?/span>
---------------------------------------------- ?3-2 ----------------------------------------------------
----------------------------------------------------------------------------------------------------------
此时Q这?/span>div实际占有的宽度ؓ230 x 48Q即?/span>with的基上加padding?/span>border的宽度?/span>
?/span>CSS中增加一个有兛_素宽度设|的属性:box-sizingQ这个属性是用来规定width讄的是谁的宽度。修改之前的CSS代码Q增?/span>box-sizing的设|,如果代码清单3-4所C?/span>
---------------------------------------------- 代码清单 3-4 -----------------------------------------------
div {
width: 200px;
padding: 10px;
border: solid 5px;
margin: 20px;
box-sizing: border-box;
}
----------------------------------------------------------------------------------------------------------
修改后这?/span>div的盒子模型如?/span>3-3所C?br />
---------------------------------------------- ?3-3 ----------------------------------------------------
----------------------------------------------------------------------------------------------------------
box-size的D|ؓborder-box表示元素?/span>with属性是?/span>borderq个盒子的宽度,而不再是内容Q?/span>contentQ这个盒子的宽度了。此?/span>with属性的D现在“内减”Q而不是之前默认的“外扩”?/span>
box-sizing属性的D可以?/span>padding-box?/span>content-box(默认)。这个属性在式布局中特别的常用Q?/span>
HTML4中用于页面布局?/span>divQ被HTML 5中增加的一些带有语义的标签所取代。这样不但ə面l构更加清晰Q而且有利于搜索引擎解析页面。本质上来讲Q?/span>header?/span>footerq样的标{ְ是命名的div。此?/span>HTML 5更加文档l构与呈现相分离。例如, b标签?/span>HTML 4中会只是览器以_体昄其中的内容,?/span>HTML 5不再提倡这U纯_用于呈现的标签Q{而用CSS来负责呈现?/span>
HTML 5的另一大改q就是支持在览器中直接播放音频和视频文件。请注意?/span>“直接”Q这意味着不需要Q何插件。这可以看作?/span>W3C对于插g泛滥的一U反应。原生的Q?/span>nativeQ多媒体支持再结HTML的其它特性,可以大有作ؓ?/span>
?/span>HTML 5新增的元素中Q?/span>canvas可谓震撼?/span>canvas提供了一个通用的绘囑^面,开发h员可以用它完成一些通常要用Adobe Flash来完成的d。此外,因ؓcanvas必须要用?/span>JavaScriptQ从而编E成?/span>HTML文档中第一层次的事情,q是一个重大的转变?/span>
Z解决手机览|页的问题,许多|站都提供了单独的手机版本。比如,在手机浏览器地址栏输入:www.sohuc.omQ打开搜狐的主后Q再ȝ览器地址栏,上面的网址实际上是Q?/span>http://m.sohu.comQ同LQ用手机览器访问淘宝的主页Q实际访问的|址会是Q?/span>https://m.taobao.com?/span>
q种解决Ҏ下,需要用到设备检技术,最单的实现方式是应用名ؓdeviceJS的JavaScript库(http://www.devicejs.orgQ。deviceJSDevice.js 是一个可以检设备、设备方向和操作pȝ和方向等?/span>deviceJS的简单的CZQ?/span>
<script type="text/javascript" src="device.min.js"></script> <script type="text/javascript"> if (device.mobile()) { window.location = "http://m.sohu.com"; } </script>
开发可以用Chrome览器的讑֤模拟功能Q来实现Ud讑֤的测试。打开Chrome览器之后,按F12Q进?#8220;开发者工?/span>界面。单d发者工h右上角的“Toggle Device Model”按钮Q?/span>׃打开讑֤模式?/span>
q时在浏览器地址栏输入:www.sohu.com回RQ就会看到搜狐移动版的页面,而浏览器地址栏会变ؓQm.sohu.com?/span>
|站的移动版仅仅解决了手机浏览网늚问题Q远q不能适应众多上网讑֤屏幕宽度的差异,于是式布局技术应q而生。有x式布局|站的示例,可以讉KQ?/span>http://mediaqueri.esQ上面收录了各种风格的用流式布局设计的网c?/span>
式布局的本质,是在不同屏q宽度下应用不同的CSS样式Q以适应讑֤宽度或者浏览器宽度的改变。要做到q一点,有两个关键的技术,一是HTML标记的宽度和高度要用相对|二是对窗口宽度改变做出判断ƈ更换样式表?/span>
先来说第一点,|页中的HTML标记的宽度和高度Q必M用相对|癑ֈ比)Q而不能是l对倹{下面是一个简单的CZ|页Q?/span>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>式布局 - 相对宽度和高度?/span></title> <style type="text/css"> html, body { height: 100%; } div { width: 90%; height: 45%; background: blue; margin: 0 auto; } p.class1 { width: 60%; height: 70%; background: yellow; padding-left: 10%; float: left; } p.class2 { width: 20%; padding: 0 5%; height: 30%; background: red; float: left; } </style> </head> <body> <div> <p class="class1">文字内容</p> <p class="class2">文字内容</p> </div> </body> </html> |
<link rel="stylesheet" href="css/1.css" type="text/css" <link rel="stylesheet" href="css/2.css" type="text/css" <link rel="stylesheet" href="css/3.css" type="text/css" |