一、负边距在让元素产生偏移时和position: relative有什么区别?
负边距让元素产生偏移的原理是:
负边距让元素发生偏移是整个文档流发生变化,后面的元素跟着改变,覆盖之前的元素。如果对两个元素同时设置浮动,第二个元素设置负边距,如果负边距设置的值等于其自身的宽度,则该元素会上去,在第一个元素的末尾出现(同时第一个元素感知不到第二个元素上来)如果负边距设置的值等于-100%,则该元素会上去,且与第一个元素左上对齐,即 -100%为移动的距离为父容器宽度,回到起点。
position:relative元素不脱离文档流,相对于自己原来的位置定位,但是之前的文档流还在,后面的元素直接接着原来的位置排列,忽略偏移后的元素位置。
二、使用负 margin 形成三栏布局有什么条件?
1、父容器下包含三个块级元素,同时三个元素都设置浮动,父容器清除浮动
2、中间一栏设置为宽度为100%
3、左右两栏的元素都设置负边距,左边的设置margin-left:-100%;右边的设置margin-left:-自身宽度
三、圣杯布局的原理是怎样的? 简述实现圣杯布局的步骤
圣杯布局:父容器padding和清除浮动,三栏同时浮动,左右栏负边距和相对定位。
1、设置四个div,div1为父容器包括其他3个div,并设置padding和清除浮动。
2、div2,div3,div4三个层均设置浮动
3、div3,div4设置负边距
4、div3,div4设置相对定位,进行left和right的偏移
四、双飞翼布局的原理? 实现步骤?
双飞翼布局:父容器清除浮动,三栏同时浮动,左右栏负边距,中间栏再嵌套一个层 ,设置margin-left,margin-right即可
1、设置5个div,div1作为div2,div3,div4,div5的父容器,div2作为div3的父容器,div2,div4,div5作为div1的直接子元素。
2、div2,div4,div5三个元素设置浮动
3、div4/div5设置负边距
4、div3设置左右边距