Elipsis 文字缩略
输入字符
基础用法
elipsis
指定是否缩略。max-lines
指定缩略行数,默认 1
省略
怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。
怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。
怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。
<template>
<div class="demo-container">
<el-switch
v-model="isElipsis"
inline-prompt
active-text="省略"
inactive-text="不省略"
/>
<el-slider v-model="width" :min="100" :max="500" />
</div>
<div class="demo-container" :style="`width: ${width}px`">
<sp-elipsis :text="text" :elipsis="isElipsis" />
</div>
<div class="demo-container" :style="`width: ${width}px`">
<sp-elipsis :text="text" :elipsis="isElipsis" :max-lines="2" />
</div>
<div class="demo-container" :style="`width: ${width}px`">
<sp-elipsis :text="text" :elipsis="isElipsis" :max-lines="3" />
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const isElipsis = ref(true)
const width = ref(230)
const text = ref(
'怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。'
)
</script>
省略位置
position
可以设置省略位置,可选值:end(默认)
、middle
、start
。
省略
怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。
<template>
<div class="demo-container">
<el-switch
v-model="isElipsis"
inline-prompt
active-text="省略"
inactive-text="不省略"
/>
<el-slider v-model="width" :min="100" :max="300" />
<br />
<el-radio v-model="position" value="start">头部</el-radio>
<el-radio v-model="position" value="middle">中间</el-radio>
<el-radio v-model="position" value="end">尾部</el-radio>
</div>
<div class="demo-container" :style="`width: ${width}px`">
<sp-elipsis
:text="text"
:elipsis="isElipsis"
:max-lines="3"
:position="position"
/>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const isElipsis = ref(true)
const width = ref(230)
const text = ref(
'怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。'
)
const position = ref('end')
</script>
插槽
插槽作用域抛出两个参数:isOver
是否溢出, elipsis
是否处于收缩状态
怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。
<template>
<div class="demo-container">
<el-slider v-model="width" :min="100" :max="500" />
</div>
<div
class="demo-container elipsis-slot-container"
:style="`width: ${width}px`"
>
<sp-elipsis :text="text" :elipsis="isElipsis" :max-lines="3">
<template #suffix="scope">
<sp-button
v-if="scope.isOver"
size="small"
text
type="info"
@click="isElipsis = !isElipsis"
>{{ scope.elipsis ? '展开' : '收缩' }}</sp-button
>
</template>
</sp-elipsis>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const isElipsis = ref(true)
const text = ref(
'怅卧新春白袷衣,白门寥落意多违。红楼隔雨相望冷,珠箔飘灯独自归。远路应悲春晼晚,残宵犹得梦依稀。玉珰缄札何由达,万里云罗一雁飞。'
)
const width = ref(230)
</script>
<style>
.elipsis-slot-container {
width: 230px;
line-height: 1.5;
}
</style>
API
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
elipsis | 是否收缩 | boolean | false |
text | 内容文字(必填) | string | input |
max-lines | 最大行数 | number | 1 |
position | 省略位置 | end | start | middle | end |
lineHeight | 行高 | string | - |
插槽
插槽名 | 说明 |
---|---|
prefix | 前缀 |
suffix | 后缀 |