明天逛知乎日常搜寻了几个对于前端面试的问题,本认为学了react之类的框架就能够放弃css,当初想想本人真是太天真了。老前辈们说过:“Css你能够不把每一个属性全都记住,然而你肯定要在你须要的时候晓得去哪里找。”不过这句话有迷惑性,我再来改一下,常见的属性你肯定要记住,不常见,不常常应用的你须要记住有这个属性,在你看到这个属性的时候,你要晓得你见过,不要一头雾水一脸懵逼。
圣杯布局有好几种办法实现,它并不是只有一种固定格局.
最常见的圣杯布局MDN官网文档,基本上就是圣杯布局的大略思路.
页面nav占据最大的宽度,而后两边固定宽度,两头内容能够依据用户应用主动缩放。
1.flex 实现
如果要用flex实现的话 须要把<nav >和footer拿进去,给两头三个内容一个独自的父容器,给父容器一个display:flex (或者有更好的办法不必拆散,然而目前我只想到了分离出来nav和footer)
咱们要求的大略思路就是,nav和footer占据用户屏幕的百分百宽度,两头内容分为三列,脑子里肯定要有一个清晰的网页轮廓。
给左右两边定宽,而后给两头内容一个flex:1,这里左右两边的宽度也能够用flex-basis示意,这里须要了解的点上flex:1这个中央,flex:number (代表着这个元素能够如何调配剩下的空间,因为左右默认值为0,我独自给center设置了1,那么代表着center将单独享有剩下的所有空间,那么就实现了咱们想要的成果。)要留神的是flex:1是flex的简写模式,它的简写值能够有三个,在这里就不过多赘述.自行查阅mdn。
2.负margin 加浮动(这个太经典了,倡议熟读百遍)
同样是这样的布局模式;
通过下面简略的款式布局,呈现出页面成果如下(左右两边的空白是content的padding,筹备放入left和right 的div的,通常状况padding的值就是左右两边sider的宽度,个别是固定宽度,你也能够设置margin来等效替换padding,失去的布局成果是一样的)
这时候咱们须要用到浮动来将咱们的左右元素挪动到相应的地位,
这里为什么要margin-100%呢?你能够设想原本这三个元素应该是在同一行的,然而因为center盒子宽度满了,强行把left和right挤到下一行了,然而其实他们应该排在center盒子的最左边,因为div盒子是center left right这个上下文程序在html文档里写,\
咱们给右边盒子一个-margin,留神margin是绝对于父亲元素来说的,我的-100%,也就是紧挨着父亲元素的最右边,此时left盒子和center盒子的右边重合。这时候我须要右边盒子再往左挪动300px,也就是父亲盒子为它空进来的宽度。
!!!!留神float是沿容器,容器,容器,并没有脱离父元素的限度!!!
(到这你应该也就晓得下一步要干什么了,对,咱们要让他脱离父亲元素的限度)
ok,第一工夫就应该想到应用position这个办法,那么positon的relative是最合适的,(如果你想达成用户滑动屏幕,左右栏固定的成果也能够用absolute。absolute的定位形式会去找上一层非static模式的盒子,始终找到浏览器窗口为止。)那么该左边盒子紧挨着center了(肯定要留神这里的意思,原本左边盒子也是和center盒子紧挨着在同一行的)这时候给了一个负的本身的宽度,那么他就会向右边挪动,覆盖住center200px也就是本身宽度的值 ,然而这时候它还是没有解脱父元素的限度,所以也要用定位,让他向右偏移本身宽度的长度
最终全副css代码和后果如下
3.双飞翼布局(广购平台页面经典布局)
圣杯布局和双飞翼布局实现的款式是大抵基本相同的,只不过双飞翼布局的内容区用独自的div包裹,让这个div来承当浮动的角色。