【问题标题】:How to stack a checkbox and an icon in vuetify如何在 vuetify 中堆叠复选框和图标
【发布时间】:2019-08-20 15:23:37
【问题描述】:

我想要这样的东西(+ 是复选框,- 是删除图标):

+ |‾‾‾‾‾‾|
- |______|

这是我迄今为止尝试过的:

<!DOCTYPE html>
<html>

<head>
  <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@3.x/css/materialdesignicons.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>

<body>
  <div id="app">
    <v-app>
      <v-col cols="12" md="6" v-for="(choice, idx) in choices" :key="idx">
        <v-text-field v-model="choice.text" outlined clearable type="text">
          <template v-slot:prepend>
              <v-col>
                <v-checkbox v-model="choice.isCorrect" hide-details />
                <v-icon color="red" left>remove_circle</v-icon>
              </v-col>
            </template>
        </v-text-field>
      </v-col>
    </v-app>
  </div>

  <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>
  <script>
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() {
        return {
          choices: [{
              text: "Foo",
              isCorrect: true
            },
            {
              text: "Bar",
              isCorrect: false
            }
          ]
        }
      }
    })
  </script>
</body>

</html>

【问题讨论】:

  • 您只是希望布局让它们垂直放置在文本区域旁边,还是希望将一个堆叠在另一个之上(z-index)?无论哪种方式,您都可以将类添加到您的 vue 标记中,然后使用 CSS 将内容放在您想要的位置。
  • @Paulie_D 我已经添加了 sn-p。
  • @BryceHowitson 不,不是 z-index 堆栈。通过css实现这一目标的最佳方法是什么?我可以使用边距,但这太脏了,可能会破坏字体大小等的变化。

标签: css vue.js layout vuetify.js


【解决方案1】:

老实说,为此创建一个单独的 div 似乎比使用 prepend 插槽更好,它有一些奇怪的自定义边距,不适合此目的。我已经编辑了您的代码以达到您想要的效果 - https://codepen.io/CodingDeer/pen/LYPbPxr

我也将 sn-p 放在这里,但图标由于某种原因在这里不起作用。

<!DOCTYPE html>
<html>

<head>
  <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@3.x/css/materialdesignicons.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>

<body>
    <div id="app">
<v-app>
  <v-col cols="12" md="6" v-for="(choice, idx) in choices" :key="idx">
    <v-row>
      <div>
        <div>
          <v-checkbox 
            class="ma-0"
            v-model="choice.isCorrect" 
            hide-details />
        </div>
        <v-icon color="red">remove_circle</v-icon>
      </div>
      <v-text-field v-model="choice.text" outlined clearable type="text">
      </v-text-field>
    </v-row>
  </v-col>
</v-app>
  </div>

  <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>
  <script>
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() {
        return {
          choices: [{
              text: "Foo",
              isCorrect: true
            },
            {
              text: "Bar",
              isCorrect: false
            }
          ]
        }
      }
    })
  </script>
</body>

</html>

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 2020-05-13
    • 2021-03-07
    • 1970-01-01
    • 2019-08-25
    • 2020-01-05
    • 2019-05-12
    • 2020-08-06
    • 2021-08-19
    相关资源
    最近更新 更多