antdesign——layout

21 篇文章 1 订阅
17 篇文章 1 订阅

在这里插入图片描述

bug1

  • 当组件内容很长时:控制左侧菜单不可上下滚动
  • 当组件内容很长时:右侧正常上下滚动,且footer在最下边
  • 当组件内容很短时:内容部分撑开页面布满全屏
    在这里插入图片描述
//BasicLayout
<style lang="less" scoped>
/deep/.ant-layout {
  height: 100vh;
}
/deep/.ant-layout-content {
  min-height: auto !important;
}
</style>

bug2:菜单点击收缩

//BasicLayout加上v-model
<a-layout-sider v-model="collapsed">
   <SiderMenu />
</a-layout-sider>

代码

BasicLayout

<template>
  <div>
    <a-layout>
      <a-layout-sider v-model="collapsed">
        <SiderMenu />
      </a-layout-sider>
      <a-layout>
        <a-layout-header><Header /></a-layout-header>
        <a-layout-content><router-view></router-view></a-layout-content>
        <a-layout-footer><Footer /></a-layout-footer>
      </a-layout>
    </a-layout>
  </div>
</template>

<script>
import Header from "./Header";
import Footer from "./Footer";
import SiderMenu from "./SiderMenu";
import { mapState } from "vuex";
export default {
  data() {
    return {};
  },
  computed: {
    ...mapState(["collapsed"]),
  },
  components: {
    Header,
    Footer,
    SiderMenu,
  },
  mounted() {},
  methods: {},
};
</script>
<style lang="less" scoped>
/deep/.ant-layout {
  height: 100vh;
}
/deep/.ant-layout-content {
  min-height: auto !important;
}
</style>

SiderMenu

<template>
  <div>
    <div>
      <a-button type="primary" style="margin-bottom: 16px"> LOGO </a-button>
      <a-menu
        :default-selected-keys="['1']"
        :default-open-keys="['sub1']"
        mode="inline"
        theme="dark"
        :inline-collapsed="collapsed"
      >
        <a-menu-item key="1">
          <a-icon type="pie-chart" />
          <span>Option 1</span>
        </a-menu-item>
        <a-menu-item key="2">
          <a-icon type="desktop" />
          <span>Option 2</span>
        </a-menu-item>
        <a-menu-item key="3">
          <a-icon type="inbox" />
          <span>Option 3</span>
        </a-menu-item>
        <a-sub-menu key="sub1">
          <span slot="title"
            ><a-icon type="mail" /><span>Navigation One</span></span
          >
          <a-menu-item key="5"> Option 5 </a-menu-item>
          <a-menu-item key="6"> Option 6 </a-menu-item>
          <a-menu-item key="7"> Option 7 </a-menu-item>
          <a-menu-item key="8"> Option 8 </a-menu-item>
        </a-sub-menu>
        <a-sub-menu key="sub2">
          <span slot="title"
            ><a-icon type="appstore" /><span>Navigation Two</span></span
          >
          <a-menu-item key="9"> Option 9 </a-menu-item>
          <a-menu-item key="10"> Option 10 </a-menu-item>
          <a-sub-menu key="sub3" title="Submenu">
            <a-menu-item key="11"> Option 11 </a-menu-item>
            <a-menu-item key="12"> Option 12 </a-menu-item>
          </a-sub-menu>
        </a-sub-menu>
      </a-menu>
    </div>
  </div>
</template>

<script>
import { mapState } from "vuex";
export default {
  data() {
    return {};
  },
  computed: {
    ...mapState(["collapsed"]),
  },
  mounted() {},
  methods: {},
};
</script>
<style lang="less" scoped></style>

Header

<template>
  <div>
    <a-button
      type="primary"
      style="margin-bottom: 16px"
      @click="changeCollapsed"
    >
      <a-icon :type="collapsed ? 'menu-unfold' : 'menu-fold'" />
    </a-button>
  </div>
</template>

<script>
import { mapState } from "vuex";
export default {
  data() {
    return {};
  },
  computed: {
    ...mapState(["collapsed"]),
  },
  mounted() {},
  methods: {
    changeCollapsed() {
      this.$store.commit("setCollapsed", !this.collapsed);
    },
  },
};
</script>
<style lang="less" scoped>
.trigger {
  font-size: 18px;
  line-height: 64px;
  padding: 0 24px;
  cursor: pointer;
  transition: color 0.3s;
  color: #fff;
}

