You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用column-count时内部flex布局div被拆分截断问题求解

当对嵌套了设置display: flex属性的div的容器使用column-count属性时,会出现子元素被从中间切割截断的问题。通用的修复方案是给子元素设置display: inline-block避免该问题,但修改后又会出现多个短内容子元素排布在同一行的新问题。

你可以点击下方代码片段的运行按钮,查看添加和不添加display: inline-block属性时分别出现的问题及对应说明,可点击右上角「整页查看」完整复现问题。

示例代码

JS逻辑

new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  data () {
    return {
      checkboxes: [],
      displayInlineBlock: false,
    }
  },
  methods: {
    toggleDisplayInlineBlock() {
      this.displayInlineBlock = !this.displayInlineBlock;
    },
  },
})

样式代码

.modal {
  width: 750px;
  height: 400px;
  overflow-y: scroll;
  border: 2px solid lightgrey;
}

.container {
  column-count: 3;
}

.v-input--checkbox {
  margin: 0.33em 0;
  padding: 0;
}

.container-inline > div {
  display: inline-block;
}

.btn {
  background-color: tomato;
  color: white;
  padding: 1em;
}

页面结构

<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script><link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">

<div id="app">
  <v-app>
    <p>(打开全屏预览查看问题)</p>
    <button @click="toggleDisplayInlineBlock" class="btn">
      切换显示模式 - 当前是否为inline block:{{displayInlineBlock}}
    </button>
    
        <div v-if="displayInlineBlock">
      当前已设置<code>inline-block</code>,修复了文本被截断的问题,但两个短标签元素会出现在同一行,比如上方的"testing"和"abc"复选框,"abc"应该在"testing"下方
    </div>
    <div v-else>
      当前未设置<code>inline-block</code>,行元素会被截断,比如 hover 部分复选框时会高亮下一列的复选框,长文本应该在同一列内换行
    </div>
    
    <div class="modal">
      <div class="container" :class="{'container-inline': displayInlineBlock}">
        <v-checkbox label="testing"></v-checkbox>
        <v-checkbox label="abc"></v-checkbox>
        <v-checkbox label="testing lorem ipsum"></v-checkbox>
        <v-checkbox label="testing lorem"></v-checkbox>
        <v-checkbox label="testing ip"></v-checkbox>
        <v-checkbox label="testing dorset illemet lorem"></v-checkbox>
        <v-checkbox label="testing super long label text here this is long"></v-checkbox>
      </div>
    </div>
  </v-app>
</div>

内容的提问来源于stack exchange,提问作者maxshuty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:02