vue.jsのコンポーネントのtemplate表示タイミングについて。
商品画像一覧のようなサムネ等の画像表示にコンポーネント化してtemplate内にコードを書いているのですが
コンポーネントのtemplateのレンダリングがdomが終わったららしくて
表示されると共に、ページ全体縦幅がサムネ縦幅分、随時伸びていく感じになるのですが、
何か良い方法ありますでしょうか?
vue.jsを使わず、htmlでimg遅延ロードしている場合は
画像が表示される領域は最初からレンダリングされていて、遅延ロードでそこにただ当て込まれるため
上記のように、ページ全体縦幅がどんどん増えていくことはないです。
コンポーネントを使わずに, htmlと処理だけvueのインスタンス内 el:#app 等で処理を書けば
htmlは最初からある状態なので縦幅が増えることはないですが
コンポーネントでの何か対応があるのかを知りたいです。
環境はLaravel,blade,vue.jsです。
m2l さん
<template> <span class="lazyload thumb" v-bind:data-bg="'/storage/' + item.img" v-bind:style="{'height': height + 'px'}" ></span> </template> <script> export default { props: { item: { type: Object } }, data() { return { height: null, } }, methods: { pTop() { this.height = Math.floor((this.$el.offsetWidth / 10) * 7); } }, mounted() { this.pTop(); window.addEventListener('resize', this.pTop) }, beforeDestroy: function () { window.removeEventListener('resize', this.pTop) } } </script>
このような感じです。
レスポンシブに対応させているため、heightは随時計算させています。
htmlからは呼び出しは
<thumb-component v-bind:item="{{ $item }}" ></thumb-component>
このようにしてます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/06 05:14
2021/06/06 05:20
2021/06/06 06:10
2021/06/06 07:21
2021/06/06 08:39