zoukankan      html  css  js  c++  java
  • flex布局应用,一种讨巧的header布局方法

    在开发移动端页面的时候,我们时常需要一个页面的header。 例如提供返回,设置菜单,或者标题显示。
    这里提供一种利用flex属性进行响应布局的方法:

    情况一,三栏布局。
    如下图:

    想法是这样的:

    示例demo:

    //vue + vant demo
    <template>
      <div class="my">
        <div class="header">
          <div class="one">
            <div class="goBack">
              <van-button type="default" to="/MainApp/">
                <van-icon name="arrow-left" size="32" />
              </van-button>
            </div>
          </div>
          <div class="two">
            <div class="info">我的信息</div>
          </div>
          <div class="three">
            <div class="setting">
              <van-button type="default" to="/MainApp/">
                <van-icon name="ellipsis" size="32" />
              </van-button>
            </div>
          </div>
        </div>
    
        <van-cell-group>
          <van-cell title="单元格" value="内容" size="large" />
          <van-cell title="单元格" value="内容" size="large" />
          <van-cell title="单元格" value="内容" size="large" />
          <van-cell title="单元格" value="内容" size="large" />
          <van-cell title="单元格" value="内容" size="large" />
          <van-cell title="路由跳转" is-link size="large" to="/MainApp/My/ConnectTheManager" />
        </van-cell-group>
      </div>
    </template>
    <script>
    export default {};
    </script>
    <style scoped>
    @import "~@/assets/css/components/MainApp/My.css";
    </style>
    
    //css
    .My {
        height: 100vh;
        background-color: aquamarine;
      }
      .header {
        justify-content: space-between;
        display: flex;
        height: 3em;
      }
      .header .one {
        display: flex;
        justify-content: flex-start;
        align-content: center;
      }
      .header .two {
        display: flex;
        justify-content: center;
        align-content: center;
      }
      .header .three {
        display: flex;
        justify-content: flex-end;
        align-content: center;
      }
      .header .one,
      .two,
      .three {
         100px;//也可以写auto
      }
      
      
      .header .one *{
        border: none;
        background: transparent;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .header .info {
        font-size: larger;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .header .three *{
        border: none;
        background: transparent;
        display: flex;
        justify-content: center;
        align-items: center;
      }
    

    情况二,两栏布局
    如下图:

    主要的思路想法是一样的。 只是不同的是,这时候只有两个实际存在的元素,这个时候。 我们需要给三个容器都指定一定的合适宽度,才能实现我们想要的效果。 代码示例如下。
    //vue + vant demo
    <template>
      <div class="ConnectTheManager">
        <div class="header">
          <!-- <router-link to="/MainApp/"> -->
          <div class="one">
            <div class="goBack">
              <van-button type="default" to="/MainApp/">
                <van-icon name="arrow-left" size="32" />
              </van-button>
            </div>
          </div>
          <!-- </router-link> -->
          <div class="two">
            <div class="info">联系管理员</div>
          </div>
          <div class="three">
            <div class="setting"></div>
          </div>
        </div>
        <van-cell-group>
          <van-cell title="单元格" value="内容" size="large" />
        </van-cell-group>
    
        <h2>电话12341234</h2>
      </div>
    </template>
    
    //css
    .ConnectTheManager {
      height: 100vh;
    }
    .header {
      justify-content: space-between;
      display: flex;
      height: 3em;
    }
    .header .one {
      display: flex;
      justify-content: flex-start;
      align-content: center;
    }
    .header .two {
      display: flex;
      justify-content: center;
      align-content: center;
    }
    .header .three {
      display: flex;
      justify-content: flex-end;
      align-content: center;
    }
    .header .one,
    .two,
    .three {
       100px;//特别注意这里。 如果不指定宽度,就无法水平三栏等距分布。
    }
    
    .header .one * {
      border: none;
      background: transparent;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .header .info {
      font-size: larger;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    

    同样的思路,四栏,五栏甚至更多,都能用这种方法实现,自适应的水平,垂直居中。

  • 相关阅读:
    根据对象中某个元素进行排序
    Bootstrap 弹出框(Popover)插件
    echarts+bmap 去掉地图左下角的logo
    get提交参数中存在空格
    long类型的转换为正常时间格式遇到的问题
    jQuery validate使用过程中遇到的问题
    问题 G: 最长公共子串问题
    1567. 乘积为正数的最长子数组长度(dp)
    C. Parsa's Humongous Tree(树形dp)
    1558. 得到目标数组的最少函数调用次数
  • 原文地址:https://www.cnblogs.com/jaycethanks/p/12686811.html
Copyright © 2011-2022 走看看