首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Vuetify中v-checkbox元素过大的问题

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

Stack Overflow用户
提问于 2019-05-10 03:26:51
回答 3查看 9.3K关注 0票数 6

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

这是我正在使用的标记::

代码语言:javascript
复制
<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>

如果我修改我的标记以模仿文档示例,如下所示:

代码语言:javascript
复制
<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>

它们甚至不能放在一行上:

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-10 09:33:40

您可以尝试在v-layout中包装v-checkboxv-text-field

代码语言:javascript
复制
   <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>
票数 5
EN

Stack Overflow用户

发布于 2020-06-03 16:54:16

代码语言:javascript
复制
<v-checkbox class="shrink mr-0 mt-0"></v-checkbox>
票数 2
EN

Stack Overflow用户

发布于 2019-05-10 09:31:15

出现在那里的空格是由于xs1列造成的,所以它是正确的。

如果你把所有元素都放在一个v-flex中,那么元素将是display:block的,所以它将在另一行中;为了避免这种情况,请将其放入v-layout中,如下面的示例所示:

https://vuetifyjs.com/en/components/selection-controls -复选框-内联文本字段

并使用类shrink仅使用其内容所需的空间(https://vuetifyjs.com/en/framework/grid#grow-and-shrink):

代码语言:javascript
复制
<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

代码语言:javascript
复制
new Vue({
  el: '#app',
  data: () => ({
    includeFiles: true,
    enabled: false
  })
})

如果你想调整大小,让它出现在xs6列上,你可以这样做:

代码语言:javascript
复制
<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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56066320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档