• CSS3学习笔记-页面布局


    多栏布局的三种实现方案

    固定宽度,流动,弹性

    原则上应该控制布局宽度,而让内容决定布局高度

    固定宽度布局

    解决设置margin,padding或border后元素宽度变宽的方法

    (1)设置box-sizing属性为border-box。存在兼容性问题,可以使用腻子脚本ployfill来解决。

    <!--[if lt IE 8 ]>
    <script src="helpers/borderBoxModel.js"></script>
    <![endif]--> 

    (2)在元素宽度中减去对应的宽度

    (3)给容器内部的元素应用内边距和边框。前提是内部元素没有设定宽度。比如设置一个没有宽度的div包裹容器里的所有元素,然后再设置这个div的边距。注:如果内部容器的上下边框不可见,内部div的上下边距会叠加。

              使用子星选择符,比如section>*来设置边距,可以达到不用div包裹就能设置元素内边距和边框的效果。

              使用子星选择符的缺点:

               (1)子元素中设置边距只能用margin-top这种指定只

               (2)存在性能问题,在子元素较多的情况下

    预防过大元素,包括大图片,长url,以及包含内容过多的元素

    例如图片

    (1)可以设置最大宽度

    img{max-width:100%;}

    (2)设置父元素的overflow:hidden;

    为了避免过长的单词在撑大较窄的元素,可以设置word-wrap:break-word;

    三栏-中栏流动布局

    负外边距实现

    设置最外层的包裹层min-600px;max-1100px;

    用一个div包裹三栏,再用一个div包裹左中栏,设置包裹左中栏的右边距margin-right:-210px。设置中栏的宽度自适应,并设置中栏的右边距margin-right:210px

    应用人造栏技术,可以在视觉上让各栏的高度相同

    原理:在包裹各栏的父元素上,应用与各栏同宽的背景颜色与背景色

    表格实现

    display属性有table-row table-cell table,table-cell属性能够直接让块级元素并排显示

    直接设置display属性为table-sell,浏览器会自动补全<table>和<td>等属性

    缺点:IE7中并不支持

    多行多栏布局

    在大量标签重复的情况下,使用Id标记每个模块能够提高可读性

    注意:作为栏的元素只能设置水平方向的边距,而将垂直方向的边距设置在栏上,原因是父元素没有上下边框时,子元素的上下间距会折叠。

    弹性布局flex

    (1)设置主轴方向 flex-direction | 设置换行 flex-wrap

    (2)flex-flows是flex-direction(row | column)和 flex-wrap(nowrap)的简写

    (3)主轴对齐方式 justify-content

    (4)侧轴对齐方式 align-content 对齐伸缩行 | align-items  | align-self(设置单独的一个容器,可用来覆盖align-items的属性)注:层级关系align-content>align-items>align-self

    (5)显示顺序 order:number  未设置默认为0

    (6)flex-grow 按比率放大 | flex-shrink 按比率缩小 | flex-basis  伸缩项目主轴的起始数值

  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/goOtter/p/9657047.html
Copyright © 2020-2023  润新知