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タグと基本要素の学習のまとめ

推薦する

ウェブフロントエンドエンジニアにおすすめのヒント

まず、Webフロントエンドエンジニアの価値についてお話ししましょう。現在、Web製品のインタラクショ...

VMware ESXi 5.5 の展開および構成図のプロセス

目次1. インストール要件2. OSイメージのダウンロード3. VMware Workstation...

画像カルーセルを実装するためのネイティブJS 小さな広告プラグインを実装するためのJS

最近、ネイティブ JS を使用して、さらにいくつかの小さな機能を実装したいと思っています。現在、ブロ...

MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

私のシステムとソフトウェアのバージョンは次のとおりです。システム環境: win7、64ビットMySQ...

DD DT DLタグの使用例

通常は <ul><li> タグを使用しますが、dd タグと dt タグも便利...

MAC での MYSQL5.7.17 接続失敗の問題と解決策

MYSQL5.7.17 が MAC で接続できない問題。SQLBench_community 6.3...

MySQL の group by と having の詳細な説明

GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...

Dockerイメージ送信コマンドcommitの動作原理と使い方の詳細な説明

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

MySQL curdate() 関数の詳細な例

MySQL CURDATE関数の紹介文字列コンテキストまたは数値コンテキストの YYYMMDD 形式...

コード例を通してページ置換アルゴリズムの原理を理解する

ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...

EclipseにTomcatサーバー設定を追加する方法

1. ウィンドウ -> 設定を選択してEclipseの設定パネルを開きます。 2. 「設定」ウ...

ARM64アーキテクチャでmysql5.7.22をインストールするプロセス全体

MySQLダウンロードアドレス: https://obs.cn-north-4.myhuaweicl...

Apple 電卓の JS 実装

この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...

ウェブデザインでよくある間違いのまとめ

Web ページを設計する過程で、デザイナーが間違いを犯すのは必然です。特に新人は、新しいアイデアを実...