我需要一個可擴展的HTML5網站設計。我的想法是在body元素中定義1px的「base」字體大小,並在「em」中定義與此值相對的所有子元素。如何爲移動設備設計可擴展的HTML5網站?
更確切地說:子元素(圖像,div等)的所有大小(寬度,高度,邊距,填充和字體大小)均以「em」爲單位進行定義,因此很容易對整個網站進行縮放只有通過更改「基本」字體大小(在正文中)。
我需要這樣做,因爲不同的移動設備有不同的屏幕尺寸和不同的devicePixelRatio值。因此,如果我通過JavaScript檢測到更大的屏幕尺寸(例如1.2倍大),我可以簡單地設置font-size: 1.2px
僅用於body元素,整個網站應該是1.2x更大。
實施例:
<!doctype html>
<html>
<head>
<title>foo</title>
<style>
body{
font-size: 1px;
/* If a sceen is 1.2x bigger than this "default" size, then change font-size to 1.2px */
}
#myimg{
/* 200em = 200px in this case because body font-size=1px */
width: 200em;
height: 200em;
}
#somediv{
width: 100em;
height: 100em;
font-size: 20em;
}
</style>
</head>
<body>
<div id="wrapper">
<img id="myimg" src="foo.jpg">
<div id="somediv">
foo
</div>
</div>
</body>
</html>
唯一的問題是,對具有字體大小的容器中定義(例如22em),也定義了一個新的「基」字體大小爲他們的孩子元素,因此這必須避免。
例風格(絕不能發生!)
#wrapper{
font-size: 3px;
}
如果以上將被添加這種風格,所有子容器(及其子女)將成爲大3倍(=不是我想要的) 。
這是一個可行的解決方案,還是有更好的方法來創建一個完全可擴展的設計?
把所有子元素,我認爲你是在談論被稱爲「彈性什麼佈局」。有關於如何正確執行此操作的無盡技巧,並非所有的好建議。這裏有一篇關於固定,流暢和彈性佈局之間差異的體面文章:http://coding.smashingmagazine.com/2009/06/02/fixed-vs-fluid-vs-elastic-layout-whats-the-right- one-for-you/ –