zoukankan      html  css  js  c++  java
  • ie10 grid 网格布局

    目前HTML5的布局方式有很多:float,定位,弹性布局,分栏等。而在移动开发中,需要考虑到布局能够适应到不同的设备、方向和屏幕尺寸,可能还需要一些结构的更改:   

    网格布局是一种新的布局方法,该方法使你能够基于固定数量、浏览器窗口中的可用空间或二者组合划分网页主要区域的空间。

    通过将网格布局与媒体查询(@media)结合使用,可以使布局无缝地适应设备外形尺寸、方向、可用空间等因素的变化。

    先给大家看一个例子,后面有属性介绍:

    http://www.ibokanfamily.com/win8/grid/grid.html(推荐使用支持转屏的win8设备查看,如surface)

    这是写完的效果图,首先是它的结构:

    <body>
        <div id="grid">
            <!-- 结构的位置可以任意放置 -->
            <div id="nav" draggable="true">好吧,我是导航</div>
            <div id="tit">唐菜也</div>
            <div id="con">我是一些文本段落</div>
            <div id="pic">
                 <img id="mainphoto" alt="mainphoto" src="http://www.ibokanfamily.com/win8/grid/metro.jpg"/>
            </div>
        </div>
    </body>

    然后是css的内容:

    html,body{ height:100%; width:100%;-ms-touch-action: none;/*阻止默认动作,比如拖拽*/}
            #grid{ display:-ms-grid;/*定义网格布局*/
                -ms-grid-columns:200px 25px 1fr;/*定义列的数量及每列的宽度*/
                -ms-grid-rows:130px 25px 1fr 25px 200px;/*定义行的数量及每行的高度,1fr代表未分配区域撑满,详细看属性介绍*/
                border:1px solid red;
                height:100%;
            }
            #tit{ -ms-grid-column:1;/*确定该元素所在列*/
                -ms-grid-row:1;/*确定该元素所在行*/
                background:red;
            }
            #con{ -ms-grid-column:1;
                -ms-grid-row:3;
                -ms-grid-row-span:3;/*确定该元素占3行的高度*/
                background:#999;
            }
            #pic{ -ms-grid-column:3;
                -ms-grid-row-span:3;
                -ms-grid-row:1;
                -ms-grid-column-align:center;/*确定该列排列方式为居中*/
                -ms-grid-row-align:center;/*确定该行排列方式为居中*/
            }
            #nav{ -ms-grid-column:3;
                -ms-grid-row:5;
                background:green;
            }
            img { height:300px; width:500px;}

    将网格与媒体查询一起使用

    通过使用媒体查询,我们可以重新定义布局的各个方面,以便将其定制为纵向布局。要将特定于纵向布局的样式添加到样式表,应首先添加媒体查询语法:

    @media all and (orientation: portrait) {
    
        /*媒体查询,当竖屏的时候触发*/
    
    }

    媒体查询的花括号之间添加纵向布局的样式。

    网格布局的主要属性有:

    Display:-ms-grid;首先给需要网格布局元素的父级添加display样式,并将其设置为-ms-grid,创建网格元素.

    -ms-grid-column:integer(整数);

    该属性标示对象元素在网格中处于第几列。

    例:如果元素在网格中的第三列可以先找到该元素(假定id名为three)并设定样式

    #three{ -ms-grid-column:3;}

    Ps:该行编号系统是一个基于1的索引,1是默认的,也就是说,行编号不从零开始

    -ms-grid-column-align: start | end | center | stretch(拉伸);

    Start:如果对象是左对齐那么会按照从左到右的布局方式开始,如果是右对齐,则从右到左布局方式开始。(默认元素都是左对齐,加了这个样式的显示效果类似表格中的左对齐)

    End:如果是从左到右的布局对象那么就右对齐,如果是从右到左的布局对象那么就左对齐。(默认元素都是左对齐,加了这个样式的显示效果类似表格中的右对齐)

    Center:这个元素在列的居中位置。

    Stretch:拉伸,默认值,该对象被拉伸以完全填充列的宽度。

    例:如果想设定元素在列的居中位置:

    -ms-grid-column-align:center;

    -ms-grid-columns:auto | width | min-content | max-content | minmax(min, max)+none

    定义网格由几列形成,此样式的属性值可以是一个或者多个列的宽度组成,用空格隔开。

    Auto:默认值,由该列中最宽的子元素决定,相当于最小——最大的内容

    Width:每列的宽度,除了”em”,”ex”,”px”还可以使用小数指示符(“fr”表示)组成的一个整数,例:”200px 1fr 2fr”这个的意思就是第一列被分配200个像素,第二列被分配到1/3的剩余宽度,第三列被分配到2/3的剩余宽度。

    Min-content:用任何子元素的最小宽度来作为该列的宽度。

    Max-content:用任何子元素的最大宽度来作为该列的宽度。

    Minmax(min,max):最小和最大的行之间的宽度,允许为可用空间。

    Ps:此属性还支持重复的语法。如果有大量的列式相同的,重复语法可以应用到在一个更紧凑的形式的列,重复的值由括号括起来,并随后由方括号[]内的整数来表示重复多少次。

    例子:

    -ms-grid-columns:10px 250px 10px 250px 10px 25px;

    可以用:

    -ms-grid-columns:(10px 250px)[3];

    -ms-grid-column-span:整数;

    这个对象所跨越的列数;(类似表格中合并列:colspan);

    例子:如果想让对象占3列的宽度:

    -ms-grid-column-span:3;

    -ms-grid-row:整数;

    属性值:示对象元素在网格中处于第几行。

    例:如果元素在网格中的第三行可以先找到该元素(假定id名为three)并设定样式

    #three{ -ms-grid-row:3;}

    -ms-grid-row-align:start | end | center | stretch(拉伸);

    Start:设置被放在顶部的行;

    End:设置被放在底部的行;

    Center:设置垂直居中的行;

    Stretch:初始值,该对象被拉伸以完全填充行的高度。

    例子:设定元素在行的居中位置:

    -ms-grid-row-align:center;

    -ms-grid-row-span:整数;

    属性值:这个对象所跨越的行数;(类似表格中合并列:rowspan);

    例子:如果想让对象占3行的高度:

    -ms-grid-row-span:3;
  • 相关阅读:
    latex表格实现文本自动换行
    SQL like查询条件中的通配符处理
    火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
    jquery.zclip.js复制到剪切板
    EF架构~过滤导航属性等,拼接SQL字符串
    日志记录类LogHelper
    VS插件开发
    C#预处理器指令
    c++Builder 下的文件及目录操作
    C#:在catch中return,会执行finally吗?
  • 原文地址:https://www.cnblogs.com/tangcaiye/p/2854911.html
Copyright © 2011-2022 走看看