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

推薦する

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

最近、MySQL を始めとしてデータベースの知識を勉強し始めました。以下では、皆さんの参考になるよう...

Vueは右上隅の時間表示のリアルタイム更新を実装します

この記事の例では、右上隅の時間表示のリアルタイム更新を実現するためのVueの具体的なコードを紹介しま...

offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft などのプロパティの図。

注 1: 上の画像の背景全体がこの Web ページのフルサイズであり、中央の小さなボックスがブラウザ...

JavaScript 上級プログラミング: 変数とスコープ

目次1. 元の値と参照値2. インスタンス3. 範囲1. 元の値と参照値6 つの単純なデータ型の値は...

JavaScriptを使用してSMS認証コード間隔を送信する機能を実装する

多くのアプリやウェブサイトでは、ログインやアカウント登録の際にSMS認証コード1を送信する場所があり...

InnoDB テーブルの BLOB 列と TEXT 列のストレージ効率を最適化します。

まず、MySQL InnoDB エンジンのストレージ形式に関する重要なポイントをいくつか紹介します。...

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)

1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...

MySQLのロックについて理解しておくべきこと

1. はじめにMySQL ロックは、その範囲に応じて、グローバル ロック、テーブル ロック、行ロック...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

webpack イメージを base64 に変換する例

url-loader をダウンロード 糸を追加 -D URLローダー モジュール: { ルール: {...

2秒以内にHTMLページ内の他のページにリダイレクトする方法

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

ブラウザの自動更新を実装するReactサンプルコード

目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...

CentOS 7にDockerをインストールする

Linuxシステムをお持ちでない場合は、ダウンロードとインストールについてはhttps://www....

MySQLで数千万のテストデータを素早く作成する方法

述べる:この記事で扱うデータ量は 100 万です。数千万のデータが必要な場合は、量を増やすだけで済み...