jQuery/JavaScript 計算字符串顯示寬度/高度

代碼來源是u012860063的這篇文章https://blog.csdn.net/u012860063/article/details/53105658。我將其封裝爲一個函數,並實現了刪除臨時DIV的功能,然後對其中不知要的參數做了默認值,最後實現了自定義臨時DIV的ID功能以避免可能的ID衝突。

用途:做網頁自定義右鍵菜單的時候,尤其是其中有動態添加的項目的時候,可以根據字符串設置菜單的寬度,避免不必要的餘白。

/*
 * @description 計算字符串顯示寬度/高度
 * @author ErikaEmma <[email protected]>
 * @copyright 根據u012860063的csdn博文所寫
 * @see https://blog.csdn.net/u012860063/article/details/53105658
 * @param {string} str 要計算顯示寬度/高度信息的字符串
 * @param {string} fontFamily 字體,默認爲空
 * @param {string} fontSize 字體大小,默認爲空
 * @param {string} addDivId 自定義臨時DIV的ID,默認'labelText'
 * @param {string} appendTO 自定義臨時DIV添加容器,默認body
 * @return {object} 返回包含width和height成員的對象
*/
function getStrLength() {
	var str = arguments[0] ? arguments[0] : '';
	var fontFamily = arguments[1] ? arguments[1] : ''; //Microsoft YaHei
	var fontSize = arguments[2] ? arguments[2] : ''; //12px
	var addDivId = arguments[3] ? arguments[3] : 'labelText';
	var appendTo = arguments[4] || 'body';
	
	$(appendTo).append("<div id='" + addDivId + "' style='color:black;line-height:1.2;white-space:nowrap;top:0px;left:0px;position:fixed;display:block;visibility:visible;'>");
	var add = $('#' + addDivId);
	add.css({
		'font-size': fontSize,
		'font-family': fontFamily
	}).html(str);
	
	var ret = {'width': add.width(), 'height': add.height()};
	
	add.remove();
	return ret;
}

附上測試代碼(基於jquery-3.3.1.min.js):

<!DOCTYPE html>
<html>
	<head>
		<title>Test getStrLength()</title>
		<script src='jquery-3.3.1.min.js'></script>
		<script src='getStrLength.js'></script>
	</head>
	<body>
		<p>Get width of string 'Hello, world!' by default font-size and default font-family: <span id='test' style="color: red;"></span>.</p>
		<script>
			var ret = getStrLength('Hello, world!');
			$('#test').html(ret.width);
		</script>
	</body>
</html>

再附上測試結果:

IE:104

Edge:97.13

Chrome:97.1375

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章