学习笔记之自适应布局

来源:互联网 发布:关于php的网站 编辑:程序博客网 时间:2024/06/08 17:28

学习笔记之自适应布局

这个只是我学习过程中从各处找资料整理的笔记,如果有不对的或者不准确的说法还希望各路大神能帮我指正,在此谢过!

尺寸
1. 百分比 (相对于父对象)
2. auto(块级水平方向的auto,块级元素的margin border padding content宽度之和等于父元素width)
3. 包裹性(元素被设定为浮动,width变成内容的宽度,此时width:auto不管用)

浮动

* 元素脱离文档流* 使用width/height,margin/padding将元素定位

example圣杯布局

  1. left:宽度固定,高度可固定也可由内容撑开  2. right:宽度固定,高度可固定也可由内容撑开   3. center:可以自适应浏览器宽度,高度可固定也可由内容撑开

DOM

<div class="con">    <div class="center">centeer</div>    <div class="left">left</div>    <div class="right">right</div></div>

样式

<style>    body{padding:0;margin:0}    .con{        padding-left:150px;        padding-right:190px;    }    .left{        background: #E79F6D;        width:150px;        float:left;        margin-left:-100%;        position: relative;        left:-150px;    }    .center{        background: #D6D6D6;        width:100%;        float:left;    }    .right{        background: #77BBDD;        width:190px;        float:left;        margin-left:-190px;        position:relative;        right:-190px;    }</style>

左右侧栏定宽并浮动,中部内容区放最前不浮动width:100%并设置父对象内边距,让左右侧边栏浮动到上面,再将其相对定位出去

注意
子元素设置为浮动之后,父对象的高度会坍塌,需要设置父对象后的元素清除浮动,这样父对象的高度才能被浮动子元素撑起来。
撑起方法:

1. 让父对象也脱离文档流,浮动(但是这样就不能实现宽度自适应)2. 将浮动元素的边框边界拉下来,就是在后面的元素里加clear语句(clear与BFC)

example双飞翼布局

DOM

<div class="con">    <div class="center">        <div class="inner">center</div>    </div>    <div class="left">left</div>    <div class="right">right</div></div>

css样式

<style>    body{padding:0;margin:0}    .left{        background: #E79F6D;        width:150px;        float:left;        margin-left:-100%;    }    .center{        background: #D6D6D6;        width:100%;        float:left;    }    .right{        background: #77BBDD;        width:190px;        float:left;        margin-left:-190px;    }    .inner{        margin-left:150px;        margin-right:190px;    }</style>

其中:

1. html中要让center放前面,然而left要跑到center的前面,所以center必须浮动否则由于他们都是块元素会分两行2. 浮动之后要让center宽度自适应,则width:100%,在父对象中设width:auto;也就是说,让父对象宽度自适应,center只是继承con的宽度3. 对left、right使用负的margin让它们浮动到上面

总结

使用浮动进行布局时清除浮动可以用伪类after来清除;
在元素较多而且元素高度尺寸不一的情况下,单纯使用浮动只能实现上端对齐,对于适应多种设备的布局不太好用。

普通流布局

display:inline-block;

ps : inline-block元素会有4px左右的空隙,这是因为写代码时的换行符所致

解决办法:

1. 在inline-block的父元素设置样式font-size:0;letter-spacing:-4px;2. 设置inline-block的所有兄弟元素 font-size:值;letter-spacing:值px;3. 恢复正常的显示

inline-block默认是基线对齐的,而inline-block基线又跟文本基线一致,所以在内容不同的时候不能水平对齐。只需要用vertical-align显示声明一下top/bottom/middle对齐即可。

基线:

1. 无文字:容器的margin-bottom下边缘,与容器内部的元素无关;2. 有文字:最后一行文字的下边缘,和文字块(即p/h等)的margin、padding无关

问题:

为什么内联元素的层叠顺序要比浮动元素和块状元素要高?

答:浮动元素和块状元素都用作布局,但是内联元素都是内容,而网页中内容的层叠顺序一定要高,这样重要的文字图片什么的才能优先出现在屏幕上。

总结

相比浮动inline-block更加容易理解,对于元素高度不同的情况,目前浮动布局的做法都是将元素做成等高元素进行展现;但是inline-block有vertical-align属性,可以解决元素高度不同而带来的布局问题。

绝对定位

position : absolute;

单纯使用绝对定位进行自适应布局的情况很少,一般绝对定位都用在尺寸固定的元素定位上

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网上买过的东西查不到订单号怎么办 亚航的组合机票飞机延误怎么办 在微信上面对面红包被骗了钱怎么办 人欠我钱不给我怎么办 微信号被骗走然后骗了朋友钱怎么办 微信手机充值不到帐怎么办 中银香港密码器坏了怎么办 香港恒生银行的编码器丢了怎么办 淘宝拍下订单发货物流不显示怎么办 wish查到仿品审核变慢怎么办 淘宝卖家订单号错误无法修改怎么办 顺丰快递运单号微信扫描取消怎么办 买的王者荣耀号有守护平台怎么办 融e联登录密码错三次怎么办 金融e家u盾密码忘了怎么办 用工行网银转账后想取消交易怎么办 工行融e借没有密码器怎么办 工行融e借密码器丢了怎么办 工行融e联手机登录密码忘记怎么办 领导给员工抱怨工作太烦怎么办 员工抱怨忙的忙死闲的闲死怎么办 爱上骗我进传销的人该怎么办 尚赫辟谷期间吃了东西怎么办 肾结石掉在输尿管里面好痛怎么办 寄的快递快递单号找不到了怎么办 手机停机但是快递是这个号码怎么办 百世通快递卡在一个地方没动怎么办 电信无限流量20g用完了怎么办 至尊宝qq密保手机被更换怎么办 至尊宝账户密保手机被改怎么办 照片放到私密相册找不到了怎么办 出口报关报错境内货源地怎么办? 微信提现未到账交易记录删了怎么办 支付宝忘记密码就可以登陆怎么办 电脑上登陆QQ忘记密码了怎么办? 电脑被管理员限制登录微信了怎么办 快手绑定的手机号丢了登不上怎么办 快手绑定的手机号丢了登不了怎么办 苹果id有手机号不知道密码怎么办 微信号不是手机号不知道密码怎么办 手机发短信说程序发生错误怎么办