要求製做一個邀請卡頁面,其中標題字數是動態的,最多可顯示2行,若是超出2行則第2行內容結尾添加省略號。根據產品妹子的性格,四行這個設置到時很大機會改,因此這裏必定不能寫死,結果前幾天真的要求改爲了最多可顯示4行 ,其餘照舊。產品妹子too young :)!chrome
廢話不說,下面貼代碼,獻醜了!上代碼以前先看一下須要傳的參數!!瀏覽器
// 文字自動換行 function textPrewrap(ctx, content, drawX, drawY, lineHeight, lineMaxWidth, lineNum) { var drawTxt = ''; // 當前繪製的內容 var drawLine = 1; // 第幾行開始繪製 var drawIndex = 0; // 當前繪製內容的索引 // 判斷內容是否能夠一行繪製完畢 if(ctx.measureText(content).width <= lineMaxWidth) { ctx.fillText(content.substring(drawIndex, i), drawX, drawY); } else { for (var i = 0; i < content.length; i++) { drawTxt += content[i]; if (ctx.measureText(drawTxt).width >= lineMaxWidth) { if (drawLine >= lineNum) { ctx.fillText(content.substring(drawIndex, i) + '..', drawX, drawY); break; } else { ctx.fillText(content.substring(drawIndex, i + 1), drawX, drawY); drawIndex = i + 1; drawLine += 1; drawY += lineHeight; drawTxt = ''; } } else { // 內容繪製完畢,可是剩下的內容寬度不到lineMaxWidth if (i === content.length - 1) { ctx.fillText(content.substring(drawIndex), drawX, drawY); } } } } }
在繪製文字的過程當中發現,繪製文字的y座標是不是以文字上方作標準,一圖勝多言,上圖!字體
瀏覽器環境: chrome 71.0.3578.98(正式版本)(64 位)spa
字體大小爲40px設計
這是一個比較冷門的代碼效果,可是也但願能夠幫到有須要的朋友
若有幫助的請輕輕點下一個贊表示鼓勵!謝謝 :)
若是看到這裏首先很感謝花費您一些寶貴的時間看到這裏,若有錯誤的地方但願各位大佬指出錯誤,謝謝:)code
關閉手機鬧鐘,睡了!明天起來看 雷馬大戰 !哦吼blog