我正在制作 Fluid + 响应式布局,其中布局在浏览器/屏幕重新大小时上下缩放。
如果我使用font-size
的body
是%
百分比,那么它em
适用于所有事情,
font-size
width
margin
padding
border-width
border-radius
或者我应该em
只用于font-size
?
我的目标是在事情扩大和缩小时保持一切成比例。
我什么时候应该使用什么时候有点em
困惑%
。我font-size
的身体是62.5%
我正在制作 Fluid + 响应式布局,其中布局在浏览器/屏幕重新大小时上下缩放。
如果我使用font-size
的body
是%
百分比,那么它em
适用于所有事情,
font-size
width
margin
padding
border-width
border-radius
或者我应该em
只用于font-size
?
我的目标是在事情扩大和缩小时保持一切成比例。
我什么时候应该使用什么时候有点em
困惑%
。我font-size
的身体是62.5%
在每个浏览器都支持缩放之前,使用em
曾经被认为是一种良好的可访问性做法。现在我发现它对于在特定场景(也许是你的场景)中轻松声明相对字体大小非常有用。
我发现相对大小不会在边框上产生美观的结果,因为某些浏览器会尝试从字面上使用从em
or 百分比计算得出的浮点值,结果会很模糊(试试看)。
我在大多数布局中大量使用百分比。我发现一些基于百分比的通用样式可以满足多种布局需求(例如 50/50 拆分、33/67、25/75 等的样式等)。
我个人觉得处理百分比更直观。宽度为 100% 的元素将始终占据其父元素的 100%(当然,具有正确的框大小),并且在您的代码中很容易阅读。15em 宽的元素可能占据其父元素的 50% 或 150%;这不是直接明显的,我发现很难跟踪(但也许这只是我)。
以下是一些基线样式。这些尚未在所有可能的浏览器/设备上进行测试,但它们用于生产应用程序:
* {
border-style: none;
border-color: inherit;
border-width: 0;
padding: 0;
margin: 0;
vertical-align: baseline;
}
BODY {
font: 11px/1.5 "Trebuchet MS", Arial, Verdana, sans-serif;
color: #404040;
background-color: #fff;
}
H1 {
font-size: 1.8em;
margin: .1em 0 .1em 0;
color: #2B265B;
}
H2 {
font-size: 1.6em;
margin: 0 0 .25em 0;
color: #303030;
}
H3 {
font-size: 1.4em;
margin: 0 0 .25em 0;
color: #3b5998;
}
H4 {
font-size: 1.2em;
margin: 0 0 .1em 0;
color: #666;
}
P {
margin: 0 0 1.5em 0;
font-size: 1.1em;
}
INPUT, SELECT, TEXTAREA {
border-style: solid;
vertical-align: middle;
margin: .2em 0 .2em 0;
border-radius: .3em;
-moz-border-radius: .3em;
}
INPUT[type="text"], INPUT[type="password"]{
border-color: #85a3bf;
width: 16em;
padding: .2em;
border-width: 1px;
}
INPUT[type="file"] {
border-color: #85a3bf;
width: 32em;
padding: .2em;
border-width: 1px;
}
INPUT[type="text"]:focus, INPUT[type="password"]:focus, TEXTAREA:focus {
border-color: #0066cc;
}
INPUT[type="submit"], INPUT[type="button"] {
border-color: #DDDDDD #BBBBBB #999999;
border-width: 1px;
background: #eee url([URL]) repeat-x;
padding: .2em .8em .2em .8em;
text-shadow: 1px 1px #fff;
}
INPUT[type="submit"]:hover, INPUT[type="button"]:hover {
background: #eee url([URL]) repeat-x;
}
INPUT[type="submit"]:active, INPUT[type="button"]:active {
background: #eee url([URL]) repeat-x;
}
INPUT[type="checkbox"], INPUT[type="radio"] {
margin: 0px .5em .1em .5em;
vertical-align: middle;
}
INPUT[type="image"] {
border: 0;
margin: 0;
}
SELECT {
padding: .1em;
border-width: 1px;
border-color: #DDDDDD #BBBBBB #999999;
background: #eee url([URL]) repeat-x;
}
TEXTAREA {
border-width: 1px;
border-color: #85a3bf;
padding: .3em;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
对于我的项目,我这样做:
html { font-size:100.01%;}
。0.01% 减少了四舍五入的误差。一个一般的“总结”来解决调整大小有时会使文本非常小的情况body {font-size: 75%;}
,字体大小是 12px,因为 16 的 75% 是 12。px 最适合用于页面的一般布局,例如页面的部分、边距、填充。px 的问题在于,特别是在像 IE6 这样具有“最小、更小、正常、大和更大”文本缩放的浏览器中,px 单位字体不会调整大小。然而,随着整页缩放的出现,我们不需要这种文本缩放。页面缩放、内容和文本与过去不同。
ems 最适合用于文本的填充和边距以及文本的字体大小。在 IE 文本缩放的情况下,ems 会根据它调整大小。
百分?在某些情况下,我不使用它们或很少使用它们。