Skip to content

Latest commit

 

History

History
55 lines (31 loc) · 3.29 KB

text-layout.md

File metadata and controls

55 lines (31 loc) · 3.29 KB

由字体引起的布局问题

我们在移动端或者pc端开发中经常会遇到由字体大小的限制引起的布局问题。

我们先看一张效果,虽然很丑,但能说明问题就行。

效果图

下面我们从两方面来讨论造成这个问题。

我们看到设计图的内容分为左右两列,且各占50%,左边的内容分为标题和描述,标题设计为18号字体,描述的字体为14号字体。这样看起来比较和谐。

但是设计图上的描述内容在实际的设计中是没有换行的。此时若我们将字体调小将严重影响实际的效果,此外有的人会说我们可以调小所有的字体,但是如果在开发中这一块儿是新添加的,作为前端工程师就要修改大量的页面。

有时我们发现字体无法修改再小了,因为不是所有的浏览器都支持字体可以小于12px;在上面的效果图中不明显,我们可以想象一下在图中加加一个背景图标,图标的定位是右下方,我们要的效果是文字不能遮挡图标。这时我们怎么解决。

还有的情况是高分屏的移动设备的字体可以刚好容下这个字体,比如:device-pixel-ratio 为2或者以上的刚好,而device-pixel-rato为1的恰恰不行。

这些情况可以归结为两类:

  1. ui设计的问题

  2. 手机适配的问题

ui设计的问题

最严重的是ui设计的不合格,设计图的整体布局是按照某一设备的尺寸的两倍来设计的。比如iphone6的尺寸为375X667,设计图就是750X1334的尺寸,布局是按照这尺寸来的,但是里面的字体却不是,字体是自己随意定的,这样的设计师只注重效果的好看,而不考虑字体在实际的设备上显示,例如在实际设备上显示14px,那么在效果图上就应该是28px,但设计师为了达到设计美观的目的,会调大或调小这个字体,导致我们前端开发人员字按照此效果图写页面时问题重重。

解决方案:

这种情况只有给设计人员反馈,对效果图进行局部修改。但是往往这种情况沟通很麻烦,反反复复的。

大部分设计师都会遵循开发的标准,将字体的设备显示效果和设计效果按一定的比例设计。但是我们在开发中会遇到设计的效果字体10px的问题,而大部分浏览器都不支持小于10px的字体。这时我们该怎么办。

解决方案:

使用transform中的scale(0.85)字体所在的元素进行缩放,然后用translate()移动元素的位置,因为scale是对元素的缩放中心为元素所在位置的几何中心。

手机适配的问题

因为现在的手机品牌太多,手机的尺寸,手机的device-pixel-ratio不同,要做到对所有手机的适配很难,对于一些特殊的设备的情况我们可以使用媒体查询来解决。

例如下面的代码:

@media only screen and (max-width:310px) and (min-width:300px) {
  html,
  body {
    font-size: 9.375px
  }
}

有些手机的但是有些手机因为device-pixel-ratio过低,而我们的设计稿是依据的时高分辨率的设备设计的,这些的可能会出现布局或字体显示的问题。这时我们就需要使用transform的scale来解决,使用方法同上。