移动端页面布局中的流动布局(百分比布局)和弹性布局

简介: 移动端页面布局中的流动布局(百分比布局)和弹性布局

移动端页面布局


一、流式布局(百分比布局)

概念:流式布局是一种等比例缩放布局方式,在CSS代码中使用百分比来设置宽度,所以也称百分比自适应布局。流式布局实现方法是,将CSS固定像素宽度换算为百分比宽度。

换算格式:目标元素宽度 / 父盒子宽度 = 百分数宽度


没有流式布局

<html lang="en">
<head>
    <style>
        body > * {
          width: 980px;height: auto;margin: 0 auto;margin-top: 10px;
          border: 1px solid #000;padding: 5px;
        }
        header {height: 50px;}
        section {height: 300px;}
        footer {height: 30px;}
        section > * {height: 100%;border: 1px solid #000;float: left;}
        aside {width: 250px;}
        article {width: 700px;margin-left: 10px;}
      </style>  
</head>
<body>
    <header>header</header>
    <nav>nav</nav>
    <section>
      <aside>aside</aside>
      <article>article</article>
    </section>
    <footer>footer</footer>
  </body>
</html>


流式布局

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body > * {
          /*   自由设置 ,最先是980px*/
          width: 95%; height: auto; margin: 0 auto; margin-top: 10px;
          border: 1px solid #000; padding: 5px;
        }
        header { height: 50px; }
        section { height: 300px; }
        footer { height: 30px; }
        section > * { height: 100%; border: 1px solid #000; float: left; }
           /*目标元素宽度 / 父盒子宽度 = 百分数宽度*/
          /*   250/980=25%  */
        aside { width: 25%; }
          /*目标元素宽度 / 父盒子宽度 = 百分数宽度*/
          /*   700/980=70%  */
        article { width: 70%; margin-left: 1%; }
      </style>    
</head>
<body>
    <header>header</header>
    <nav>nav</nav>
    <section>
      <aside>aside</aside>
      <article>article</article>
    </section>
    <footer>footer</footer>
  </body>
</html>


二、弹性盒布局


使用弹性盒布局(Flexible Box)可以轻松地创建响应式网页布局,为盒状(块)模型增加了灵活性。弹性盒改进了块模型,既不使用浮动,也不会合并弹性盒容器与其内容之间的外边距。它是一种非常灵活的布局方法,就像几个小盒子放在一个大盒子里一样,相对独立,容易设置。

1.弹性盒布局常用属性(display) 属性

  • 默认值为inline,这意味着此元素会被显示为一个内联元素,在元素前后没有换行符;
  • 如果设置display的值为flex,则表示用于指定弹性盒的容器;
  • 如果设置display的值为none,则表示此元素不会被显示。


例如

<html lang="en">
<head>
    <style>
        .box {
            display: flex;
            border: 1px solid #999;
            height: 60px;
            padding: 4px;
            background: #ddd;
        }
        .box>div {
            margin: 2px;
            padding: 2px;
            border: 1px solid #999;
            background: #fff;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="a">A</div>
        <div class="b">B</div>
        <div class="c">C</div>
    </div>
</body>
</html>

2.弹性盒布局常用属性(flex-flow)

当使用flex-flow时,其值是flex-direction的值和flex-wrap的值的组合。例如,将flex-direction设为row,将flex-wrap设为nowrap等价于flex-flow:row nowrap

3.弹性盒布局常用属性(flex-direction)

flex-direction用于调整主轴的方向,可以调整为横向或者纵向。默认情况下是横向,此时横轴为主轴,纵轴为侧轴;如果改为纵向,则纵轴为主轴,横轴为侧轴,取值如表所示。

image.png


4.弹性盒布局常用属性(flex-wrap)

flex-wrap用于让弹性盒元素在必要的时候拆行(超出的自动换行)

image.png


5.弹性盒布局常用属性(justify-content)

justify-content属性能够设置子元素在主轴方向的排列方式

image.png


6.弹性盒布局常用属性(align-items)

align-items属性用于定义子元素在侧轴上的对齐方式,其取值如表所示。

image.png


7.弹性盒布局常用属性(order)

order属性用于设置子元素出现的排列顺序。数值越小,排列将会越靠前,默认为0。

.a { order: 2; }
.b { order: 3; }
.c { order: 1; }

8.弹性盒布局常用属性(flex)

flex属性是flex-grow(扩展比率)、flex-shrink(收缩比率)和flex-basis(宽度,像素值)的简写形式,能够设置子元素的伸缩性。

.a {  
  flex-grow: 1;  /* 也可以写成 flex: 1; */
}

9.弹性盒布局常用属性(align-self)

align-self属性取值有auto、flex-start、flex-end、center、baseline、stretch,每个值的意义与align-items属性的取值类似。需要注意的是,在使用弹性盒布局时,以下属性不起作用。


  1. 多列布局中的column-*属性对弹性子元素无效。
  2. float和clear对弹性子元素无效。使用float会导致display属性计算为block。
  3. vertical-align属性对弹性子元素的对齐无效。
相关文章
|
23天前
|
编解码 前端开发 UED
最常见的自适应布局方案
【4月更文挑战第2天】 最常见的自适应布局方案
27 9
|
3月前
|
编解码 前端开发
响应式设计布局要不要了解一下?
响应式设计布局要不要了解一下?
21 0
|
3月前
|
前端开发 容器
如何实现一个两栏布局,右侧自适应?三栏布局中间自适应?
要实现一个两栏布局,右侧自适应的效果,可以使用 CSS 的 Flexbox 或 Grid 布局来实现。以下是使用 Flexbox 实现的示例:
34 1
|
4月前
移动端开发—流式布局
移动端开发—流式布局
|
10月前
|
前端开发
CSS流动布局-页面自适应
CSS流动布局-页面自适应
91 0
|
10月前
|
编解码 前端开发 Android开发
移动布局基础(流式布局)
移动布局基础(流式布局)
101 0
|
10月前
|
编译器
ElementUI之基础布局及混合布局
ElementUI之基础布局及混合布局
110 0
|
10月前
|
编解码 前端开发 UED
构建自适应的用户界面:响应式设计与布局
在当今多设备和多屏幕的世界中,为用户提供一致的体验变得至关重要。响应式设计与布局是一种解决方案,它允许我们构建自适应的用户界面,以适应各种屏幕尺寸和设备类型。本文将介绍响应式设计的基本原理和最佳实践,帮助开发人员在构建用户界面时实现良好的响应性和灵活性。
142 0
|
前端开发
Flex 布局与传统布局的比较
在前端开发中,页面的布局是一个非常关键的问题。传统的布局方式,如使用浮动和定位来实现布局,虽然可以实现一定的布局效果,但是代码量较多,可维护性较差,难以实现复杂的布局需求。
159 0
|
小程序 前端开发 容器
使用flex弹性布局来为微信小程序写自适应页面
我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + position属性 + float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的[float坍塌问题](https://v3u.cn/a_id_18),另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。
使用flex弹性布局来为微信小程序写自适应页面