代码之家  ›  专栏  ›  技术社区  ›  Bill

Vuetify-右对齐v-btn

  •  0
  • Bill  · 技术社区  · 2 年前

    如何使v-btn与右侧对齐?我的 class="align-end" 不是在切割它。

    enter image description here

    Vuetify Sandbox here

    <template>
      <div>
        <v-list>
          <v-list-subheader>General</v-list-subheader>
          <div v-for="task in sortedTasks" :key="task.id">
            <v-list-item
              @click="doneTask(task.id)"
              :class="{ 'bg-color' : task.done }"
            >
              <template v-slot:prepend="{ isActive }">
                <v-list-item-action>
                  <v-checkbox-btn :model-value="task.done"></v-checkbox-btn>
                </v-list-item-action>
                <v-list-item-title :class="{ 'task-complete' : task.done }">{{ task.title }}</v-list-item-title>
    
                <v-list-item-action class="align-end">
                  <v-btn
                  @click.stop="deleteTask(task.id)"
                    icon flat>
                    <v-icon color="primary lighten-1">mdi-delete</v-icon>
                  </v-btn>
                </v-list-item-action>
              </template>
            </v-list-item>
            <v-divider></v-divider>
          </div>
        </v-list>
      </div>
    </template>
    
    <script setup>
    import { ref, computed } from 'vue';
    
    const tasks = ref([
      { id: 1, title: "Wake up", done: false },
      { id: 2, title: "Eat Banana", done: true },
      { id: 3, title: "Work", done: false },
      { id: 4, title: "Sleep", done: true },
    ]);
    
    const doneTask = (id) => {
      const task = tasks.value.filter((task) => task.id === id)[0];
      if (task) {
        task.done = !task.done;
        //console.log("id: ", task.id); console.log("done: ", task.done);
      }
    };
    
    const deleteTask = (id) => {
      tasks.value = tasks.value.filter((task) => task.id !== id);
    };
    
    const sortedTasks = computed(() => {
      return [...tasks.value].sort((a, b) => (a.done === b.done) ? 0 : a.done ? 1 : -1);
    });
    </script>
    
    <style>
    .bg-color {
      background-color:rgb(224, 224, 232);
    }
    .task-complete {
      text-decoration: line-through;
    }
    .align-end {
      align-self: flex-end;
    }
    </style>
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   yoduh    2 年前

    预留槽用于添加项目 之前 输入内容。如果要添加项目,请使用附加槽 之后 。从技术上讲,实际的输入内容不应该在任何一个插槽中。

    <v-list-item
      @click="doneTask(task.id)"
      :class="{ 'bg-color' : task.done }"
    >
      <v-list-item-title :class="{ 'task-complete' : task.done }">
        {{ task.title }}
      </v-list-item-title>
      <template v-slot:prepend="{ isActive }">
        <v-list-item-action>
          <v-checkbox-btn :model-value="task.done"></v-checkbox-btn>
        </v-list-item-action>
      </template>
      <template v-slot:append>
        <v-btn @click.stop="deleteTask(task.id)" icon flat>
          <v-icon color="primary lighten-1">mdi-delete</v-icon>
        </v-btn>
      </template>
    </v-list-item>
    

    updated sandbox

    推荐文章