发表于: 2018-06-14 16:07:39
1 544
今天完成的事情:(今天时间有限,主要在复习基础知识,加上对任务三布局想法,认识absolute。
一.absolute的基本属性
1.包裹性---absolute了的元素 会inline-block化 这点和浮动是一样的
2.破坏性---absolute了的元素 没有高度 也没有宽度(在文档流中) 而float还是有宽度的
3.寄生性---absolute了的元素 虽然脱离了文档流 但是会受relative元素的影响 比如relative元素overflow为hidden了的话 absolute了的元素也会被截断
4.认贼作父---它的父元素看上去是包裹着它的那个元素 其实是变成了离他最近的那个relative的元素 比如给它设置100%宽度 它的宽度不会是它名义上的父元素宽度 而是离他最近的relative元素的宽度。
二.absolute的理解
1.如果absolute没有left和right 那么它其实和float是近亲 它只不过会是一个高度宽度都塌陷的普通元素 ,就像处在刚被僵尸咬但还没有变身的那个阶段 但是一旦用了left和right 那么它的行为就完全被relative和left right这种属性掌控了
2.一个absolute元素 如果它的dom父元素不是relative 那么它就像成了body元素安插在它父元素中的间谍一样 只要不设置left 这种属性 它就不会暴露 依然还是在它原本文档流中的位置 依然还是可以设置margin属性 只不过别的元素看不到它
3.absolute的元素 在没有设置left 之类的属性之前 对margin-left 和 margin-top这两个属性的设置就和它没绝对定位前的所在文档流流中的设置是一样的
三.误用方面
1.可以用负外边距的特性来替换某些由绝对定位实现的demo 如轮播图(但这个对性能不好)和一些小标记
2.透明背景可用rgba实现
3.用css去实现下拉菜单 虽然不需要用js去控制dom了 但是这对结构和性能都有一定的影响 更好的做法是把这些下拉菜单放到最后加载 让absolute属于body才会有更广阔的天空
四.真正用途
//可用性隐藏
position: absolute;top: -9999em;//显隐只需要将top改为auto即可
//完全隐藏
display: none。
因为absolute在没有设置left等属性之前会保留在普通流中的位置 可以利用这个特性做一个固定在某个位置的返回顶部的按钮具体做法是用一个div 框 让这个框的宽度等于 页面主体的宽度 让后然它右对齐 在返回顶部按钮在插一个空白符 这样空白符就会在这个div的最右边 此时由于这个绝对定位的按钮会跟在空白符的后面 就实现了 这个按钮。如果要使用相对定位属性或是绝对定位属性,推荐如下组合:absolute+margin(左上角元素定位,作用于当前元素)、float+relative(右上角元素定位,作用于当前元素)和relative+absolute(右下角元素定位,直接父标签+当前定位元素)。
等高布局实现方法:
1.设置out_box 的overflow为hidden 2.设置out_box里的左栏float为left 右栏right 左栏position设置为relative 3.设置左栏中背景盒为绝对定位 宽度100% 高度9999em
原理很简单:由于绝对定位元素无高度的特性无宽度的特性,我们可以伪造一个高度足够高的绝对定位层(设置背景色,边框等属性),同时设置父标签溢出隐藏,那么其多出来的高度酒不会显示了,也就实现了看上去的等高布局效果了。
)
明天计划的事情:(一定一定要完成任务三,把PS学好!)
遇到的问题:(今天主要还是对任务三的布局没有完全弄懂,加上事情比较多,就没弄明白。)
收获:(初步了解absolute)
评论