LikeButton的Resize魔法

感谢原文作者:Tat,本文为中文翻译

CSS的相对单位

确认问题所在

当第一代LikeButton推出的时候,我们被一连串responsive的问题玩死了,LikeButton不能在所有device保持美观。因为LikeButton使用

中期的设计

经过无数的调整,最后我们处理不了media queries。幸好我们能发现问题的核心是在CSS。我们发现大部份的media queries,只是调整一下阔度、高度、字体大小、和flex-box设定等,并使用了brute force的方法,请看下图的例子:

从以上CSS得知,我们真正需要的是一个方法,根据屏幕的阔度去调整东西的大小。Netflix网站启发了我们得到了解决方法,当我们resize Netflix网站时,文字等elements会根据屏幕阔度去调整大小。我们查看了styles,终于得到了答案。我们决定重新打造一个LikeButton。

查看Netflix网站

Viewport单位

答案就是vw单位,这是其中一个CSS3相对长度单位,1 vw表示1% viewport的阔度。例如,viewport的阔度是800 px(pixel,像素),1 vw就是8 px。

重新打造LikeButton

计计数

首先用一个细屏幕的device做例子,这样说明比较简单。假设LikeButton最大的阔度等于屏幕的阔度,如320 px,这就是我们px / vw转换的基准。如字体大小是16 px,便等于5 vw(16 / 320 * 100)。除了字体,我们还需要使用这个转换基准到其他所有的地方。幸运的是,我们可以使用SCSS为我们的stylesheet语言,把它变成函数并在任何地方使用。

巨大的LikeButton

限制大小

当完成了转换,我们发现LikeButton在桌面时会显得十分巨大。要解决这个问题,转换函数可以在某些情况下,根据屏幕阔度而改变,我们解决的方法是使用另一个相对单位 — rem。

rem — 相对于root element的字体大小 — w3schools.com

Root element毫无疑问就是,假设字体大小为320 px,我们要设定child element的字体大小为16 px,即等于0.05 rem(16 / 320 * 1rem),所以我们把转换函数变成$value / 320 * 1rem。

假设我们设定media query为1 rem = 100 vw,当屏幕阔度少于或等于320 px时,如280 px,这样字体大小会变为14 px(0.05 * 100 vw = 0.05 * 280 px)。如我们要设定一个80 px的avatar图象,当屏幕阔度大于320 px时,使用那个方程式,我们可以计算出图象为0.25 rem = 80 px当屏幕阔度是280 px,图象便会缩至70 px。

最大阔度的LikeButton

总结

有了viewport单位,我们可以根据屏幕尺寸,调整element的大小,并使用rem去限制大小,这样,也会有更佳的兼容性。但在以下情况可能会出现问题:

​有其他elements可能也会用到rem,但可以使用多个转换函数去解决。

​Responsive element是与屏幕阔度无关的。

当responsive element少于屏幕阔度30%时,文字会变得太小而难于阅读,这可加media queries去解决。

最后给大家一个小贴士,遇到问题时,可以看看其他网站偷师,这时一个好习惯,说不定重要关头可救你一命。

以下方式关注我们

官网:https://like.co/

Medium:medium.com/likecoin/zh/

Facebook:fb.com/LikeCoin.Foundation,fb.com/groups/likecoin

电报群:t.me/likecoin

Twitter:twitter.com/likecoin_fdn

Youtube:youtube.com/c/LikeCoin

Github:github.com/likecoin

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容