这是Vutify 3.我没有使用任何定制的css,只是使用Vutify布局类.我正在创建一个MonthPicker组件.

以下是最终输出:

enter image description here

这是一个简单的v-menu,里面有v-card.卡片有两栏,用于 Select 月份和年份.左栏进一步划分为4x3布局,为期12个月(但这与手头的问题无关).

以下是规则:

  • 除了Month按钮之外,我不想在任何元素上指定height.按钮应指定左栏的高度,而右栏的高度应与左栏的高度相同.卡片本身的高度应与柱子所需的高度相同,不能超过.
  • 如果第二列(年份)的内容比可用空间高,则会出现一个溢出滚动条,如下图所示.

我这里唯一的问题是在这个设置中显式地指定了正确的列高度(比如height="197"),这是我不想要的.只要我删除Height属性,列就会展开,以占用视口中可用的空间.

我try 了许多方法,包括flex、css网格和绝对位置,但都没有效果.绝对位置行得通,但右栏开始与左栏重叠.

有没有办法让第二列的高度达到第一列所规定的高度?

以下是我的模板布局(我已经删除了不必要的内容):

  <v-card width="500">
    <v-container>
      <v-row no-gutters>
        <v-col class="pa-1">
          <v-sheet>
            <v-row no-gutters>
              <v-col cols="3" v-for="c in 12" :key="c">
                <v-btn height="60">
                  {{ months[c - 1] }}
                </v-btn>
              </v-col>
            </v-row>
          </v-sheet>
        </v-col>

        <v-col cols="auto">
          <v-sheet>
            <v-row no-gutters>
              <v-col>
                <v-list lines="one" height="197">
                  <v-list-item-group>
                    <div v-for="n in 100" :key="n">
                      {{ n + 2000 }}
                    </div>
                  </v-list-item-group>
                </v-list>
              </v-col>
            </v-row>
          </v-sheet>
        </v-col>
      </v-row>
    </v-container>
  </v-card>

推荐答案

您可以使用height:0;min-height:100%技巧,将内部容器的高度设置为0,以便它不会影响外部容器的高度,并通过设置最小高度来恢复内部高度:

.year-container{
  height: 0;
  min-height: 100%;
  overflow: auto;
}

你可以在床单上这样做.看一看这段代码:

const { createApp, ref } = Vue;
const { createVuetify } = Vuetify
const vuetify = createVuetify()
const app = {
  setup(){
    
    return {
      months: ref(['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec',])
    }
  }

}
createApp(app).use(vuetify).mount('#app')
.year-container{
  height: 0;
  min-height: 100%;
  overflow: auto;
  width: 50px;
}
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/vuetify@3/dist/vuetify.min.css" />
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<div id="app">
  <v-app>
    <v-main>
      <v-card width="500">
        <v-container>
          <v-row no-gutters>
            <v-col class="pa-1">
              <v-sheet>
                <v-row dense>
                  <v-col cols="3" v-for="c in 12" :key="c">
                    <v-btn height="60" color="orange">
                      {{ months[c - 1] }}
                    </v-btn>
                  </v-col>
                </v-row>
              </v-sheet>
            </v-col>

            <v-col cols="auto">
              <v-sheet class="year-container">
                <v-row no-gutters>
                  <v-col>
                    <v-list lines="one">
                      <v-list-item-group>
                        <div v-for="n in 100" :key="n">
                          {{ n + 2000 }}
                        </div>
                      </v-list-item-group>
                    </v-list>
                  </v-col>
                </v-row>
              </v-sheet>
            </v-col>
          </v-row>
        </v-container>
      </v-card>
    </v-main>
  </v-app>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@3/dist/vuetify.min.js"></script>

Css相关问答推荐

Angular中嵌套数组的网格

Safari CSS扫描动画效果不起作用

在NextJS/Reaction应用程序中显示更新问题

可折叠/可展开的数据表行:如何使Shadcn数据表中的可折叠内容全宽?

如何将另一种自定义位置 colored颜色 添加到三角形CSS中?

为什么CSS flex似乎应用了两次内部元素的填充?

两列网格中左列第一个文本正下方的按钮

CSS 内联 Flex 和段落换行

为什么 CSS Calc() 函数只需要+或-运算符前后有空格

如何向 Highcharts 迷你图添加具有淡入淡出效果的线性渐变?

当前的 html 标签没有发生两列布局

用户代理必须处理(或表现得好像他们这样做)每个链接就好像链接指向单独的样式表这句话是什么意思?

tailwind css 中的自定义组状态

子组件的css会影响整个页面

选中时从 HTML 文本输入中移除蓝色光晕

使用 CSS3 生成重复的六边形图案

thead 和 tbody 之间的间距

:last-child 没有按预期工作?

CSS:悬停一个元素,多个元素的效果?

html元素(div)的全高,包括边框,填充和边距?