折りたたみ表示の複数行テキストコンポーネント
まず、コード <テンプレート> <div class="text-expand" ref="textExpand"> <div v-if="!(showPopover && showPopoverJudge)"> <span class="text-expand-content" :style="expandStyle"> {{ (text === null || text === 未定義 || text === '') ? '--' : テキスト }} </span> <div class="expander"> <span v-if="showBtn && showBtnJudge" > <span v-if="!showFull" クラス="アクションアクション展開" @click.stop="showFullFn(true)" > 展開<i v-if="showBtnIcon" class="iconfont iconxiajiantou" /> </span> <span v-else クラス="アクションアクションパック" @click.stop="showFullFn(false)" > 非表示 <i v-if="showBtnIcon" class="iconfont iconshangjiantou" /> </span> </span> </div> </div> <el-popover v-else :placement="ポップオーバー場所" トリガー="ホバー"> <div class="popover-content"> {{ 文章 }} </div> <span class="text-expand-content" :style="expandStyle" slot="reference">{{ テキスト }}</span> </el-popover> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: "TextExpand", 小道具: { text: { // テキストコンテンツタイプ: 文字列、 デフォルト: () => '' }, expand: { // 折り返して行数を表示する type: Number, デフォルト: () => 3 }, showBtn: { // 展開、折りたたみボタンタイプ: ブール値、 デフォルト: true }, showBtnIcon: { // 展開、折りたたみアイコン タイプ: ブール値、 デフォルト: true }, showPopover: { // ポップオーバーに全文を表示 type: Boolean, デフォルト: false }, popoverPlace: { // ポップオーバーの位置タイプ: 文字列、 デフォルト: '下' } }, データ () { 戻る { showFull: false, // 全文を表示するかどうか expandStyle: '', showBtnJudge: false, //ボタンを折りたたんで表示するかどうかを判断 showPopoverJudge: false //ポップオーバーを折りたたんで表示するかどうかを判断 } }, 時計: テキスト: 関数 (val) { this.judgeExpand() } }, マウントされた(){ this.judgeExpand() }, メソッド: { showFullFn (値) { this.expandStyle = value ? '' : `display: -webkit-box;word-break: break-all;-webkit-line-clamp: ${this.expand};-webkit-box-orient: vertical;text-overflow: ellipsis;overflow: hidden;` this.showFull = 値 }, judgeExpand () { //折りたたむかどうかを判断します。$nextTick(() => { const {展開} = this; 定数 textExpandStyle = window.getComputedStyle(this.$refs.textExpand) const textExpandHeight = parseFloat(textExpandStyle.height) // 合計の高さを取得します const textExpandLineHeight = parseFloat(textExpandStyle.lineHeight) // 行の高さを取得します // 行の高さを計算します const rects = Math.ceil(textExpandHeight / textExpandLineHeight) if (rects <= expand) { // 折りたたんで表示する必要はありません this.showBtnJudge = false this.showPopoverJudge = false } それ以外 { this.showBtnJudge = true this.showPopoverJudge = true this.expandStyle = `display: -webkit-box;word-break: break-all;-webkit-line-clamp: ${this.expand};-webkit-box-orient: vertical;text-overflow: ellipsis;overflow: hidden;` } }) } } } </スクリプト> <style lang="less" スコープ> .text-expand{ &-コンテンツ{ 単語区切り: 全区切り; 空白: 事前ラップ; } .エキスパンダー{ テキスト配置: 左; 上マージン: 6px; 。アクション { 表示: インラインブロック; フォントサイズ: 14px; 色: #0281F0; カーソル: ポインタ; 私 { 表示: インライン; フォントサイズ: 12px; } } .action.アクションパック{ 左マージン: 0; } } } .ポップオーバーコンテンツ{ 最大幅: 40vw; 最大高さ: 30vh; オーバーフロー: 非表示; 単語区切り: 全区切り; オーバーフロー-y: 自動; } </スタイル> 使用法
これで、vue 折りたたみ表示複数行テキスト コンポーネントに関するこの記事は終了です。vue 折りたたみ表示複数行テキスト コンポーネントに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Dockerイントラネット侵入FRP展開の実装プロセスの分析
序文Linux でショートカットを作成すると、アプリケーションをより速く開くことができます。ここで、...
残念ながら、社内の IM のテスト中に MYSQL_DATA_TRUNCATED エラーが再び発生し...
1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...
目次1 Java環境の設定2 tomcatのインストールと展開Tomcat をインストールして展開す...
まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...
WeChat ミニプログラム コンポーネント設計仕様コンポーネントベースの開発という考え方は、私の開...
1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...
この記事では、タブバーの切り替え効果を簡単に実現するためのJavaScriptの具体的なコードを参考...
コードをコピーコードは次のとおりです。 <フォームメソッド="post" ...
目次コンポーネント設計最終的なコンポーネントAPIの定義コンポーネント構造の定義テンプレートとスタイ...
クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...
序文最近、私は夜に時間を取って「CSS World」という本を読んでいます。この本は非常に興味深く、...
目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...
目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...
入力サブシステムフレームワークLinux 入力サブシステムは、上から下に向かって、入力サブシステム ...