├── .gitignore ├── README.md ├── babel.config.js ├── changeLog.md ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── components │ └── ellipsis.vue ├── index.js └── main.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-overlow-ellipsis 2 | 3 | ## 在Vue项目中使用本组件 4 | 5 | ### 1. 安装 6 | ```bash 7 | npm install vue-overflow-ellipsis 8 | # 或 9 | yarn add vue-overflow-ellipsis 10 | ``` 11 | 12 | ### 2. 在项目中引入组件以及依赖 13 | 14 | ```js 15 | import ellipsis from "vue-overflow-ellipsis" 16 | import "vue-overflow-ellipsis/dist/index.css" 17 | ``` 18 | 19 | ### 3. 使用组件 20 | ```html 21 | 26 | 27 | 47 | ``` 48 | 49 | ### 4. API 50 | 说明:组件动态计算指定行数的容器能容纳的字符数量,动态截取字符串进行显示。组件内部使用ResizeObserver观察元素的size的变动并调用了refresh方法。但是IE不支持ResizeObserver,所以如果需要兼容IE动态 51 | 52 | - props 53 | - content 文本字符串 54 | - rows 文本最大行数,默认是3 55 | - ellipsisText 省略号字符,默认是"..." 56 | - btnText 按钮的文字,默认是“展开” 57 | - btnShow 是否总是显示按钮,即便未超过最大行数,默认false 58 | 59 | - slot 60 | - ellipsis 自定义省略号和按钮文字,`... 查看全部` 61 | - events 62 | - click-btn 展开按钮点击事件 63 | 64 | 65 | --- 66 | 67 | ## 源码运行 68 | 可以通过git将本项目clone到本地运行。 69 | 70 | ### 安装依赖 71 | ``` 72 | yarn install 73 | ``` 74 | 75 | ### 启动开发服务 76 | ``` 77 | yarn serve 78 | ``` 79 | 80 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /changeLog.md: -------------------------------------------------------------------------------- 1 | v1.0.4 2 | 过滤不必要的resize监听回调 3 | 4 | v1.0.0 5 | 初版,支持指定行数、折叠按钮的文字 -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-overflow-ellipsis", 3 | "version": "1.0.7", 4 | "description": "Vue组件,多行文字溢出省略折叠,...[查看更多]", 5 | "keywords": [ 6 | "多行溢出", 7 | "省略多余内容", 8 | "折叠", 9 | "展开" 10 | ], 11 | "author": "Mumaa ", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/Lushenggang/vue-overflow-ellipsis" 15 | }, 16 | "license": "MIT", 17 | "main": "dist/index.common.js", 18 | "files": [ 19 | "dist" 20 | ], 21 | "private": false, 22 | "scripts": { 23 | "serve": "vue-cli-service serve", 24 | "build": "vue-cli-service build --target lib --name index ./src/index.js", 25 | "prepublishOnly": "git push && npm run build" 26 | }, 27 | "dependencies": { 28 | "core-js": "^3.6.5", 29 | "element-resize-detector": "^1.2.1", 30 | "vue": "^2.6.11" 31 | }, 32 | "devDependencies": { 33 | "@vue/cli-plugin-babel": "~4.5.0", 34 | "@vue/cli-service": "~4.5.0", 35 | "stylus": "^0.54.8", 36 | "stylus-loader": "3.0", 37 | "uglifyjs-webpack-plugin": "^2.2.0", 38 | "vue-template-compiler": "^2.6.11" 39 | }, 40 | "browserslist": [ 41 | "> 1%", 42 | "last 2 versions", 43 | "not dead" 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wintc23/vue-overflow-ellipsis/af0d72a8f33420db9b172fc77d8efcbcd87ccea9/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 59 | 60 | -------------------------------------------------------------------------------- /src/components/ellipsis.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 113 | 114 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import ellipsis from '@/components/ellipsis' 2 | 3 | export default ellipsis -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | 4 | Vue.config.productionTip = false 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app') 9 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | 2 | const UglifyJsPlugin=require('uglifyjs-webpack-plugin') 3 | const isDev = process.env.NODE_ENV !== "production" 4 | 5 | const externals = {} 6 | !isDev && (externals.vue = 'vue') 7 | 8 | module.exports = { 9 | productionSourceMap: false, 10 | configureWebpack: { 11 | externals, 12 | optimization: { 13 | minimizer: [ 14 | new UglifyJsPlugin({ 15 | uglifyOptions: { 16 | output: { 17 | comments: false, 18 | }, 19 | warnings: false, 20 | compress: { 21 | drop_debugger: true, 22 | drop_console: true 23 | } 24 | } 25 | }) 26 | ] 27 | } 28 | } 29 | } --------------------------------------------------------------------------------