微网站—使用flexible.js实现移动端设备适配

移动端web开发越来越火,同时移动端适配也是一个很让人头疼的事情,你不能让一个同样大小的元素在不同的设备上都显示一样大小。(iphone6和iphone4下大小肯定是应该不一样的,否则用户体验很差)

下面我将以750px的设计稿为例,分析如何制作一个适配多终端的页面。

首先来看最终的效果图:

  • iphone6下
pic1.png
  • iphone4下
pic2.png
你看不同设备上看起来都是和谐的,不同设备,元素的大小都不同。

你所希望的是不是这样的结果呢?这种效果是如何实现的呢?

别急,下面慢慢讲。
  1. 首先,我们得了解以下几个概念:
  • css像素
  • 物理像素
  • devicePixelRatio
  • layout viewport
  • visual viewport
  • ideal viewport

虽然上面列举了很多,但是不要被吓着,其实都很简单的,网上也有非常多的介绍,只要大致了解就可以了。

2.了解我们使用的库flexible.js

  • 手机淘宝从2014年中开始,全面推行flexible设计。什么叫flexible呢?其实flexible就是responsive的低端形态和基础。
  • 手机淘宝用JS来动态写meta标签,手机淘宝的flexible方案是综合运用rem和px两种单位+js设置scale和html字体。
    我们可以在GitHub上找到这个项目,可以通过网上查阅资料了解更多。

3.了解一个sublime text插件,加快我们的开发速度
这个不是必须,也可以自己手动计算。大家可以在我之前写的一篇文章中,了解该插件如何安装使用,真的非常非常非常简单,重要的话说三遍~

4.下面就真正开始主题啦

  • 我所做页面的设计稿是750px的,有图有真相。
pic3.png

你看我没有欺骗你吧~

  • 以顶部为例,介绍如何制作,首先还是看设计稿
pic4.png

通过ps获得顶部的高度,在750设计稿上96px,所以我们要用96/(750/10),得到对应的rem值。

.msg-header{
    position: relative;
    padding: 0 0.4rem;
    height: 1.28rem; //96/(750/10)
    line-height: 1.28rem;
    font-size: 0.48rem;
    text-align: center;
    border: 0.026667rem solid #eaeaea;
}

这样就实现了最终想要的结果,是不是很简单。
5.最后来看一看我们写的html,css,以及最终生成的html

  • html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="flexible.js"></script>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <section class="container">
        <div class="msg-header clearfix">
            <a href="javascript:void(0);" class="baseIcon iconBack fl"></a>
            <span class="c-333">消息</span>
            <a href="javascript:void(0);" class="fr clear">清空全部</a>
        </div>
    </section>

    <section class="container msg-content">
        <div class="each-msg">
            <div class="media-left">
                <span class="baseIcon iconMsg"></span>
            </div>
            <div class="media-right msg-right">
                <h3 class="clearfix title">平台公告 <span class="fr date">2015-10-11</span></h3>
                <p class="desc">2015冬款上新2015冬款上新2015冬款上新</p>
            </div>
        </div>
        <div class="each-msg">
            <div class="media-left">
                <span class="baseIcon iconMsg"></span>
            </div>
            <div class="media-right msg-right">
                <h3 class="clearfix title">平台公告 <span class="fr date">2015-10-11</span></h3>
                <p class="desc">2015冬款上新2015冬款上新2015冬款上新</p>
            </div>
        </div>
    </section>
</body>
</html>
  • css
此处省略初始化的样式
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}
.clearfix{*+height:1%;}
.fl{
  float: left;
}
.fr{
  float: right;
}
.baseIcon{
  display: inline-block;
  background: url(bgIcon.png);
  background-size:6.666667rem 6.666667rem;
}
.msg-header{
  position: relative;
  padding: 0 0.4rem;
  height: 1.28rem;
  line-height: 1.28rem;
  font-size: 0.48rem;
  text-align: center;
  border: 0.026667rem solid #eaeaea;
}
.iconBack{
  position: absolute;
  top: 0.373333rem;
  left:0.373333rem;
  width: 0.346667rem;
  height: 0.533333rem;
  background-position: -1.493333rem -1.066667rem;
}
.msg-header .clear{
  position: absolute;
  right: 0.266667rem;
  font-size: 0.4rem;
  color: #666;
  text-decoration: none;
}
.media-left,
.media-right{
  display: table-cell;
  vertical-align: top;
}
.media-right{
  width: 100%;
  border-bottom: 1px solid #eee;
}
.iconMsg{
  width: 1.253333rem;
  height: 1.253333rem;
  background-position: -2.293333rem 0;
}
.media-left{
  padding: 0.266667rem;
}
.msg-right{
  padding: 0.266667rem;
}
.msg-right .title{
  font-size: 0.426667rem;
  color: #333;
}
.msg-right .date{
  font-size: 0.293333rem;
  color: #999;
  font-weight: normal;
}
.msg-right .desc{
  margin-top: 0.133333rem;
  font-size: 0.346667rem;
  color: #888;
}
  • 页面生成的html,注意flexible帮我们的页面添加了几处修改
pic5.png

好的,微网站—使用flexible.js实现移动端设备适配就介绍到这里,大家可以尝试一下,用过方知其好处。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,725评论 1 92
  • 深入理解傅里叶变换Mar 12, 2017 这原本是我在知乎上对傅立叶变换、拉普拉斯变换、Z变换的联系?为什么要进...
    价值趋势技术派阅读 5,730评论 2 2
  • 不会用代码框,所以看着有些乱套,,,,html部分 <!DOCTYPE html> 迅雷看看 ...
    这就是个帅气的名字阅读 1,525评论 0 0
  • ——阿柴视角 狗儿们都说,流浪这个词很酷。比如流浪羁子、流浪歌手...
    蠢阿柴的菇噜阅读 375评论 0 1
  • 文丨林下生风 昨天,我与儿子和他的小伙伴小扬,还有小扬的奶奶一起去北京青龙湖水上乐园游玩。 七月,闷热如炉,不觉间...
    林下生风阅读 579评论 13 11