0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vue.js で 親コンポーネントと同じ高さに設定する方法を考えた

Posted at

背景

Vue.js で親コンポーネントと同じ高さにする。

具体的には、height:auto(コンテンツの内容に応じて、heightが変わる。)のコンポーネントに対して、
ある特定条件を満たしている場合、透明色の色をかぶせる。と言うことが必要となりました。

height: 100% でも指定しておけば、うまくいくだろう。と思って試してみましたが、
height:100% が適用されるのは、親コンポーネントのheightが指定されている場合のみらしく、今回適用したい height:auto ` の場合には、適用できないとのこと。異なる方法で対応を検討する必要が生じました。

結論

結論として、以下の方法で対応しました。

template
<template>
  <div>
    <div :style="{height:fullHeight}" /> // 高さを指定する。
 </div>
</template>
script(typescript)

import {Vue, Component, Prop} from 'vue-property-decorator';

@Component({})
export default class Sample extends Vue {
  fullHeight:string;

  mounted() {
    this.fullHeight = this.$el.clientHeight + 'px'; // DOMから高さを取得する。
  }
}

説明

概要

Vue.js のAPIでElementを取得して、高さを取得しています。
シンプルですが、この方法を取ることで、Elementが持つ他のプロパティを取得することも可能です。

Vue.js API

注意事項

mounted で取得する

createdcomputed を使用すると、 Element(DOM) を生成する前に、Element要素にアクセスすることになるので、エラーを吐いてしまいます。

詳細は、以下サイトにて

時間があれば、調べた経緯とかも整理して、編集したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?