Vue ページでよりエレガントに画像を紹介する方法

Vue ページでよりエレガントに画像を紹介する方法

Vue プロジェクトを作成するときは、さまざまな画像を使用することになりますが、画像リソースをより有効に活用するにはどうすればよいでしょうか。ここでは私がよく使う方法についてお話します。

エラーのデモンストレーション

おそらくあなたはコードにこれをよく書くでしょう

<テンプレート>
    <img :src="src">
</テンプレート>
<スクリプト>
    エクスポートデフォルト{
        データ(){
            戻る {
               ソース: require('xxx.jpg')
            }
        }
    }
</スクリプト>

webpack では、require はリソースを自動的に処理しますが、これは問題ありません。ただし、これを vue のデータに配置すると、vue はデータをトラバースして src に応答性を追加します。ただし、ほとんどの場合、この src は応答性である必要がないため、パフォーマンスの無駄が発生します。

計算により

上記のエラーを解決するには、次の解決策があります。

<テンプレート>
    <img :src="src">
</テンプレート>
<スクリプト>
   const src = require('xxx.jpg')
    エクスポートデフォルト{
        計算:{
           ソース(){
             src を返す
           }
        }
    }
</スクリプト>

コンピューティング自体にキャッシュがあり、パフォーマンスの無駄を減らすことができます。

画像が変わらない場合は直接インポートする

<テンプレート>
    <img :src="src">
</テンプレート>

または

<テンプレート>
    <div class="bg"></div>
</テンプレート>

<スタイル>
 .bg{
 背景:url("xxx.jpg")
 }
</スタイル>

画像が変更されない場合は、変数を割り当てずに直接インポートできます。

同様に、クラス名を切り替えることで画像を動的に表示することもできます。これも優れています。

<テンプレート>
    <div :class="flag ? 'bg1':'bg2'"></div>
</テンプレート>
<スクリプト>
    エクスポートデフォルト{
     データ(){
            戻る {
               フラグ: true
            }
        }
    }
</スクリプト>
<スタイル>
 .bg1{
 背景:url("xxx1.jpg")
 }
 .bg2{
 背景:url("xxx2.jpg")
 }
</スタイル>

CSS変数による画像の切り替え

これは私が今思いついたアイデアです。理論的には、CSS 変数には何でも保存できるので、画像のアドレスを保存できるのでしょうか?

<テンプレート>
    <div class="bg"></div>
</テンプレート>
<スクリプト>
    エクスポートデフォルト{
        マウントされた(){
           // 最初の方法、画像アドレスまたはbase64
           this.$el.style.setProperty('--bg',`url("http://xxx.com/1.jpg")`)
           // 2 番目のメソッド this.$el.style.setProperty('--bg',`url("${require('../assets/1.png')}")`)
           
        }
    }
</スクリプト>    
<スタイル>
 .bg{
     --bg:url('xxx.jpg');
     背景画像:--bg;
 }
</スタイル>

私の個人的なテストは成功しました。この方法も利用可能で、計算よりも優れています。結局のところ、CSS 変数を操作する方がコストが低くなります。この方法で注意すべき点は、CSS 内の画像は通常 URL で記述されるため、文字列の URL (コンテンツ) を連結する必要があることです。

CSSによる描画

これは実は余談です。画像によっては、CSS を使って描画できるものもあります。たとえば、下の画像の三角形です。Baidu で検索すると、さまざまな CSS 三角形ジェネレーターが見つかります。この種のグラフィックは、画像を導入するよりも CSS を使用して描画する方が適しています。

まとめると、vueのデータに画像を導入せず、cssを使用するようにしてください。

要約する

Vue ページでよりエレガントに画像を導入する方法に関するこの記事はこれで終わりです。Vue でよりエレガントに画像を導入する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue.js で画像パスを導入するいくつかの方法の詳細な説明
  • Vue の 3 つの画像インポート コード例
  • Vue ページに img 画像を導入する方法

<<:  CSS の子要素を親要素と高い一貫性を持たせる方法

>>:  HTMLタグと基本要素の学習のまとめ

推薦する

Vueコンポーネント間のデータ共有の詳細な説明

目次1. プロジェクト開発において、コンポーネント間の最も一般的な関係は次の 2 つのタイプに分けら...

ポータルサイト再設計のユーザーエクスペリエンス

<br />2006年10月12日のNetEaseの新ホームページの公開から、2008年...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

CSSは高度に適応したフルスクリーンを実現します

独自のデモを作成するときに、display:flex を使用して垂直方向の中央揃えを実現したいと思い...

WeChatミニプログラムは同時通訳を利用して音声認識を実装します

私は同時通訳音声認識機能を使用して、WeChatアプレットのホームページの音声検索機能を実現しました...

Linux における「!」の知られざる使用法のまとめ

序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...

Win32 MySQL 5.7.27 のインストールと設定方法のグラフィックチュートリアル

MySQL 5.7.27のインストールチュートリアルは以下のように記録され、皆さんと共有されています...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...

Prometheus を使用して、MySQL の自動増分主キーの残りの使用可能パーセンテージをカウントします。

最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...

JQueryセレクターの詳細な説明

目次基本的なセレクター:レベルセレクター:属性セレクター:フィルターセレクター:フォーム属性セレクタ...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

Dockerデータストレージの概要

この記事を読む前に、ボリューム、バインドマウント、tmpfs マウントの基本を理解しておいてください...

div+cssとウェブ標準ページの利点

div 要素は、HTML ドキュメント内のブロックレベル コンテンツの構造と背景を提供するために使用...

MySQLがOracleのnvlと同様の機能を持つことができるかどうかについての簡単な議論

isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...