Vue3间距(Space)

news2024/11/22 6:50:05

可自定义设置以下属性:

  • 对齐方式(align),类型:‘start’|‘end’|‘center’|‘baseline’,默认 undefined
  • 间距方向(direction),类型:‘horizontal’|‘vertical’,默认: ‘horizontal’
  • 间距大小(size),数组时表示: [水平间距, 垂直间距],类型:number|number[]|‘small’|‘middle’|‘large’,默认 ‘small’
  • 是否自动换行(wrap),仅在 horizontal 时有效,类型:boolean,默认 false

效果如下图:

在这里插入图片描述

创建间距组件Space.vue

<script setup lang="ts">
import { computed } from 'vue'
interface Props {
  align?: 'start'|'end'|'center'|'baseline' // 对齐方式
  direction?: 'horizontal'|'vertical' // 间距方向
  size?: number|number[]|'small'|'middle'|'large' // 间距大小,数组时表示: [水平间距, 垂直间距]
  wrap?: boolean // 是否自动换行,仅在 horizontal 时有效
}
const props = withDefaults(defineProps<Props>(), {
  align: undefined,
  direction: 'horizontal',
  size: 'small',
  wrap: false
})
const gap = computed(() => {
  if (typeof props.size === 'number') {
    return props.size + 'px'
  }
  if (Array.isArray(props.size)) {
    return props.size[1] + 'px ' + props.size[0] + 'px '
  }
  if (['small', 'middle', 'large'].includes(props.size)) {
    const gapMap = {
      small: '8px',
      middle: '16px',
      large: '24px'
    }
    return gapMap[props.size]
  }
})
</script>
<template>
  <div class="m-space" :class="[`${direction}`, {align: align, wrap: wrap}]" :style="`gap: ${gap}; margin-bottom: -${Array.isArray(props.size) && wrap ? props.size[1] : 0}px;`">
    <slot></slot>
  </div>
</template>
<style lang="less" scoped>
.m-space {
  display: inline-flex;
  font-size: 14px;
  color: rgba(0, 0, 0, 0.88);
  transition: all .3s;
}
.horizontal {
  flex-direction: row;
}
.vertical {
  flex-direction: column;
}
.start {
  align-items: flex-start;
}
.end {
  align-items: flex-end;
}
.center {
  align-items: center;
}
.baseline {
  align-items: baseline;
}
.wrap {
  flex-wrap: wrap;
}
</style>

在要使用的页面引入

<script setup lang="ts">
import { ref } from 'vue'
import Space from './Space.vue'
const options = ref([
      {
        label: 'small',
        value: 'small'
      },
      {
        label: 'middle',
        value: 'middle',
      },
      {
        label: 'large',
        value: 'large'
      }
    ])
const size = ref('small')
</script>
<template>
  <div style="width: 500px;">
    <h1>Space 间距</h1>
    <h2 class="mt30 mb10">水平间距</h2>
    <Radio :options="options" v-model:value="size" />
    <br/><br/>
    <Space :size="size">
      <Button type="primary">Primary</Button>
      <Button>Default</Button>
      <Button type="dashed">Dashed</Button>
    </Space>
    <h2 class="mt30 mb10">垂直间距</h2>
    <Space direction="vertical">
      <Card title="Card" style="width: 300px">
        <p>Card content</p>
        <p>Card content</p>
      </Card>
      <Card title="Card" style="width: 300px">
        <p>Card content</p>
        <p>Card content</p>
      </Card>
    </Space>
    <h2 class="mt30 mb10">自动换行</h2>
    <Space :size="[8, 16]" wrap>
      <template v-for="n in 10" :key="n">
        <Button>Button</Button>
      </template>
    </Space>
  </div>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序Url Link跳转怎么获取query参数?

onLoad(options){if (options) {let value1 decodeURIComponent(options.value1)let value2 decodeURIComponent(options.value2)...调用后台接口查询数据} } 我是通过这种方式接收参数的&#xff0c;如果想验证可以通过编译器模拟&#xff1a;

阿里云使用SMC进行服务器迁移

操作文档 阿里云SMC适用于所有的可以公网访问的主机 1、资源准备 1、我们必须要要有相关AliyunSMCFullAccess的权限&#xff0c;如果操作RAM账号具有足够的权限可以自动授权 2、我们的源主机要可以公网访问&#xff0c;并且可以ssh且密码登录 2、在控制台点击迁移源 配置我们源…

Linux Ubuntu安装RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

2023年最新金融银行测试面试题分享(附解析大全)

1、网上银行转账是怎么测的&#xff0c;设计一下测试用例。 回答思路&#xff1a; 宏观上可以从质量模型&#xff08;万能公式&#xff09;来考虑&#xff0c;重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主&#xff0c;先列出转账的基本流和备选流。…

什么是服务雪崩解决思路

文章目录 1、雪崩问题2、雪崩问题的四种解决思路3、服务保护技术选型对比 1、雪崩问题 假设有一个微服务A&#xff0c;它调用了服务B、服务D&#xff0c;而某时刻服务D挂掉&#xff1a; 服务A要等待服务D的结果&#xff0c;而服务D已经不能正常响应了&#xff0c;此时服务A内部…

基于linux下的高并发服务器开发(第一章)- Makefile(3)1.12

