HTML和CSS学习笔记第11章——布局和排版

返回主目录

浏览器从HTML文件最上面开始,从上到下逐个显示遇到的元素。在元素之中会从左上方流向右下方。这就是流。

我们以盒模式的角度去看两个元素,当它们并排时,它们的距离等于边界之和,而当他们上下放置时,它们之间有所折叠,它们的距离等于双方边界的最大值。

浮动布局

如何浮动元素

  1. 首先指定一个具备id的元素
  2. 对该元素指定一个宽度。所有的浮动元素都必须具有宽度。
  3. 设置float属性,可以left或right。
#amazing{
	width:200px;
	float:right;
}

需要注意的是,浮动元素是将该元素从流中抽出,剩下的元素继续按着流的规则进行排列。浮动元素将会浮动在接下来的块元素上面,换言之,浮动元素叠在了接下来的流的元素上面。但块元素中的内联元素会绕开该浮动元素,不会被叠在下面。

浮动后的排版

假如说,你现在有了一个在右侧浮动的侧边栏,那么可能会出现下面的情况:
在这里插入图片描述
如何使两栏看起来更加独立呢?
答案是利用浮动元素的叠加效应,将非浮动元素的右边界叠扩展,使其叠在浮动元素下面,这样边框就会自动地约束文本的范围。
在上例中,我们首先需要查找右边框的宽度。

#sidebar {
  background:       #efe5d0 url(images/background.gif) bottom right;
  font-size:        105%;
  padding:          15px;
  margin:           0px 10px 10px 10px;

  width:280px;
  float: right;
}

从上可知,右边框区域的总长度为280+(15+10)*2=330px

于是,可以设置左边的主体部分有边界为330px

#main {
  background:       #efe5d0 url(images/background.gif) top left;
  font-size:        105%;
  padding:          15px;
  margin:           0px 330px 10px 10px;
}

如此效果便可得到下面的情况,中间的间隔出版业把这称为“中缝”:在这里插入图片描述
注意:你可能会因为上面讲的流的并排显示边界问题对中缝的px值有所困扰,但注意,一旦一个元素具有浮动属性,它就不属于流了,所以其实没有冲突。

不允许浮动元素出现在旁边

使用css属性clear来提出请求:当元素流入页面时,在这个元素左边、右边或两边不允许有浮动内容。

clear: right;		/*不允许右边出现浮动内容*/

浮动边栏的缺点

当我用手机上查看该页面时可能会使边栏在主内容之上。或许我们可以将主内容浮动,但其实两种办法有好有坏。那有没有办法能同时得到两方面的好处呢?既让边栏有固定的宽度,而且主内容仍然是HTML第一个元素?

冻结布局

  1. 首先增加一个<div>元素,id设为“allcontent”,然后将页面所有除了标题的内容包含进去。
  2. 之后将allcontent中的所有元素和内容的大小,是他们有一个固定的宽度,
#allcontent{
	width: 800px;
	padding-top:5px;
	padding-bottom:5px;
	background-color:#675c47;
}

这样就能将所框住的元素固定地显示,无论浏览器怎么调整大小,都不会改变布局的大小。但当浏览器很宽的时候也会变得奇怪。

凝胶布局

介于流体和冻结之间的设计,凝胶布局。凝胶布局会锁定页面中内容区的宽度,不过会将它们在浏览器居中。

#allcontent{
  margin-left: auto;
  margin-right: auto;
}

(指定内容区宽度为auto时,浏览器全根据需要扩展内容区。外边距为auto时,浏览器会确定正确的外边距值,并确保左和右外边距相同,所以内容全居中。)
注意:这里展示的界面依旧是在浮动元素的基础上
注意:这里展示的界面依旧是在浮动元素的基础上建立的(否则不会有左右两栏)

凝胶布局的缺点

内容不会扩展到填满整个窗口,尽管很多人不认为这是个缺点。

绝对定位

#id{
	position:absolute;
	top:				//也可以bottom:
	right:				//也可以left:
	width:
}

