Vuetify中v-checkbox元素的大小过大问题

wz1wpwve  于 2022-12-23  发布在  Vue.js
关注(0)|答案(5)|浏览(244)

我在一个Vue应用程序中使用Vuetify,并且尝试创建一个复选框/文本字段组合(如Vuetify文档中所示)。然而,当我尝试在应用程序中实现它时,复选框元素的大小很大,因此它在复选框和文本字段之间创建了一个很大的空间:

这是我正在使用的标记:

<v-container grid-list-lg>
  <v-layout row>
    <v-flex xs1>
      <v-checkbox @change="disableText($event, 'alertBackgroundColor')"></v-checkbox>
    </v-flex>
    <v-flex xs4>
      <v-text-field
        v-bind="fields.alertBackgroundColor"
        v-model="templateModel.alertBackgroundColor"
        placeholder="#4A4A4A"
        :disabled="true"
      />
      </v-flex>
      <v-flex xs1>
        <ColorPickerButton
          v-bind:field-name="'alertBackgroundColor'"
          v-bind:init-color="templateModel.alertBackgroundColor"
          v-on:update-color="getUpdatedColor">
        </ColorPickerButton>
      </v-flex>
      <!-- Alert Text Color -->
      <v-flex xs1>
        <v-checkbox @change="disableText($event, 'alertBackgroundColor')"></v-checkbox>
      </v-flex>
      <v-flex xs4>
        <v-text-field
          v-bind="fields.alertTextColor"
          v-model="templateModel.alertTextColor"
          placeholder="#4A4A4A"
          :disabled="true"
        />
      </v-flex>
      <v-flex xs1>
        <ColorPickerButton
          v-bind:field-name="'alertTextColor'"
          v-bind:init-color="templateModel.alertTextColor"
          v-on:update-color="getUpdatedColor"
        ></ColorPickerButton>
      </v-flex>
    </v-layout>
  </v-container>

如果我修改我的标记来模仿docs的例子,像这样:

<v-container grid-list-lg>
  <v-layout row>
    <v-flex xs5>
      <v-checkbox @change="disableText($event, 'alertBackgroundColor')""></v-checkbox>
      <v-text-field
        v-bind="fields.alertBackgroundColor"
        v-model="templateModel.alertBackgroundColor"
        placeholder="#4A4A4A"
        :disabled="true"
      />
    </v-flex>
    <v-flex xs1>
      <ColorPickerButton
        v-bind:field-name="'alertBackgroundColor'"
        v-bind:init-color="templateModel.alertBackgroundColor"
        v-on:update-color="getUpdatedColor">
      </ColorPickerButton>
    </v-flex>
  </v-layout>
</v-container>

它们甚至都不符合一行:

如何让这两个元素像docs示例中那样并排放置在一起呢?问题在于元素本身的计算大小,而不是填充或边距,所以使用spacing helpers不会有什么不同。

jpfvwuh4

jpfvwuh41#

您可以尝试将v-checkboxv-text-field Package 为v-layout

<v-layout>
      <v-flex xs5>
        <v-layout>
          <v-checkbox v-model="includeFiles" hide-details class="shrink mr-2"></v-checkbox>
          <v-text-field label="Include files"></v-text-field>
        </v-layout>
      </v-flex>
      <v-flex xs1>Test</v-flex>
    </v-layout>
hs1ihplo

hs1ihplo2#

<v-checkbox class="shrink mr-0 mt-0"></v-checkbox>
093gszye

093gszye3#

此处出现的空格是由xs 1列引起的,因此是正确的。
如果你把所有的元素都放在一个v-flex里面,元素会是display:block,所以它会在另一行;为了避免这种情况,请将其放入v-layout中,如下例所示:
https://vuetifyjs.com/en/components/selection-controls-复选框-内嵌文本字段
并使用类收缩来仅使用其内容所需的空间(https://vuetifyjs.com/en/framework/grid#grow-and-shrink):

<v-layout row wrap>
  <v-checkbox v-model="includeFiles" class="shrink mr-2"></v-checkbox>
  <v-text-field label="Include files"></v-text-field>
</v-layout>

JS系统

new Vue({
  el: '#app',
  data: () => ({
    includeFiles: true,
    enabled: false
  })
})

如果你想在xs6列上使用大小,你可以这样做:

<v-layout row wrap>
      <v-flex xs6>
        <v-container fluid pa-0>
          <v-layout row wrap>
            <v-checkbox v-model="includeFiles" class="shrink mr-2"></v-checkbox>
            <v-text-field label="Include files"></v-text-field>
          </v-layout>
        <v-container>
      </v-flex>
    </v-layout>

此处为Codepen:https://codepen.io/pen/?&editable=true&editors=101

nxagd54h

nxagd54h4#

对我来说,这帮助了

<v-checkbox class="ma-1 pa-1" hide-details="true" ...
oknwwptz

oknwwptz5#

.v-input__control {
   height: 28px !important
}

相关问题