04 / 变量 修改&#xff1a;上一小节的makefile内容 &#xff08;1&#xff09;将如下的 app:sub.o add.o mult.o div.o main.ogcc sub.o add.o div.o main.o 改成 srcsub.o add.o mult.o div.o main.otargetapp$(target):$(src)$(CC) $(src) -o $(target) 截图&#xff1a…

vue中使用Pinia和Vuex详解

最具有争议的Pinia和Vuex那个更好&#xff1f; 我们使用Vue2的时候&#xff0c;Vuex作为一个状态管理工具在组件中使用方便了很多。Vue3推出后&#xff0c;虽然相对于Vue2很多东西都变了&#xff0c;但是核心的东西还是没有变的&#xff0c;比如说状态管理、路由等等。实际上&a…

怎么修复vcruntime140_1.dll缺失,vcruntime140_1.dll丢失的解决方案

vcruntime140_1.dll是什么&#xff1f; vcruntime140_1.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它属于Microsoft Visual C Redistributable的一部分。这个文件包含了一些在运行使用了C语言编写的程序时所需的函数和资源。当系统无法找到或加载vcruntime140_1…

视频号自曝核心算法,流量获取攻略解析

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 近日&#xff0c;视频号爆出了一项重要消息&#xff1a;微信视频号竟然自爆了自己的核心算法逻辑。 这在一般平台是比较罕见的。因为一旦自曝了算法&#xff0c;就会有人根据这个算法去作弊&…

【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str

文章目录 问题情境报错及分析报错代码分析 解决方案必要的解决方法可能有用的解决方法 问题情境 本解决方案适用情境&#xff1a;在本地可以正常运行的flask项目&#xff0c;放到云服务器报错TypeError: tuple indices must be integers or slices, not str&#xff0c;即代码…

有哪些记事本app可以用来整理个人笔记?

我总是在思考一个问题&#xff0c;为什么现在越来越多的人选择使用记事本app&#xff1f;它们相比传统笔记本&#xff0c;又有什么吸引人的地方呢&#xff1f;这其实并不难理解。因为&#xff0c;记事本app不仅可以让我们及时记录重要信息&#xff0c;还能对这些信息进行系统、…

【C++技能树】String类解析与模拟实现

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我bua&#xff01; 终于放假啦&#xff0c;停更了一个月的博客也要重新拾起来了。近一个月都没怎么好好写代码&#xff0c;现在好多都看不懂了。在接下的时间里&#xff0…

京东内部 Spring Boot 全解笔记,精髓!

在使用传统的 Spring 去做 Java EE&#xff08;Java Enterprise Edition&#xff09;开发中&#xff0c;大量的 XML 文件存在于项目之中&#xff0c;导致 JavaEE 项目变得慢慢笨重起来&#xff0c;&#xff0c;繁琐的配置和整合第三方框架的配置&#xff0c;导致了开发和部署效…

Deepin/UOS 装机 手动安装 分区 注意事项

以下3个分区必须 efi 分区 boot 分区 / (根) 分区 我们下期见&#xff0c;拜拜&#xff01;

kaggle学习笔记-情感和地理空间分析

背景 秘鲁食品评论中的情绪和地理空间分析 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;致力于让计算机能够像人类一样理解文本和口语单词。 另一方面&#xff0c;地理空间分析是对图像、GPS、卫星摄影和历史数据的收集、显示和操作&#xff0c;这些数据以地理坐标明…

TensorFlow模块简介

TensorFLow框架内构建了很多高层次的API&#xff0c;可以显著减少编写程序的代码量&#xff0c;其中包含众多网络结构相关函数和数据载入、数据处理的方法。 tf.data.Dataset tf.data.Dataset是TensorFlow内置的数据输入模块&#xff0c;提供了专门用于数据输入的多种方法&am…

Android Vector(矢量图)介绍

Android Vector(矢量图)介绍 1、vector的宽高属性 <vector xmlns:android"http://schemas.android.com/apk/res/android"android:width"24dp"android:height"24dp"android:viewportWidth"24"android:viewportHeight"24"…

控制台警告:alue of key ‘route.角色管理‘ is not a string!

控制台警告&#xff1a;Value of key route.角色管理 is not a string! 具体情况如下图所示&#xff1a; 解决办法&#xff1a; 先找到要修改的配置文件&#xff0c;先在src文件下&#xff0c;locale文件中找index.js。 如果src下没有locale文件可以找lang文件下的index.js文…

DAY46:动态规划(八)01背包应用2:一和零(二维容量01背包)

文章目录 474.一和零思路为什么不是多重背包而是01背包与之前01背包问题的区别 DP数组的含义递推公式&#xff08;也是求最大值&#xff09;初始化遍历顺序完整版总结 474.一和零 本题属于 装满背包最多能有多少个物品 类型本题是容量有两个维度的背包&#xff0c;背包容量是m…

【数据结构】树与二叉树(上)

目录 前言&#xff1a; 一、树&#xff1a; 1.树的概念&#xff1a; 2.树的相关概念&#xff1a; 3.树的表示&#xff1a; 4.书的实际使用场景&#xff1a; 二、二叉树&#xff1a; 1.二叉树的概念&#xff1a; 2.两种特殊二叉树&#xff1a; ①.满二叉树&#xff1a;…