一个元素绝对定位时,浏览器首先将它从流中删除,然后浏览器将这个元素放在top和right指定的位置上(也可以用bottom和left)。与固定定位不同的是,这个偏移量相对的是页面。
与浮动不同的是,流中的元素完全不知道绝对定位元素,因此它们不会将内联内容绕开一个绝对定位元素周围。

如果对一个元素使用css绝对定位、相对定位、固定定位,则它具备z-index属性。如果有两个绝对定位元素重叠,那么会根据每个定位元素的z-index属性决定谁在上面(越大的在越上面)。而且z-index可以是负值。

position的默认值是static,如果这样元素会在正常的流中。除了static和absolute外,position还有fixed(固定定位)和relative(相对定位)。

绝对定位元素并不一定得指定width,但如果不指定,块元素会占据除了偏移量之外的整个浏览器宽度。所以建议指定width。

指定位置也可以用百分数。这样相对值就是浏览器的宽度。

绝对布局的缺点

使用绝对定位并不能去除绝对定位元素与页脚重叠的情况(因为页脚并不知道绝对定位元素的存在)

表格

对于css表格来说,每个单元格会包含一个HTML块元素。它能更好地显示两栏或三栏。

HTML结构

用HTML创建表格结构:先创建一个<div>,然后再之中创建多个<div>,相当于创建了多个行,在每行中再创建多个<div>,就创建了多个列。
例如:

<div id="tableContainer">
      <div id="tableRow">
			<div id="main">
				...
			</div>
			<div id="sidebar">
				...
			</div>
      </div>
</div>

css样式

需要让css采用表格显示

#tableContainer{
  display: table;
  border-spacing: 10px;
}
#tableRow{
  display: table-row;
}
#main{
	display: table-cell;
  padding:          15px;	//因为有border-spacing不再需要边界属性,但补白还要
  /*margin:           0px 10px 10px 10px;*/
  vertical-align: top;
}
#sidebar {
  display: table-cell;
  padding:          15px;
  /*margin:           0px 10px 10px 10px;*///不再需要边界
  vertical-align: top;
  /*width:20%*///可以使用width指定列的长度,推荐使用百分数。
}

HTML和css的表格一样吗?

不一样,它们虽然都能映射表格的行和列,但css只是用类似表格的布局来显示结构的东西,而HTML面向表格数据,也就是有表格结构的数据。

固定定位

像绝对定位一样指定希望的位置,但这个位置是距浏览器窗口边界的一个偏移量。因此,采用固定定位的元素,即使你滚动页面,它也原地不动。
偏移量允许负值。采取负值会让一部分内容不显示在浏览器中。

#coupon {
    position: fixed;
	top: 350px;
	left: -90px;
}

相对定位

采用相对定位的元素仍然处于流中。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
注意,在使用相对定位时,无论是否进行移动,元素本应占有的空间还会留着。因此,移动元素不会使其他元素的位置改变,但可能会导致移动元素覆盖其它元素。

#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

网页布局都有哪种?一般都用什么布局?—— 阿里巴巴淘系技术的回答

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XHTML 40个例子显示的内容一样,通过CSS实现不一样的布局效果, 是学习div + css排版的绝佳教程.body标签内的内容如下: Header 1) Content here. column long long column very long fill fill fill long text text column text silly very make long very fill silly make make long make text fill very long text column silly silly very column long very column filler fill long make filler long silly very long silly silly silly long filler make column filler make silly long long fill very. very make make fill silly long long filler column long make silly silly column filler fill fill very filler text fill filler column make fill make text very make make very fill fill long make very filler column very long very filler silly very make filler silly make make column column fill long make long text very make long fill column make text very silly column filler silly text fill text filler filler filler make make make make text filler fill column filler make silly make text text fill make very filler column very column text long column make silly long text filler silly very very very long filler fill very fill silly very make make filler text filler text make silly text text long fill fill make text fill long text very silly long long filler filler fill silly long make column make silly long column long make very 2) Navigation here. long long fill filler very fill column column silly filler very filler fill fill filler text fill very silly fill text filler silly silly filler fill very make fill column text column very very column fill fill very silly column silly silly fill fill long filler 3) More stuff here. very text make long silly make text very very text make long filler very make column make silly column fill silly column long make silly filler column filler silly long long column fill silly column very Here it goes the footer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值