前端菜鸟请教:怎么让网页直接缩放适配设备的分辨率? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c0427
V2EX    问与答

前端菜鸟请教:怎么让网页直接缩放适配设备的分辨率?

  •  
  •   c0427 2015-02-26 16:02:43 +08:00 5834 次点击
    这是一个创建于 3931 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前天花了一下午和一晚上做了一个关于第87届奥斯卡的专题页面: http://www.antzone.cn/topic-87thOscar.html

    主要用 HTML+CSS 实现,因为 Discuz! 包含 DIY 功能,所以我直接把写好的代码嵌套进了 Discuz! 专题页面,这是背景介绍。现在详述我亟待解决的问题:

    我在向朋友请教的时候,他建议我在 head 中添加以下 meta 信息:

    <meta name="viewport" cOntent="width=device-width, initial-scale=1">

    添加完成后的显示效果是这样的:

    http://i2.tietuku.com/112822d23c8f9e52s.jpg

    而不添加的时候是这样的:

    http://i2.tietuku.com/6e6f20f9406835ebs.jpg

    我想要的是把下图所示的整体直接缩放然后在不同分辨率的设备上直接显示:

    http://i2.tietuku.com/55b46a0a95331905.png

    请前端高手指教,我想在不使用响应式设计的情况下,让这个页面直接缩放,网页中所有的模块位置和大小百分比均保持不变。请问怎么实现?谢谢。

    18 条回复    2015-02-26 23:24:38 +08:00
    c0427
        1
    c0427  
    OP
       2015-02-26 16:08:14 +08:00
    另外建议 V2EX 增加以下新功能:编辑帖子的时候可以重新选择节点。
    Septembers
        2
    Septembers  
       2015-02-26 16:10:29 +08:00
    c0427
        3
    c0427  
    OP
       2015-02-26 16:13:17 +08:00
    @Septembers 感谢回复,文中已说明此方法的不良结果。
    tsingchao
        4
    tsingchao  
       2015-02-26 16:15:11 +08:00
    通过js 获得设备宽度,算出来scale值,在body载入前插入个meta标签
    c0427
        5
    c0427  
    OP
       2015-02-26 16:17:33 +08:00
    @tsingchao 感谢回复,已经尝试使用 meta 解决,但并未得到意想到的效果。
    66beta
        6
    66bta  
       2015-02-26 16:18:40 +08:00
    你这样没意义啊,手机上连字都看不清
    c0427
        7
    c0427  
    OP
       2015-02-26 16:19:54 +08:00
    @66beta 手机可以通过手指进行缩放啊。巴特,主要是为了学习。
    xuxu
        8
    xuxu  
       2015-02-26 16:28:03 +08:00
    chrom开发者工具,搜索旁边有个手机图标样的按钮。
    zenozeng
        9
    zenozeng  
       2015-02-26 16:29:26 +08:00
    用 vw, vh 单位就是了。
    Biwood
        10
    Biwood  
       2015-02-26 16:30:29 +08:00
    viewport就是为这个而诞生的,你不用寻找其他方法了,如果还是乱了,说明你的布局有问题,或者宽度设置不合理
    c0427
        11
    c0427  
    OP
       2015-02-26 16:31:12 +08:00
    @xuxu 不是 user-agent 问题
    c0427
        12
    c0427  
    OP
       2015-02-26 16:32:05 +08:00
    @Biwood 感谢回复。我知道我布局中的 CSS 代码应该有问题,但是我找不到解决方法才来提问的额。
    wwwap
        13
    wwwap  
       2015-02-26 16:37:57 +08:00
    @c0427 因为你CSS的写法导致添加meta信息后,无法全部直接缩放,局部会出现变动。比如,你使用了%,而不是px或者em。
    xiaoz
        14
    xiaoz  
       2015-02-26 16:46:14 +08:00
    使用响应式布局设计,适用所有设备浏览,自动适应屏幕,比如bootstrap
    Biwood
        15
    Biwood  
       2015-02-26 16:54:02 +08:00
    @c0427 那么你应该在添加了viewport的前提下,用电脑上的移动设备模拟工具来调试,找到CSS代码有问题的地方,然后解决问题。
    loveuqian
        16
    loveuqian  
       2015-02-26 17:24:13 +08:00
    应该是你中间内容的div没设置100%吧
    kslr
        17
    kslr  
       2015-02-26 17:33:24 +08:00
    在firefox35 for opensuse 上菜单下方与第一张大图中有空白,并且全屏变得铺满
    给.wp加上!important恢复宽度,.bodycontainer padding-top调整到45px恢复正常。
    rqrq
        18
    rqrq  
       2015-02-26 23:24:38 +08:00
    应该专门做一套手机版的设计,与pc版区分开来(响应式设计略蛋疼)
    手机版整体缩放可以用css3的transform
    下面是设计稿基于iPhone5s(640x1008),而又要在Android设备上显示不留空白的代码(根据需要自己设置要高度还是要宽度),你看下有没有用吧。

    html head:
    <meta name="viewport" cOntent="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no,target-densitydpi=high-dpi">

    css:
    body{ line-height:1; font-family:Arial; width: 640px; -webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transform-origin:left top;-ms-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top; }

    js:
    var iWidth = document.documentElement.clientWidth || document.body.clientWidth;
    var iHeight = document.documentElement.clientHeight || document.body.clientHeight;
    var iScale = 1;
    var iDocH = $('body').height();

    //iScale = iWidth/640;
    iScale = iHeight / 1008;

    $('body').css({'-webkit-transform':'scale('+ iScale +')','-moz-transform':'scale('+ iScale +')','-ms-transform':'scale('+ iScale +')','-o-transform':'scale('+ iScale +')','transform':'scale('+ iScale +')'});
    //iDocH = $('body').height();
    iDocW = $('body').width();

    $('body').parent('html').css({'width':iDocW*iScale+'px','margin':'auto'});
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5608 人在线   最高记录 6679       Select Languag
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:40 PVG 09:40 LAX 17:40 JFK 20:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86