# 1 flex 与 inline-flex 布局,都是弹性布局,盒状容器布局。

img

Flex 布局是什么?_w3cschool

# 2 下面一个实例来说明一下:

有一个要求,要求 item 增多的时候,不会换行,并且 container 容器也会随时 item 的数量的增多,自动的变宽,让容器去适应 item 数量。

# 2.1 以下是二种不同的效果:

  • flex

img

  • inline-flex

img

说明:

1)display:flex 的时候,不管 item 有多少个,最多显示初始一屏宽度。

2)display:inline-flex 的时候,会随 item 的个数,自动放大宽度,也就是随内容,容器会自动放宽,以便所有的 item 都在容器里。

# 3 测试代码:

<template>
  <div>
    <div class="flex-container">
      <div class="flex-item" v-for="item in flexItems" :key="item.id">
        
      </div>
    </div>
  </div>
</template>
<script lang="ts" setup>
import { onMounted, reactive } from "vue";
 
const flexItems = reactive([] as any[]);
 
onMounted(() => {
  for (let i = 1; i <= 30; i++) {
    flexItems.push({ id: i, name: `Item ${i}` });
  }
});
</script>
<style scoped>
.flex-container {
  display: inline-flex;
  flex-wrap: nowrap; /* 可选,如果你想让子项在多行显示 */
  background-color: antiquewhite;
  min-width: 100px;
}
 
.flex-item {
  margin: 5px; /* 可选,为了美观 */
  padding: 10px; /* 可选,为了美观 */
  width: 150px;
  box-sizing: border-box; /* 可选,确保内边距和边框不会导致项目溢出 */
  border: solid 1px #000;
}
</style>