zblock 结构_CSS学习笔记一——盒子模型,定位,z-index

盒子模型

结构:content + padding + border + margin

基本分类标准盒子width / height = content(即width 和height只等于内容的宽高)

标准盒子模型.jpegIE盒子width / height = content + padding + border (即width 和height包括了content + padding + border)

ie盒子模型.jpeg

css3新属性 box-sizing(默认值 content-box)box-sizing: content-box相当于标准盒子

设定的width只含内容宽度,不包括padding + border

box-sizing: border-box相当于IE盒子

设定的width包括content + padding + border

使用场景*, *:before, *:after {

-moz-box-sizing: border-box;

-webkit-box-sizing: border-box;

box-sizing: border-box;

}其实是看设计师的习惯和团队的统一规范,其实两种都可以实现,就看哪种更好维护罢了

对于按照百分比布局,同时有内边距的时候使用 box-sizing: border-box会更好维护,你不需要在意改动内边距和边框会影响到盒子的宽高。

笔者一般都直接全局设置 *{box-sizing: border-box}

如需兼容ff和移动端的话最好加上前缀-moz-,-webkit-,所以格式如下

在IE8,box-sizing的值为border-box时,不能与min-width, max-width, min-height或max-height的一起使用,因为IE8对min-和max-的解析,仍是作用于content-box,不受box-sizing属性控制

关于marginmargin外边距不属于盒子模型范围内,它只占有对应的外边距位置

对于行级元素inline,margin-top和margin-bottom对于上下元素无效,margin-left和margin-right有效

对于相邻的块级元素block,margin-bottom和margin-top若都是正数,取最大值

若都是负数,取最小值

一正一负,正负相加

Position 定位

absolute

脱离文档流,相对于已定位的父元素进行移动,当某个absolute定位元素的父元素具有position:relative/absolute/fixed时,定位元素都会依据父元素而定位,而父元素没有设置position属性或者设置了默认属性,那么定位属性会依据html元素来定位

fixed

脱离文档流,不随着滚动条的移动而改变位置,相对于浏览器窗口,对于IE78需要DOCTYPE

relative

相对于自身位置移动,原位置还保留在文档流中,内容发生了移动

static

position默认值

stickycss新属性——粘性定位

被滚动超过指定的偏移值时,元素在容器内固定在指定位置,所以必须设置上下左右其中一个值(达到阈值前会相对定位,达到后变成固定定位)

不脱离文档流,仍然保留元素原本在文档流中的位置nav{  position:sticky;  top:10px; /* 阈值 */}但是兼容性非常不乐观position: -webkit-sticky;

position: sticky;挺好玩的,例如我们不再用监听scroll事件,即可实现导航栏滚动绝对定位

注意父元素不能overflow:hidden或者overflow:auto属性。

必须指定top、bottom、left、right4个值之一,否则只会处于相对定位

父元素的高度不能低于sticky元素的高度

sticky元素仅在其父元素内生效

z-index只对于absolute,relative,fixed三种定位有效

子级无论z-index为何值,都不会对父级元素层级造成影响,但是可以通过设置子元素的z-index为负数来控制顺序。网上看到一个不错的比喻:

你可以把同一层级的层叠上下文元素看做是两个不同的人,不同的人有不同的高度,你可以比较两个人的高度,但是你不能说手长身高就更高一点吧。别滥用z-index,乱设999之类的,会导致项目日后越来越难维护

作者:Eason_Wong

链接:https://www.jianshu.com/p/57e215debade

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值