如何解决手机网站的自适应问题

说起手机网站的开发,最让新手脑大的问题,莫过于网站的自适应了。我当初也被这个问题 困扰得抓耳挠腮,因此总结一些方法希望能帮到大家。

1、使用meta标签:viewport

H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。

viewport 是用户网页的可视区域。翻译为中文可以叫做"视区"。是自适应的必需代码。

手机浏览器是把页面放在一个虚拟的”窗口”(viewport)中,通常这个虚拟的”窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

viewport标签及其属性:

<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

每个属性的详细介绍:
viewport属性介绍

2、使用媒体查询

媒体查询是在css3中为解决自适应问题,提供的解决方法。其原理是,在不同的屏幕尺寸使用不同的css样式。

例如:

@media only screen and (max-width: 640px) {
    body {
        font-size100px;
    }
}

3、尽量使用百分比

对图片或者段落都使用百分比,因为body的默认宽度是屏幕尺寸,都可以根据其父元素,设置百分比。

4.使用css3单位rem

rem是CSS3新增的一个相对单位(root em,根em),指的是相对于HTML根元素的字体大小。默认html的font-size是16px,即1rem=16px。

通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。

聪明的程序猿,看到这一功能,发现了进化的机会。于是通过js动态获取屏幕宽度,设置html的font-size值,即可控制rem单位缩放,即可达到页面整体适应的效果.

js代码:

!(function(win, doc){
    function setFontSize() {
        // 获取window 宽度
        var docEl = doc.documentElement;
        var winWidth = docEl.clientWidth;

       if(winWidth<=640){
        doc.documentElement.style.fontSize = (winWidth / 640) * 100 + 'px' ;}
        else{
            docEl.style.fontSize=100+"px";
            }
    }

    var evt = 'onorientationchange' in win ? 'orientationchange' : 'resize';

    var timer = null;

    win.addEventListener(evt, function () {
        setFontSize();
    }, false);
    win.addEventListener("pageshow", function(e) {
        setFontSize();
    }, false);

    // 初始化
    setFontSize();

}(window, document));

除了上面的方法,类似的方法还有使用响应式框架boostrap,使用em单位等,但就效果和便利程度而言,优先推荐使用rem单位和相应的js,实现移动页面的自适应。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐大帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值