布局(定位加浮动),移动端流体布局

181 阅读3分钟
position定位
    static:无特殊定位,对象遵循html定位规则
    absolute:将对象从文档流出中拖出,使用left、right、top、botton、等属性进行绝对定位,而其叠层通过z-index属性定义。此时对象不具有边距,但仍有补白和边框
    relative:对象不可层叠,但仍依据left、right、top、botton等属性在正常文档流中偏移位置
    fixed:ie5.5及ns6尚不支持此属性,固定定位方式,也会脱离文档流。通常情况下结合绝对定位和相对定位去使用(通常用在固定导航和固定侧边栏)
    在制作页面时,通常将最顶层的图层设置为z-index:999;
clear:清除浮动影响
    none:允许两边都可以有浮动对象
    both:不允许有浮动对象
    left:不允许左边有浮动对象
    right:不允许右边有浮动对象
folat:浮动
clip:auto|rect(x x x x(x代表数值))
    auto:对象无剪切
    rect:依据上右下左的顺序提供自对象左上角为(0,0)坐标计算的四个偏移数值,其中任一数值都可以用auto替换,此边不剪切

voerflow:viaible|auto|hidden|scroll
    visible:不剪切内容也不添加滚动条,假如显式声明此默认值,对象被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
    auto:此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
    hidden:不显示超过对象尺寸的内容
    scroll:总显示滚动条
脱离文档流:overflow兼容
    1、如果父级元素没有脱离文档流,子级元素脱离文档流,并且父级元素的高度或者宽度是auto,这时需要给父级元素添加overflow(脱离文档流),通常写法:auto,overflow:auto
    2、如果上面的布局脱离了文档流,下面的内容会覆盖或者跑到上面的下面或者上面,这时可以给下面的内容加上clear:both
隐藏:visibility:inherit|visible|collapse|hidden
    设置或检索是否显示对象,与display属性不同,此属性为隐藏的对象保留其占据的物理空间
    inherit:继承上一个父级对象的可见性
    visible:对象可视
    hidden:对象隐藏
    collapse:主要用来隐藏表格的行或列,隐藏的行或列能够被其他内容使用,对于表格的其他对象,其作用等同于hidden,IE5.5不支持此属性。
    与display不同点:display:none是将位置和内容全部隐藏;visibility:hidden隐藏内容,物理位置不隐藏位置
    
web常用单位:px、em、%、vh、vw、wm、rem

移动端流体布局:css中的1px并不等于设备中的1px,
    移动端注意事项:1、需要加移动端优先:
    <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
    2、单位用相对布局(块%。文字em)
    3、大于等于两列内容可以用float,但是附近元素要清除浮动,并且外面不需要content包裹
   
    ideal viewport(理想视口)并没有一个固定的尺寸,不同的设备拥有不同的ideal viewport
    
/*绝对定位使div居中对齐*/
{
        position:absolute;
        left:50%;/*按照浏览器中间位置对齐*/
        margin:-div宽度的一般;/*将div拉回原来的一半*/
}

相对定位:position:relative(子元素相对于父元素的位置,或者是相对兄弟元素的位置)
在做项目时:把每一个模块看成是一个容器,通常放在一个div里,如果是相对布局,通常每一个块级元素加上position属性

布局模式
相对浮动布局:position:relative,float
    pc端布局:保证所有的浏览器都居中对齐:
        *{
            margin:0 auto;
        }
        body{
            text-align:center
        }(在浏览器顶端居中对齐)
        
<doctype html>
<html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <style>
            *{
                margin:0 auto;
                padding:0px;
            }
            body{
                text-align:center;
            }
            .header{
                wdith:1000px;
                height:100px
                position:relative;
                background:#fff;
            }
            .nav{
                background:#ff0;
                width:1000px;
                height:100px;
                position:relative;
            }
            .contents{
                width:1000px;
                height:1000px;
                position:relative;
                background:#eee;
            }
            .contents>.left{
                width:400px;
                height:1000px;
                position:relative;
                background:#f00;
                float:left;
            }
            .contents>.right{
                width:600px;
                height:1000px;
                position:relative;
                background:#000;
                float:left;
            }
            .footer{
                width:1000px;
                height:100px;
                position:relative;
                background:#00f;
            }
        </style>
    </head>
    <body>
        <div class="header"></div>
        <div class="nav"><div>
        <div class="contents">
            <div class="left"></div>
            <div class="right"></div>
        </div>
        <div class="footer"></div>
    </body>
</html>