この記事では、パーセンテージバーを実現するための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. 404 ページ1. 原因2. 解決策2.白い画面を更新する1. 原因2. 解決策3. ...
Linux に触れたばかりの方には、この内容が役に立つかもしれません。Linux にしばらく触れてい...
<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...
目次1. オブジェクト1.1 オブジェクトとは何ですか? 1.2 なぜオブジェクトが必要なのか? 2...
FastDFSとNginxの統合:トラッカーは、負荷分散と高可用性のために Nginx と組み合わせ...
コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...
導入今日は、MySQL の sum 関数の使い方を紹介します。この関数は、MySQL データベースを...
目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...
目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...
接続ツールを開きます。私はMobaXterm_Personal_12.1を使用します(公式サイトのダ...
Pure jsは、参照用にワンクリックで編集可能なテーブル(トランスクリプトに似たもの)を実装してい...
効果: css: .s_type { 境界線: なし; 境界線の半径: 5px; 背景色: #f3f...
目次ユーティリティ: vue での使用:説明する:画像安定化:スロットル:ユーティリティ: // 手...
目次クラスタクラスターの詳細クラスター内のイベントクラスター内のメソッドクラスター内の属性クラスター...
この記事の例では、検証コードのランダム生成を実現するためのJSの具体的なコードを参考までに共有してい...