学习要点:
1.定位布局
2.box-sizing
3.resize
本章主要探讨 HTML5 中 CSS 早期所使用的传统布局,很多情况下,这些布局方式还
是非常有用的。
一.定位布局
在使用定位布局前,我们先了解一下定位属性的用法。CSS2 提供了 position 属性来
实现元素的绝对定位和相对定位。
属性 说明
static 默认值,无定位。
absolute 绝对定位,使用 top、right、bottom、left
进行位移。
relative 相对定位,使用 top、right、bottom、left
进行位移。
fixed 以窗口参考定位,使用 top、right、bottom、
left 进行位移。
//绝对定位,脱离文档流,以窗口文档左上角 0,0 为起点
header {
position: absolute;
top: 100px;
left: 100px;
}
所谓脱离文档流的意思,就是本身这个元素在文档流是占位的。如果脱离了,就不占有
文档的位置,好像浮在了空中一般,有了层次感。
由于绝对定位脱离了文档流,出现层次概念。那么每个元素到底在那一层,会不会冲突
覆盖。这时通过 z-index 属性来判定它们的层次关系。
属性 说明
auto 默认层次
数字 设置层次,数字越大,层次越高
//设置在 100 层上
header {
z-index: 100;
}
//以窗口参考定位,脱离文档流,会随着滚动条滚动而滚动
header {
position: fixed;
top: 100px;
left: 100px;
}
//相对定位,不脱离文档流,占位偏移
header {
position: relative;
top: 100px;
left: 100px;
}
这三种分别都在各自的情况下使用,均比较常用。但还有一种情况,就是:1.既要脱
离文档流(这样元素之间不会相互冲突);2.以父元素,比如 body 或其他父元素为参考点
(这样可以实现区域性绝对定位);3.还必须是绝对定位。
//第一步,将需要设置参考点的父元素设置为相对,且不设置坐标
body {
position: relative;
}
//第二步,如果父元素设置了参考点,子元素的绝对定位将以它为基准
header {
position: absolute;
top: 0px;
left: 0px;
}
1.固定布局
//CSS 部分
body {
width: 960px;
margin: 0 auto;
position: relative;
}
header {
width: 960px;
height: 120px;
background-color: olive;
position: absolute;
top: 0;
left: 0;
}
aside {
width: 200px;
height: 500px;
background-color: purple;
position: absolute;
top: 120px;
left: 0;
}
section {
width: 760px;
height: 500px;
background-color: maroon;
position: absolute;
top: 120px;
/*left: 200px;*/
right: 0;
}
footer {
width: 960px;
height: 120px;
background-color: gray;
position: absolute;
top: 620px;
}
在上面,基本都用了定位来进行固定布局。但细心的可以发现,其实只有右侧需要实行
绝对定位,其他就按照普通的摆放即可。对于设计成流体布局,只要将长度设置成百分比即
可。
二.box-sizing
在盒模型那个章节,我们了解到元素盒子如果加入了内边距 padding 和边框 border 后,它的总长度会增加。那么如果这个元素用于非常精确的布局时,我们就需要进行计算增
减。这其实是比较烦人的操作,尤其是动态设置页面布局的时候。
CSS3 提供了一个属性 box-sizing,这个属性可以定义元素盒子的解析方式,从而可
以选择避免掉布局元素盒子增加内边距和边框的长度增减问题。
属性 说明
content-box 默认值,border 和 padding 设置后用于元素的总
长度。
border-box border 和 padding 设置后不用于元素的总长度。
//设置 border-box 让 border 和 padding 不在额外增加元素大小
aside {
width: 200px;
height: 500px;
background-color: purple;
padding: 10px;
border: 5px solid red;
box-sizing: border-box;
float: left;
}
box-sizing 是 CSS3 推出的,各个厂商在实现时设置了私有前缀。
Opera Firefox Chrome Safari IE
支持需带前缀 无 2 ~ 28 4 ~ 9 3.1 ~ 5 8.0+
支持不带前缀 10.1+ 29+ 10+ 6+ 9.0+
//完整形式
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
三.resize
CSS3 提供了一个 resize 属性,来更改元素尺寸大小。
属性 说明
none 默认值,不允许用户调整元素大小。
both 用户可以调节元素的宽度和高度。
horizontal 用户可以调节元素的宽度。
vertical 用户可以调节元素的高度。
一般普通元素,默认值是不允许的。但如果是表单类的 textarea 元素,默认是允许的。
而普通元素需要设置 overflow:auto,配合 resize 才会出现可拖拽的图形。
//允许修改
aside {
resize: both;
overflow:auto;
}
本文来自八宝宝投稿,不代表胡巴网立场,如若转载,请注明出处:https://www.hu85.com/52995.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxxxx@qq.com 举报,一经查实,本站将立刻删除。