みやざダニエルズのIT備忘録

【Vuetify】v-cardの中にv-cardを入れたときに意図したmarginにならなかったのでdivでレイアウト調整した話

By miyazaDaniels on Nov 29, 2022
日向美術館とVuetify

こんにちは。みやです。

日向美術館ではVuetityを利用してUIを作成しています。

“Vuetifyは美しく整えられたマテリアルコンポーネントを提供するVue UIライブラリです。 デザインスキルは必要ありません。素晴らしいアプリケーションを作成するために必要な全てが揃っています。“と公式サイトに書いてある通り、整ったレイアウトでアプリケーションやウェブサイトを作ってくれます。

日向美術館ではCardコンポーネントを使って作品一つを表示しています。作品のキャプションもCardコンポーネントを使って表示していて、Cardコンポーネントを入れ子にしていたところ、marginのレイアウトが崩れた?のでdivで調整しました。

環境

  • vue: 2.6.14
  • vuetify: 2.6.0

v-card in v-cardでのmarginのレイアウト崩れ

キャプションの下側のマージンが効いてないように見えてしまいました。実際にはマージンは確かに存在するのですが、親のv-cardの外側に存在してしまいました。なんででしょう。

vcard in vcard div入れる前

Card部分のソースコードは以下の通りです。

  <v-card>
    <v-img :src="url"></v-img>
    <v-card v-if="work.caption" class="ma-3 pa-2 caption"> // ma-3でマージンを指定
      <div v-if="work.title" class="mb-2">
        <p v-if="work.title" class="title">{{ work.title }}</p>
        <p v-if="work.englishTitle" class="english-title">
          {{ work.englishTitle }}
        </p>
      </div>
      <v-spacer></v-spacer>
      <p v-if="creator" class="creator">{{ creator }}</p>
      <p v-if="work.materials" class="materials">{{ work.materials[0] }}</p>
      <p v-if="work.size" class="size">{{ work.size }}</p>
      <p v-if="work.comment" class="comment">{{ work.comment }}</p>
    </v-card>
  </v-card>

v-card in v-cardでのdiv要素追加によるmarginのレイアウト崩れ解消

v-cardのマージンを下側だけ少し減らして、その分の幅をdiv要素に持たせたら見た目的には意図したようになりました。

vcard in vcard div入れた後

Card部分のソースコードは以下の通りです。

  <v-card>
    <v-img :src="url"></v-img>
    <v-card v-if="work.caption" class="mt-3 mx-3 mb-2 pa-2 caption"> // mt-3, mx-3で上と左右にマージンを指定してmb-2で下のマージンを指定
      <div v-if="work.title" class="mb-2">
        <p v-if="work.title" class="title">{{ work.title }}</p>
        <p v-if="work.englishTitle" class="english-title">
          {{ work.englishTitle }}
        </p>
      </div>
      <v-spacer></v-spacer>
      <p v-if="creator" class="creator">{{ creator }}</p>
      <p v-if="work.materials" class="materials">{{ work.materials[0] }}</p>
      <p v-if="work.size" class="size">{{ work.size }}</p>
      <p v-if="work.comment" class="comment">{{ work.comment }}</p>
    </v-card>
    <div role="spacer" v-if="work.caption" class="pb-1"></div> // pb-で下のパディングを指定
  </v-card>

なぜv-card in v-cardでmarginが意図しないようになるのか、原因が分かればよかったのですがそこまでたどり着かなかったです。 暫定的ではありますがレイアウトを整えたかっただけなので、divでレイアウトが解消できたのでそれでよしとしました。

誰か解決策をご存じの方がいたら教えていただければ幸いです。

Recent Posts
日向美術館とVuetify

【Vuetify】v-cardの中にv-cardを入れたときに意図したmarginにならなかったのでdivでレイアウト調整した話

Nov 29, 2022
v-cardの中にv-cardを入れたらmarginがはみ出てる?暫定的にdivで調整しました..
日向美術館とmicroCMS

【microCMS】日向美術館で使用しているAPIスキーマ設定方法

Nov 27, 2022
日向美術館で作成したmicroCMSのAPIスキーマの設定方法と設定した内容をご紹介します。
microCMSとVue.jsで子供の作品を展示する

microCMSとVue.jsで子供の作品を展示する

Nov 25, 2022
子供の作品を箱にしまい込むだけにせずにウェブに載せてみました。Headless CMSであるmicroCMSを使ってみたら使いやすかったです。
Webで縦書きコンテンツ〜Safariには気を付けろ!〜に助けられた話

Webで縦書きコンテンツ〜Safariには気を付けろ!〜に助けられた話

Nov 5, 2022
縦書き文字をflexboxを使って並べたときのレイアウト崩れが直りました。
OpenBD coverage

OpenBDに登録されているISBNの数の調査をしてみた

Oct 31, 2022
本の情報をオープンにしてくれているOpenBDのAPIを使ってISBNの登録数を見てみました
Lighthouseのユーザー補助を100点にする

Lighthouseのユーザー補助を100点にしたい

Oct 25, 2022
Lighthouseのユーザー補助を100点にするためにコントラストの警告を解消しました
世界の片隅で愛を叫ぶLINE Bot

世界の片隅で愛を叫ぶLINE Bot

Oct 15, 2022
AWS Lambda、API Gatewayを使ってLINE Botで愛を伝えてみました
Google Apps Scriptで勤怠管理システム風なものを作る

Google Apps Scriptで勤怠管理システム風なものを作る

Oct 14, 2022
Google Apps Scriptで勤怠管理システム風なものを作ってみました。
AstroにGoogleアナリティクス4を導入する

Googleアナリティクス4の導入

Oct 13, 2022
AstroにGoogleアナリティクス4を入れてみました。
© Copyright 2022 by みやざダニエルズのIT備忘録. Built with ♥ by CreativeDesignsGuru.