JS讓網頁字體大小隨窗口大小改變而改變

em 是相對於其父元素來設置字體大小的,這樣就會存在一個問題,進行任何元素設置,都有可能需要知道他父元素的大小,

在我們多次使用時,就會帶來無法預知的錯誤風險。

rem 是 CSS3 新增的一個相對單位(root em,根em),這個單位引起了廣泛關注。這個單位與em有什麼區別呢?區別在於使用rem爲元素設定字體大小時,仍然是相對大小,但相對的只是HTML根元素。這個單位可謂集相對大小和絕對大小的優點於一身,通過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層複合的連鎖反應。(摘自網上)

要讓文本里的字體大小隨窗口大小的變化而變化,那麼文本字體大小的單位我們用rem 設置,然後通過 js 來設置根元素的字體大小就可以了。

以下是代碼示例

<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style type="text/css">
		p{ font-size: 3rem; }
	</style>
</head>
<body>

	<p>這是 p</p>

</body>
	
	<script type="text/javascript">
		// 獲取 html 元素
		var html = document.documentElement;

		// 封裝一個函數
		function fontS(){
			// 獲取 html 的寬
 			var hW = html.offsetWidth;
			// 計算字體大小,這裏是 html 寬的五十分之一
 			var hS = hW / 50;
			// 給剛開始時的 html 設置字體大小	
 			html.style.fontSize = hS + "px";
		}
		// 當窗口大小改變時執行函數 
		fontS()window.onresize = function(){fontS();}
	</script>
</html>


目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。對於不支持它的瀏覽器,應對方法也很簡單,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略rem用設定的字體大小。


歡迎各位一起探討

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