props: {
//圖片裁切配置
options: {
type: Object,
default: function() {
return {
autoCrop: true, //是否默認生成截圖框
autoCropWidth: 180, //默認生成截圖框寬度
autoCropHeight: 180, //默認生成截圖框高度
fixedBox: false, //是否固定截圖框大小 不允許改變
previewsCircle: true, //預覽圖是否是原圓形
title: ‘修改頭像’
}
}
},
// 上傳圖片的大小,單位M
imgSize: {
type: Number,
default: 2
},
//圖片存儲在oss上的上級目錄名
imgType: {
type: String,
default: ‘’
},
// 圖片地址
imageUrl: {
type: String,
default: ‘’
}
},
data() {
return {
loading: false,
isStopRun: false
}
},
methods: {
//從本地選擇文件
handleChange(info) {
if (this.isStopRun) {
return
}
this.loading = true
const { options } = this
console.log(info)
this.getBase64(info.file, imageUrl => {
const target = Object.assign({}, options, {
img: imageUrl
})
this.$refs.CropperModal.edit(target)
})
},
// 上傳之前 格式與大小校驗
beforeUpload(file) {
this.isStopRun = false
var fileType = file.type
if (fileType.indexOf(‘image’) < 0) {
this.$message.warning(‘請上傳圖片’)
this.isStopRun = true
return false
}
const isJpgOrPng =
file.type === ‘image/jpeg’ ||
file.type === ‘image/png’ ||
file.type === ‘image/jpg’
if (!isJpgOrPng) {
this.$message.error(‘你上傳圖片格式不正確!’)
this.isStopRun = true
}
const isLtSize = file.size < this.imgSize * 1024 * 1024
if (!isLtSize) {
this.$message.error(‘圖片大小不能超過’ + this.imgSize + ‘MB!’)
this.isStopRun = true
}
return isJpgOrPng && isLtSize
},
//獲取服務器返回的地址
handleCropperSuccess(data) {
//將返回的數(shù)據(jù)回顯
this.loading = false
this.$emit(‘crop-upload-success’, data)
},
// 取消上傳
handleCropperClose() {
this.loading = false
this.$emit(‘crop-upload-close’)
},
getBase64(img, callback) {
const reader = new FileReader()
reader.addEventListener(‘load’, () => callback(reader.result))
reader.readAsDataURL(img)
}
}
}
- 模態(tài)框 CropperModal.vue
<el-dialog :visible.sync=“visible” :title=“options.title” :close-on-click-modal=“false” width=“800” @close=“cancelHandel”>
<vue-cropper ref=“cropper” :img=“options.img” :info=“true” :autoCrop=“options.autoCrop” :autoCropWidth=“options.autoCropWidth” :autoCropHeight=“options.autoCropHeight” :fixedBox=“options.fixedBox” @realTime=“realTime”>
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。
深知大多數(shù)前端工程師,想要提升技能,往往是自己摸索成長或者是報班學習,但對于培訓機構動則幾千的學費,著實壓力不小。自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!
因此收集整理了一份《2024年Web前端開發(fā)全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。
既有適合小白學習的零基礎資料,也有適合3年以上經(jīng)驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上前端開發(fā)知識點,真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新
如果你覺得這些內容對你有幫助,可以添加V獲?。簐ip1024c (備注前端)
Vue
-
什么是MVVM?
-
mvvm和mvc區(qū)別?它和其它框架(jquery)的區(qū)別是什么?哪些場景適合?
-
組件之間的傳值?
-
Vue 雙向綁定原理
-
描述下 vue 從初始化頁面–修改數(shù)據(jù)–刷新頁面 UI 的過程?
-
虛擬 DOM 實現(xiàn)原理
-
Vue 中 key 值的作用?
-
Vue 的生命周期
-
Vue 組件間通信有哪些方式?
-
vue 中怎么重置 data?
-
組件中寫 name 選項有什么作用?
-
Vue 的 nextTick 的原理是什么?
-
Vuex 有哪幾種屬性?
CodeChina開源項目:【大廠前端面試題解析+核心總結學習筆記+真實項目實戰(zhàn)+最新講解視頻】
一個人可以走的很快,但一群人才能走的更遠。如果你從事以下工作或對以下感興趣,歡迎戳這里加入程序員的圈子,讓我們一起學習成長!文章來源:http://www.zghlxwxcb.cn/news/detail-846785.html
AI人工智能、Android移動開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運維、云計算、MySQL、PMP、網(wǎng)絡安全、Python爬蟲、UE5、UI設計、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計算機網(wǎng)絡、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結構與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計算文章來源地址http://www.zghlxwxcb.cn/news/detail-846785.html
img_convert/4335d677b95caa0ea0d29141cc0c3c1f.png)
一個人可以走的很快,但一群人才能走的更遠。如果你從事以下工作或對以下感興趣,歡迎戳這里加入程序員的圈子,讓我們一起學習成長!
AI人工智能、Android移動開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運維、云計算、MySQL、PMP、網(wǎng)絡安全、Python爬蟲、UE5、UI設計、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計算機網(wǎng)絡、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結構與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計算
到了這里,關于Element UI結合vue-cropper打造圖片裁剪上傳組件的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!