この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 テンプレートの内容 <div class="productLeft"> <!-- 中央左の画像 --> <div class="mdImg"> <img :src="require('../assets/imgs/details/'+mdImgUrl)" alt=""> </div> <!-- マスクレイヤー--> <div v-show="isShow" class="marks" :style="{top:top+'px',left:left+'px'}"></div> <!-- マスク レイヤー ガラス superMarks--> <div @mouseenter="enter" @mouseleave="leave" @mousemove="marks" class="superMarks" ></div> <!--左側に小さな画像--> <div class="smImg"> <!--左ボタン--> <div @click="前へ" class="前へ"> <img src="../assets/icon/prev.png" > </div> <div class="smImgUl"> <ul :style="{'margin-left':marginLeft+'px'}"> <li @mouseenter="enterLi(index)" v-for="(item,index) リスト" :key="index"> < 画像 :src="require('../assets/imgs/details/'+item.sm)" alt=""> </li> </ul> </div> <!-- 右ボタン --> <div @click="next" class="button-next"> <img src="../assets/icon/next.png" > </div> </div> <!-- 左側に大きな画像 --> <div v-show="isShow" クラス="lgImg"> <img :src="require('../assets/imgs/details/'+lgImgUrl)" alt="" :style="{top:topLgImg+'px',left:leftLgImg+'px'}"> </div> </div> js: < スクリプト > 「./common/headerT.vue」からheaderTをインポートします。 「./common/Header.vue」からヘッダーをインポートします。 エクスポートデフォルト{ データ() { 戻る { リスト:[{"sm":"s1.png","md":"s1.png","lg":"s1.png"}, {"sm":"s2.png","md":"s2.png","lg":"s2.png"}, {"sm":"s3.png","md":"s3.png","lg":"s3.png"}, {"sm":"s4.png","md":"s4.png","lg":"s4.png"}, {"sm":"s5.png","md":"s5.png","lg":"s5.png"}, {"sm":"s6.png","md":"s6.png","lg":"s6.png"}, {"sm":"s7.png","md":"s7.png","lg":"s7.png"}, {"sm":"s8.png","md":"s8.png","lg":"s8.png"}], mdImgUrl:"s1.png", lgImgUrl:"s1.png", ulIndex:0, // 数 li 左に移動する marginLeft:0, // 左右に移動する距離 isShow:false, // マスク レイヤー マークと大きな画像を表示するかどうかを制御します" left:0, // 左の位置をマークします top:0, // 下の位置をマークします leftLgImg:0, // 大きな画像 lgImg の位置を移動します topLgImg:0 // 大きな画像 lgImg の位置を移動します } }, メソッド: { //マウスが小さい画像に入ると、対応する中央の画像が表示されます。enterLi(e){ //e は対応する添え字です//console.log(e); this.mdImgUrl=this.list[e].md; this.lgImgUrl=this.list[e].lg; }, // 左ボタンと右ボタンをクリックして ul 内の li を移動します。各 li の幅は 74 ピクセルで、5 つの li を表示するには ul の幅は 370 ピクセルです。 前(){ //左に移動 - if(this.ulIndex>-(this.list.length-5)){ this.ulIndex--; this.marginLeft=this.ulIndex*74; //コンソール.log(this.ulIndex) } }, 次(){ //右に移動++ if(this.ulIndex<0){ this.ulIndex++; this.marginLeft=this.ulIndex*74; //コンソール.log(this.ulIndex) } }, //マウスが入ったり出たりする enter(){ this.isShow=true }, 離れる(){ this.isShow=false }, //マスクレイヤーの虫眼鏡マーク(e){ //console.log(e.offsetX,e.offsetY) //マウスが移動したときの位置 var marksWidth=200;//マークの幅 var marksHeight=200;//マークの高さ this.left=e.offsetX-marksWidth/2; this.top=e.offsetY-marksHeight/2; //コンソールログ(this.left,this.top) if(this.left<0){ 左 = 0; }それ以外の場合(this.left>250){ 左 = 250; } if(this.top<0){ 上へ }それ以外の場合(this.top>250){ 上へ } //コンソールログ(this.left,this.top) //中サイズの画像 div の幅と高さは 450、大サイズの画像 div の幅と高さは 800 です this.leftLgImg=-this.left*800/450; this.topLgImg=-this.top*800/450; } }, 計算: { }, コンポーネント:{ "ヘッダー1":ヘッダーT, "headertwo":ヘッダー }, 時計: }, } </スクリプト> CS: ... <スタイルスコープ> 。コンテンツ{ 幅:1200ピクセル; マージン:0 自動; } .content>.product{ ディスプレイ: フレックス; コンテンツの両端揃え: スペースの間; } /* 左サイズ画像スタイル*/ .productLeft{ 幅:450ピクセル; 位置: 相対的; } /* 左中央の画像 */ .mdImg,.mdImg>画像{ 幅:450ピクセル; 高さ:450px; } /*マスクレイヤーのスーパーマーク */ .superMarks{ 幅:450ピクセル; 高さ:450px; 背景色:rgba(220, 220, 220, 0); 位置:絶対; 上:0px; 左:0px; } /* マスクレイヤー*/ .マーク{ 幅:200px; 高さ:200px; 位置:絶対; 背景色:rgba(220, 220, 220, 0.5); /*top:0px; //インラインは動的に上と左を設定します 左:0px;*/ } /* 左側に小さい画像 */ .smImg{ ディスプレイ:フレックス; アイテムの位置を中央揃えにします。 コンテンツの両端揃え: スペースの間; オーバーフロー:非表示; } .smImgUl{ オーバーフロー:非表示; 幅:370ピクセル; } .smImg ul{ ディスプレイ: フレックス; 幅:370ピクセル; マージン:0; パディング:0; } .smImg ul>li{ パディング:0 3px; } .smImg 画像{ 高さ:60px; マージン:4px; } /*左側の大きな画像を非表示にする*/ .lgImg{ 幅:400ピクセル; 高さ:400px; オーバーフロー: 非表示; 位置:絶対; 上:0px; 左:450px; 境界線:2px実線 #aaa; 背景色:#fff; } .lgImg 画像{ 幅:800ピクセル; 高さ:800px; 位置:絶対; /* 上:100px; 左:100px;*/ } /* 積の右側 */ .productRight{ 幅:700ピクセル; } /* 左ボタンと右ボタン */ .button-prev、.button-next{ 幅:35px; 高さ:35px; 行の高さ: 30px; 境界線:1px実線 #ddd; 境界線の半径:50%; テキスト配置:中央; } .button-prev:hover、.button-next:hover{ 背景色:#eee; } .button-prev>画像、.button-next>画像{ 幅:20px; 高さ:20px; } </スタイル> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法
>>: CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法
目次1. 要素の入手方法文書から入手ID取得クラス名 (className) を取得します。タグ名 ...
この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...
この記事の例では、右上隅の時間表示のリアルタイム更新を実現するためのVueの具体的なコードを紹介しま...
Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...
目次1. データベース操作2. データ型3. バックアップとリカバリ3. 操作4. 上級5. 知識補...
この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...
<br />ウェブページの色はウェブサイトのイメージを確立する鍵の一つですが、ネットユー...
この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...
次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...
1. MySQLがインストールされているかどうかを確認する yum インストール済みリスト | gr...
1. CSS変数がもたらす質的変化CSS 変数によってもたらされる改善は、CSS コードの節約や C...
コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...
1. Webプロジェクトを作成したら、Tomcatを例にサーバーを構成する必要があります。 2. 実...
Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...
html <div> 要素 <button type="button&q...