CSS 的计量单位选择
移动端开发中我们使用 rem 作为基本计量单位,同时将根节点默认字号大小设为 font-size:62.5%,因移动端浏览器默认字号大小为 16px,16*62.5% 刚好为 10px
html {
/* 相当于 10px */
font-size: 62.5%;
}
/* #example 的字体大小为 12px*/
#example {
font-size: 1.2rem
}
/* #example 子节点 div 的字体大小为 14px;宽度为 100px;高度 100px */
#example div {
font-size: 1.4rem;
width: 10rem;
height: 10rem
}
<textarea>
标签的内容字体大小不支持 rem 设置在移动端使用新的 CSS3 样式代替原来在 PC 上的开发习惯
理论上,1个位图像素对应于1个物理像素,图片才能得到完美清晰的展示。
对于高清屏而言,1个位图像素对应于4个物理像素,由于单个位图像素不可以再进一步分割,所以导致图片看起来比较模糊。
对于图片模糊问题,比较好的方案就是用多倍图片(@2x)。
如:一个 200×300(CSS pixel)的 img 标签,对于 dpr=2 的屏幕,用 400×600 的图片,如此一来,位图像素点个数就是原来的4 倍,在高清屏幕下,位图像素点个数就可以跟物理像素点个数形成 1 : 1的比例,图片自然就清晰了。
多倍图的作用是为了使图片在移动端中正常清晰的显示。
叫多倍图的原因就是不同的移动设备屏幕分辨率不同。比如说:二倍图、三倍图、四倍图等,这些就是多倍图。这里介绍一下二倍图,其他的多倍图都是同样的原理。
直接使用普通图片和使用二倍图呈现的图片的清晰度区别。直接使用原图片直接丢到移动端页面的,可以很明显的看出图片的边缘有锯齿状。
进行压缩通过二倍图方式显示的图片,相比之下则清晰了很多。这就是多倍图的效果。
二倍图实质就是使用原先位置大小二倍的图片进行填充,在进行放大后仍以正常清晰度显示。
网页中的图片大部分都是基于像素处理的,当放大时会失真,变得模糊。
可缩放矢量图形(Scalable Vector Graphics,SVG)是一种开放标准的描述矢量图形的语言,它基于XML(可扩展标记语言)的,SVG 矢量图形是可伸缩的,可在任何的分辨率下被高质量地打印,可在图像质量不下降的情况下被放大。
SVG使用标签的方式定义各种图形,外层标签是 <svg>
,viewBox可以定义用来观察SVG视图的一个矩形区域,它的属性主要包括x、y、width、height,用数字表示,每个数字之间用空格或逗号隔开,表示定义一个在左上角(x, y)坐标位置,宽度为width,高度为height的矩形。常用属性如表所示。
属性 | 说明 |
---|---|
width | 用来控制 SVG 视图的宽度 |
height | 用来控制 SVG 视图的高度 |
viewBox | 定义用户视野的位置及大小 |
在 <svg>
标签的内部,可以使用SVG提供的一些预定义的标签来绘制图形,或者绘制文字。常用的内部标签如表所示。
标签名 | 说明 |
---|---|
<rect> | 矩形标签 |
<circle> | 圆形标签 |
<ellipse> | 椭圆形标签 |
<line> | 线段标签 |
<polyline> | 折线标签 |
<polygon> | 多边形标签 |
<path> | 路径标签 |
<text> | 文字标签 |
<tspan> | 类似<span>,用在<text>内部单独设置样 |
SVG 常用的内部标签还可以通过属性来设置样式,常用的属性如表所示。
属性名 | 属性值 | 说明 |
---|---|---|
fill | String | 定义填充颜色以及文字颜色 |
fill-opacity | 0~1之间的浮点数 | 定义填充颜色的透明度 |
stroke | String | 定义描边的颜色 |
stroke-width | 大于0的浮点数 | 定义描边的宽度 |
stroke-opacity | 0~1之间的浮点数 | 定义描边的颜色的透明度 |
opacity | 0~1之间的浮点数 | 定义整个图形元素的透明度 |
transform | translate(x, y) | 平移 |
transform | scale(x, y) | 缩放 |
transform | rotate(angle, [cx, cy]) | 旋转 |
transform | skewX(angel) skewY(angel) | 倾斜 |
<!-- 定义一个圆形 -->
<svg width="100%" height="100%">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="#ddd"/>
</svg>
<!-- 定义一个外部svg -->
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="#ddd" />
</svg>