页面布局float与flex的区别

使用float: left

<template>
  <div>
    <el-menu
      class="el-menu-demo"
      mode="horizontal"
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b"
    >
      <el-menu-item index="1" @click="onClick('/')">csdn</el-menu-item>
      <el-menu-item index="2" @click="onClick('/')">float</el-menu-item>

      <el-menu-item index="3">
        <el-dropdown @command="onClick">
          <span class="el-dropdown-link"
            >二级菜单<i class="el-icon-arrow-down el-icon--right"></i>
          </span>
          <el-dropdown-menu slot="dropdown">
            <el-container v-for="(items, index) in menu" :key="index">
              <el-main>
                <el-dropdown-item
                  v-if="items.sortTitle"
                  v-text="items.sortTitle"
                  disabled
                  class="dropdown-sortTitle"
                ></el-dropdown-item>
                <el-dropdown-item
                  v-for="(a, aindex) in menu[index].dropdownItem"
                  :key="aindex"
                  :command="a.link"
                >
                  {{ a.title }}</el-dropdown-item
                >
              </el-main>
            </el-container>
          </el-dropdown-menu>
        </el-dropdown>
      </el-menu-item>
    </el-menu>
  </div>
</template>

<style scoped>
.el-dropdown-menu {
  width: 1250px;
  height: 800px;
  padding: 10px;
  font-size: 16px;
}

.el-dropdown-menu .el-container {
  width: 200px;
  float: left;
  border-left: 1px solid #eee;
}

.el-dropdown-link {
  color: #fff;
}

.dropdown-sortTitle {
  font-size: 1rem;
  font-weight: bold;
  margin-bottom: 10px;
  color: black;
}
</style>

二级菜单显示效果如下
在这里插入图片描述

使用display:flex

<template>
  <div>
    <el-menu
      class="el-menu-demo"
      mode="horizontal"
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b"
    >
      <el-menu-item index="1" @click="onClick('/')">csdn</el-menu-item>
      <el-menu-item index="2" @click="onClick('/')">flex</el-menu-item>

      <el-menu-item index="3">
        <el-dropdown @command="onClick">
          <span class="el-dropdown-link"
            >二级菜单<i class="el-icon-arrow-down el-icon--right"></i>
          </span>
          <el-dropdown-menu slot="dropdown">
            <el-container v-for="(items, index) in menu" :key="index">
              <el-main>
                <el-dropdown-item
                  v-if="items.sortTitle"
                  v-text="items.sortTitle"
                  disabled
                  class="dropdown-sortTitle"
                ></el-dropdown-item>
                <el-dropdown-item
                  v-for="(a, aindex) in menu[index].dropdownItem"
                  :key="aindex"
                  :command="a.link"
                >
                  {{ a.title }}</el-dropdown-item
                >
              </el-main>
            </el-container>
            <i></i><i></i><i></i><i></i><i></i><i></i>
          </el-dropdown-menu>
        </el-dropdown>
      </el-menu-item>
    </el-menu>
  </div>
</template>

<style >
* {
  margin: 0;
  padding: 0;
  /*font-size: 16px;*/
}
.el-menu.el-menu--horizontal {
  border-bottom: none;
}
.el-dropdown {
  text-align: left;
}
.el-dropdown-menu {
  width: 1250px;
  height: 800px;
  display: flex;
  flex-wrap: wrap;
}

.el-dropdown-menu > .el-container {
  width: 200px;
}
.el-dropdown-menu > i {
  width: 200px;
}

.el-dropdown-link {
  color: #fff;
}

.dropdown-sortTitle {
  font-weight: bold;
  color: black !important;
  border-bottom: 1px solid #ececec;
}
</style>

效果如下:
在这里插入图片描述

期待的是每行显示6个子级菜单,由于一共有11个,使第二行不满6个,会造成布局混乱,如何在使用flex布局时,最后一行列表左对齐呢?
参考链接

此时我们在第36行代码增加了占位符<i></i>

具体的占位数量是由最多列数的个数决定的,例如这个布局最多7列,那我们可以使用7个空白标签进行填充占位,最多10列,那我们需要使用10个空白标签。

此处我们用6个
在这里插入图片描述
并设置宽度与列表容器宽度一致,即可实现目标效果:如下图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值