.trigger:hover {
  color: #1890ff;
}
</style>

footer

<template>
  <div>footer</div>
</template>

<script>
export default {
  data() {
    return {};
  },
  mounted() {},
  methods: {},
};
</script>
<style lang="less" scoped></style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Vue Ant Design Layout布局是一种基于Vue框架和Ant Design UI组件库的布局方式。它提供了一系列的组件,如Layout、Header、Sider、Content、Footer等,可以快速搭建出具有响应式布局的页面。通过使用Vue Ant Design Layout布局,开发者可以快速构建出美观、易用、高效的Web应用程序。 ### 回答2: Vue Ant Design是一个基于Vue.js框架的UI组件库,它拥有丰富的组件和布局功能,其中包括Layout布局。 Layout是指在一个页面中,把不同的区域划分为不同的部分,每个部分拥有不同的功能和样式。Vue Ant DesignLayout组件包括Header、Sider、Content和Footer四个部分,可以通过组合它们来创建不同的布局效果。 在Vue Ant Design中,我们通常会用到的是Sider和Content两个部分,它们可以组成左右布局、上下布局和多列布局等效果。下面我们来详细介绍一下这两个部分的用法和注意事项。 1. Sider Sider是Vue Ant Design中的侧边栏组件,可以放置导航菜单、工具栏、广告等内容。我们可以通过设置collapsed属性来控制侧边栏的显示和隐藏,可以通过设置width属性来调整侧边栏的宽度。 注意事项: a. 在使用Sider时,需要注意它的高度会随着内容的变化而变化,如果不需要高度自适应可以设置height属性。 b. 在设置Sider的样式时,需要考虑到它与Content之间的距离,可以使用margin或padding来解决。 2. Content Content是Vue Ant Design中的主体内容组件,可以放置网页的主要内容。我们可以通过设置样式、布局和组件来实现不同的效果,比如滚动条、弹性布局、响应式设计等。 注意事项: a. 在使用Content时,需要考虑到它与Sider之间的距离,可以使用margin或padding来解决。 b. 在设置Content的样式时,需要注意到页面的整体风格和设计,要尽量实现美观、简洁、易用的效果。 综上所述,Vue Ant DesignLayout布局组件是非常实用、方便的,它可以帮助我们快速创建不同的页面布局,让页面变得更加美观、易用、易维护。在使用布局组件时,需要注意到样式、布局、响应式设计等方面的问题,可以参考官方文档和示例代码来实现需要的效果。 ### 回答3: Vue Ant Design是一个基于Vue的企业级UI组件库,它的布局组件非常丰富。Vue Ant Design提供了一些常见的布局方式,如Flex布局,实现了各种常见的布局需求。下面我们分别来看看这些布局方式的特点和应用场景。 1. Flex布局 Vue Ant Design提供了Flex布局,可以通过flexbox来快速布局我们的UI元素。Flex布局可以灵活地对容器内的元素进行布局,可以从一维布局变成两维布局,支持多个属性修改,使用简单方便。Flex布局常用于实现列表和卡片布局等。 2. 栅格布局 Vue Ant Design的栅格布局类似于Bootstrap的栅格布局,可以将页面划分为12个等宽的列,通过设置不同的属性来完成不同的布局需求。栅格布局可以用于实现响应式的页面布局,通过设置不同的断点,实现不同屏幕大小下的布局需求。 3. 布局容器 Vue Ant Design提供了一些常用的布局容器,如普通容器、卡片容器、折叠容器等。这些容器可以快速地构建出我们需要的布局元素,可以通过设置不同的属性来实现不同的布局需求。 4. 导航菜单 Vue Ant Design提供了一些常用的导航菜单组件,如菜单、导航栏等。这些导航菜单组件可以帮助我们快速地构建出具有良好交互性的UI界面,实现页面之间的导航和跳转。 总体来说,Vue Ant Design提供了非常丰富和实用的布局组件,可以帮助我们快速地构建出具有良好交互性和响应式的UI界面。无论是移动端还是PC端的应用,都可以通过这些组件来完成灵活的UI布局和构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小曲曲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值