间距

更新你的布局而无需创建新的类,间距助手类对于修改元素的 padding 和 margin 都非常有用。

实战场

使用 playground 来了解不同的助手类能够做些什么。 关于他们是如何工作的,请参阅下面 How it works 部分。

template script style


  1. <template>
  2. <v-container
  3. class="spacing-playground py-0 px-2"
  4. fluid
  5. >
  6. <v-row>
  7. <v-col
  8. cols="12"
  9. sm="6"
  10. class="d-flex align-center"
  11. >
  12. <v-select
  13. v-model="paddingDirection"
  14. :items="directions"
  15. label="Padding"
  16. class="pr-2"
  17. >
  18. <template v-slot:prepend>
  19. <strong class="primary--text">p</strong>
  20. </template>
  21. <template v-slot:append-outer>
  22. <div> - </div>
  23. </template>
  24. </v-select>
  25. <v-select
  26. v-model="paddingSize"
  27. :items="paddingSizes.slice(1)"
  28. label="Size"
  29. ></v-select>
  30. </v-col>
  31. <v-col
  32. cols="12"
  33. sm="6"
  34. class="d-flex"
  35. >
  36. <v-select
  37. v-model="marginDirection"
  38. :items="directions"
  39. label="Margin"
  40. class="pr-2"
  41. >
  42. <template v-slot:prepend>
  43. <strong class="primary--text">m</strong>
  44. </template>
  45. <template v-slot:append-outer>
  46. <div> - </div>
  47. </template>
  48. </v-select>
  49. <v-select
  50. v-model="marginSize"
  51. :items="marginSizes"
  52. label="Size"
  53. ></v-select>
  54. </v-col>
  55. <v-col
  56. cols="12"
  57. class="orange lighten-3 pa-0"
  58. >
  59. <v-card
  60. :class="[computedMargin]"
  61. class="elevation-4"
  62. >
  63. <div
  64. :class="[computedPadding]"
  65. class="light-green lighten-3"
  66. >
  67. <div
  68. class="white text-center"
  69. v-text="playgroundText"
  70. ></div>
  71. </div>
  72. </v-card>
  73. </v-col>
  74. </v-row>
  75. </v-container>
  76. </template>
  1. <script>
  2. export default {
  3. data: () => ({
  4. directions: ['t', 'b', 'l', 'r', 's', 'e', 'x', 'y', 'a'],
  5. paddingSizes: ['auto', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
  6. marginSizes: [
  7. 'auto',
  8. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
  9. 'n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8', 'n9', 'n10', 'n11', 'n12',
  10. ],
  11. paddingDirection: 'a',
  12. paddingSize: '2',
  13. marginDirection: 'a',
  14. marginSize: '2',
  15. playgroundText: 'Use the controls above to try out the different spacing helpers',
  16. }),
  17. computed: {
  18. computedPadding () {
  19. return `p${this.paddingDirection}-${this.paddingSize}`
  20. },
  21. computedMargin () {
  22. return `m${this.marginDirection}-${this.marginSize}`
  23. },
  24. },
  25. }
  26. </script>
  1. <style>
  2. .spacing-playground .v-select .v-input__prepend-outer, .spacing-playground .v-select .v-input__append-outer{
  3. margin-top: 0.55rem;
  4. margin-right: 0.2rem;
  5. }
  6. </style>

Spacing(间距) - 图1

如何运行

margin 或者 padding 应用于一个元素,范围在 0 到 12 之间。每个尺寸增量都设计成与常用 Material Design 间距对齐。这些类可以使用 {property}{direction}-{size} 这个格式来应用。

占位符 property 用来设置间距的类型:

  • m - 对应 margin
  • p - 对应 padding

占位符 direction 指定属性所应用到的方向:

  • t - 应用 margin-toppadding-top 的间距。
  • b - 应用 margin-bottompadding-bottom 的间距。
  • l - 适用 margin-leftpadding-left 的间距。
  • r - 应用 margin-rightpadding-right 的间距。
  • s - 应用 margin-left/padding-left (LTR mode)margin-right/padding-right (RTL mode)
  • e - 应用 margin-right/padding-right (LTR model)margin-left/padding-left (RTL model)
  • x - 同时对应*-left*-right属性
  • y - 同时对应*-top*-bottom属性
  • a - 在所有方向应用该属性的间距。

size 控制在 4px 间隔中的属性增量:

  • 0 - 消除所有 margin 或者 padding 并设置为 0
  • 1 - 设置 margin 或者 padding 到 4px
  • 2 - 设置 margin 或者 padding 到 8px
  • 3 - 设置 margin 或者 padding 到 12px
  • 4 - 设置 margin 或者 padding 到 16px
  • 5 - 设置 margin 或者 padding 到 20px
  • 6 - 设置 margin 或者 padding 到 24px
  • 7 - 设置 margin 或者 padding 到 28px
  • 8 - 设置 margin 或者 padding 到 32px
  • 9 - 设置 margin 或者 padding 到 36px
  • 10 - 设置 margin 或者 padding 到 40px
  • 11 - 设置 margin 或者 padding 到 44px
  • 12 - 设置 margin 或者 padding 到 48px
  • n1 - 将负的 margin 设置到 4px
  • n2 - 将负的 margin 设置到 8px
  • n3 - 将负的 margin 设置到 12px
  • n4 - 将负的 margin 设置到 16px
  • n5 - 将负的 margin 设置到 20px
  • n6 - 将负的 margin 设置到 24px
  • n7 - 将负的 margin 设置到 28px
  • n8 - 将负的 margin 设置到 32px
  • n9 - 将负的 margin 设置到 36px
  • n10 - 将负的 margin 设置到 40px
  • n11 - 将负的 margin 设置到 44px
  • n12 - 将负的 margin 设置到 48px
  • auto - 设置边距为 auto

示例

下面是一些简单到复杂的例子。

水平布局

使用边距助手类,你可以轻松地水平居中内容。

template


  1. <template>
  2. <v-card
  3. class="mx-auto"
  4. color="white"
  5. width="200px"
  6. >
  7. <v-card-text>
  8. Centered
  9. </v-card-text>
  10. </v-card>
  11. </template>

Spacing(间距) - 图2

负边距

也可以在相同的 1 到 12 间隔内应用负边距。

template script


  1. <template>
  2. <div>
  3. <v-card
  4. class="mx-auto"
  5. height="100"
  6. max-width="200"
  7. outlined
  8. ></v-card>
  9. <v-card
  10. class="mt-n12 mx-auto"
  11. elevation="12"
  12. height="200"
  13. max-width="300"
  14. ></v-card>
  15. </div>
  16. </template>
  1. <script>
  2. export default {
  3. data: () => ({
  4. //
  5. }),
  6. }
  7. </script>

Spacing(间距) - 图3

和断点一起

Vuetify 有一个使用 Flexbox 构建的 12 格栅格系统。空格用于创建应用程序内容中的特定布局。 它由 5 个用于针对特定屏幕大小或方向的介质断点组成:xs, sm, md, lgxl。 默认分辨率定义在 Viewport Breakpoints 表中,可以通过 breakpoint service config 进行修改。

Material Design Viewport Breakpoints
DeviceCodeTypesRange
Extra smallxssmall to large handset< 600px
Smallsmsmall to medium tablet600px > < 960px
Mediummdlarge tablet to laptop960px > < 1264px
Largelgdesktop1264px > < 1904px
Extra largexl4k and ultra-wides> 1904px
* -16px on Desktop

如何运行

辅助类在给定的断点处应用 marginpadding。这些类可以使用以下格式应用。{property}{direction}-{breakpoint}-{size}。这并不适用于 xs,因为它是推断出来的;例如,ma-xs-2 等于 ma-2

示例

下面是一些简单到复杂的例子。

和断点一起

使用 mdlg 断点间距

template


  1. <template>
  2. <v-card
  3. class="pa-md-4 mx-lg-auto"
  4. color="white"
  5. width="250px"
  6. >
  7. <v-card-text>
  8. Adjust screen size to see spacing changes
  9. </v-card-text>
  10. </v-card>
  11. </template>

Spacing(间距) - 图4