この記事では、パーセンテージバーを実現するためのVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 レンダリング1. それぞれの割合
2. 100% 残す 3. 100%正しい コードの実装<テンプレート> <div class="about"> <!-- <h1>これはAboutページです</h1> --> <div class="step"> <!-- 左側が 100% の場合、斜辺の三角形は表示されず、直角が増加します --> <div クラス="左" v-show="左パーセント" :class="[{ 'full-left': !rightPercent }, { 'tringle': rightPercent }]" :style="{ width: leftPercent+'%' }" @mouseover="onMouseTooltip(LEFT_BAR, SHOW_TIP)" @mouseleave="onMouseTooltip(LEFT_BAR, HIDE_TIP)" > <div class="bar-tip-box" v-show="leftBar.isShowTip"> <p>合計: {{ totalNum }}</p> <p>緑の割合: {{ leftPercent }}%</p> </div> <div class="tip-arrow" v-show="leftBar.isShowTip"></div> {{ 左パーセント }}% </div> <div クラス="right" v-show="rightPercent" :class="[{ 'full-right': !leftPercent }]" @mouseover="onMouseTooltip(RIGHT_BAR, SHOW_TIP)" @mouseleave="onMouseTooltip(RIGHT_BAR, HIDE_TIP)" > <div class="bar-tip-box" v-show="rightBar.isShowTip"> <p>合計: {{ totalNum }}</p> <p>グレーの割合: {{ rightPercent }}%</p> </div> <div class="tip-arrow" v-show="rightBar.isShowTip"></div> {{ 右パーセント }}% </div> </div> </div> </テンプレート> <スクリプト> const LEFT_BAR = "左"; const RIGHT_BAR = "右"; const SHOW_TIP = "表示"; const HIDE_TIP = "非表示"; エクスポートデフォルト{ データ() { 戻る { 左バー: 左バー、 右バー: 右バー、 SHOW_TIP: SHOW_TIP、 ヒントを隠す: ヒントを隠す、 合計数: 1000, 左パーセント: 100, 左バー: { isShowTip: false、 遅延出力: null }, 右バー: { isShowTip: false、 遅延出力: null } }; }, メソッド: { onMouseTooltip(ヒントタイプ、アクションタイプ) { bar = null とします。 (tipType == LEFT_BAR)の場合{ バー = this.leftBar; } そうでない場合 (tipType == RIGHT_BAR) { バー = this.rightBar; } それ以外 { 戻る; } アクションタイプ === SHOW_TIP の場合 { this.showBarTooltip(バー); } そうでない場合 (actionType === HIDE_TIP) { this.hideBarTooltip(バー); } それ以外 { 戻る; } }, showBarTooltip(バー) { bar.delayOut が null の場合 タイムアウトをクリアします(bar.delayOut); } bar.delayOut = null; bar.isShowTip = true; }, 非表示バーツールチップ(バー) { タイムアウトをクリアします(bar.delayOut); bar.delayOut = setTimeout(関数() { bar.isShowTip = false; }, 100); }, }, 計算: { 右パーセント: 関数(){ 100 を返します - this.leftPercent; } } }; </スクリプト> <style lang="less" スコープ> 。ステップ { 位置: 相対的; ディスプレイ: フレックス; マージン: 100px; 幅: 200ピクセル; フォントサイズ: 0; 。左 { フレックス成長: 0; 位置: 相対的; 表示: インラインブロック; 背景: #62c87f; 色: #fff; テキスト配置: 中央; フォントの太さ: 太字; 幅: 70%; フォントサイズ: 12px; 行の高さ: 20px; 高さ: 20px; 最小幅: 30px; 左上の境界線の半径: 5px; 左下の境界線の半径: 5px; } // この疑似クラスは100%表示されるわけではありません。tringle::after { コンテンツ: " "; 位置: 絶対; 上: 0; 右: -8px; 境界線の幅: 20px 8px; 境界線のスタイル: solid; 境界線の色: #62c87f 透明 透明 透明; zインデックス: 10; } 。右 { フレックス成長: 1; 位置: 相対的; 表示: インラインブロック; /* 幅:30%; */ 背景: #d0d4dc; 色: #333; フォントの太さ: 太字; テキスト配置: 中央; フォントサイズ: 12px; 行の高さ: 20px; 高さ: 20px; テキスト配置: 中央; 最小幅: 35px; 右上の境界線の半径: 5px; 右下の境界線の半径: 5px; } .full-left{ 右上の境界線の半径: 5px; 右下の境界線の半径: 5px; } .full-right{ 左上の境界線の半径: 5px; 左下の境界線の半径: 5px; } .tip-arrow { 位置: 絶対; 左: 50%; 上: -10px; 表示: インラインブロック; 幅: 7px; 高さ: 7px; 変換: rotateZ(45deg); -webkit-transform:rotateZ(45度); 背景色: #7f7f7f; zインデックス: 10; } .bar-tip-box { 位置: 絶対; 上: -5px; 右: 50%; 変換: translate(50%, -100%); テキスト配置: 左; パディング: 5px 10px; 幅: 最大コンテンツ; 色: #fff; フォントサイズ: 12px; フォントの太さ: 400; 境界線の半径: 3px; 背景色: #7f7f7f; zインデックス: 10; p { マージン: 0; パディング下部: 5px; } } } </スタイル> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: VMWare ネットワーク アダプタの 3 つのモードの実装プロセスの分析
ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...
繰り返し: サイト全体で特定のページ デザイン スタイルを繰り返します。繰り返し要素としては、特定の...
1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...
0 アイコンと画像の違いアイコンは文字であり、画像はバイナリ ストリームです。つまり、画像はアイコン...
目次最適化の第一歩: 軽量ベースイメージの使用第2段階の最適化:多段階構築Docker は、ソフトウ...
MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...
目次01 背景02 はじめに03 ワークフロー04 いくつかの質問05 ファイルをバックアップする0...
鉛Web ページ上の一般的な三角形の一部は、画像やフォント アイコンにする必要なく、CSS を使用し...
目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....
MySQL データベースでは、テーブルが互いに関連付けられた後は、それらを任意に削除することはできま...
React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...
1. フロントエンドエンジニアリングの複雑さいくつかの小さなデモ プログラムを開発するだけであれば、...
目次概要コードの実装要約する概要戦略パターンは、JavaScript デザイン パターンにおける動作...
1.インストールしたい場所に解凍し、my.iniファイルを作成します。 my.iniの内容は次のと...
企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...