V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Can I use?
http://caniuse.com/
Less
http://lesscss.org
Cool Libraries
Bootstrap from Twitter
Jetstrap
tension
V2EX  ›  CSS

有没人聊一下Retina 下 网页如何制作?

  •  
  •   tension · 2012-08-17 00:15:53 +08:00 · 6931 次点击
    这是一个创建于 4507 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前找到个办法

    就是把所有的图片放大一倍
    以前100x100 现在200x200 然后利用 background-size: 100px 100px; 来缩放

    但是图片大一倍,也就意味着 存储空间大了一倍,当然占的流量也多了,

    还有一个就是 LOGO神马的 用AI制作,然后 不变大小,输出SVG格式

    比如 http://www.elinkhost.com/logo.svg

    这样的 跟普通图片一样调用即可!
    34 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2012-08-17 00:20:23 +08:00
    Logo 的这个思路不错,感谢分享。
    Sivan
        2
    Sivan  
       2012-08-17 00:26:00 +08:00
    先用 media query 判断是否为视网膜屏幕,然后给元素设置等比高清的背景图片以及 background-size 设置到 cover 或 contain 就可以了。

    基本就是设计师像 iOS 程序那样出一套 @2x 素材,然后再在原 css 末尾添加上 media query 代码就 OK~
    tension
        3
    tension  
    OP
       2012-08-17 00:27:09 +08:00
    @Sivan media query 只能用webkit... Firefox 怎么办!!!!
    Sivan
        4
    Sivan  
       2012-08-17 00:28:37 +08:00
    <img /> 兼容视网膜途径比较多,基本都需要借助 js 而且代码会变的有点累赘,也有通过 CSS 替换的。

    总体来说,网站自身的部分兼容视网膜倒还不是太麻烦。用户上传图片、文章图片等就蛋疼了。
    Sivan
        5
    Sivan  
       2012-08-17 00:29:09 +08:00   ❤️ 1
    @tension 都支持的啊,ie 也支持(低版本用 js)。
    tension
        6
    tension  
    OP
       2012-08-17 00:29:27 +08:00
    @Livid 用AI储存为 SVG 设置如下,我设置了好多次,才输出对的

    heymi
        7
    heymi  
       2012-08-17 00:31:34 +08:00
    怎么说呢,SVG输出的效果不是很好,差很多。
    tension
        8
    tension  
    OP
       2012-08-17 00:33:41 +08:00
    SVG:

    PNG 缩小
    tension
        9
    tension  
    OP
       2012-08-17 00:35:27 +08:00
    图片放大 会发现 SVG的边缘 还是有锯齿的...

    而PNG缩小到1倍效果后 明显没有
    tension
        10
    tension  
    OP
       2012-08-17 12:59:05 +08:00
    看来V2EX 前端还是不够多!
    keakon
        11
    keakon  
       2012-08-17 14:51:00 +08:00
    直接设置图片的长宽为原始的一半也行:
    http://www.keakon.net/article/94200

    可以在加载图片时用JS判断devicePixelRatio,然后找到retina图片的路径(例如加上@2x),在图片下载完成后缩小长宽并替换低分辨率图片。
    tension
        12
    tension  
    OP
       2012-08-17 14:54:46 +08:00
    @keakon 你那个 适合 <img src=**** alt="" />

    不适合 CSS啊!
    Mak
        13
    Mak  
       2012-08-17 15:02:02 +08:00
    Los
        14
    Los  
       2012-08-17 15:22:13 +08:00
    @tension 一个更残酷的情况,Retina版本在存储空间跟流量消耗上应该是非Retina版本的4倍而不是1倍,图片长和宽都增加为原来的2倍,图像面积就是原来的4倍,所以大小应该是之前的4倍的(图片压缩算法没研究过,不知道大图跟小图的压缩率差别大不大,但大小图存储空间比应该接近4倍左右)。
    tension
        15
    tension  
    OP
       2012-08-17 15:30:22 +08:00
    @Mak 嗷嗷写的..不错..
    他也说了 还是图片x2是最好的方案!
    keakon
        16
    keakon  
       2012-08-17 15:54:23 +08:00
    @tension 最重要的一点是css没有js灵活。你不可能为每张图片(含未来新增的)写一个css规则,但是一个js就能处理所有图片。
    tension
        17
    tension  
    OP
       2012-08-17 16:00:40 +08:00   ❤️ 1
    @keakon 是的...

    所以我现在的方案是直接把所有图片放大一倍,然后缩小
    yundanfengqing
        18
    yundanfengqing  
       2012-08-17 16:45:23 +08:00
    弱弱的说一句 尺寸不变 提高分辨率行不行的?
    ghbjy1128
        19
    ghbjy1128  
       2012-08-17 17:04:16 +08:00
    用户基数太低,无视之。
    rongbin
        20
    rongbin  
       2012-08-17 17:07:42 +08:00
    @tension 请问,你的系统所使用的字体有变更过吗? 这也太清晰了吧。 同样10.8,我的不是retina,用的13 pro 101,你的看起来太舒服了。
    tension
        21
    tension  
    OP
       2012-08-17 17:25:11 +08:00
    @rongbin 没有哦...
    @yundanfengqing 我试过调整DPI 貌似没用...
    Los
        22
    Los  
       2012-08-17 17:26:51 +08:00
    刚看到的消息
    Safari与Chrome浏览器开始支持高分辨率的CSS代码
    http://cnbeta.com/articles/201973.htm
    tension
        23
    tension  
    OP
       2012-08-17 17:55:43 +08:00
    @Los 这个到是不错!
    hzlzh
        25
    hzlzh  
       2012-08-21 13:33:29 +08:00
    个人觉得 @2x 是最好的方案,理想情况下调用两个不同的script.png即可。相比没有做retina优化之前,只多了一条http请求和一段css media
    Thruth
        26
    Thruth  
       2012-08-28 15:43:38 +08:00
    1. SVG 方案不具有部署上的可扩展性质:
    a)提供方位图转换生成SVG后缩放各种失真 b)SVG 各种profile支持各个版本浏览器实现不一 c)客户端SVG作图有性能需求,即便有硬件加速,在 SVG 密集的情况下低能设备依然会出现响应延迟等现象(如低端 Android 手机)。
    2. media query 已经被收入 w3c CSS 标准,webkit 事实实现。考虑到大多 Retina 硬件都有 webkit 内核浏览器,Fx/IE 等他们跟上就好。media query + 2x 是推荐实践。
    X_Del
        27
    X_Del  
       2012-08-28 16:22:48 +08:00
    @tension SVG 为毛会有锯齿?不是矢量吗(非 Retina 屏亲测无锯齿)?
    qdvictory
        28
    qdvictory  
       2012-08-28 16:29:39 +08:00
    bhuztez
        29
    bhuztez  
       2012-08-28 17:06:30 +08:00
    @Thruth media query虽然是标准,但那个device-pixel-ratio是苹果独家的吧
    Thruth
        30
    Thruth  
       2012-08-28 17:44:47 +08:00
    @bhuztez -webkit-device-pixel-ratio 是 webkit 搞出来的私有属性,应该是 5/6 年前就有了。CSSWG 貌似对这个属性不感冒,而在 CSS media query 中用 resolution 解决这个问题。所以对于非 webkit 浏览器来说,device-pixel-ratio 的支持都是可选的(有的支持有的没有,毕竟不是标准规定)。此时可用 96 dpi x ratio 得到 resolution 取值。

    比如 "-webkit-min-device-pixel-ratio: 1.5;" 在其他浏览器就是"min-resolution: 144 dpi;"。为了取消 resolution 计算,CSSWG 定义了 dppx 这个单位,所以将来可以直接写成:"min-resolution: 1.5dppx"。
    tension
        31
    tension  
    OP
       2012-08-28 20:16:52 +08:00
    @qdvictory header {

    background: -webkit-image-set( url(images/header.jpg) 1x,

    url(images/header_2x.jpg) 2x);

    height: 150px; /* height in CSS pixels */

    width: 800px; /* width in CSS pixels */

    }

    这个很喜欢!!!
    Kai
        32
    Kai  
    MOD
       2012-08-30 03:00:28 +08:00
    今天更新网站 (http://chnlaws.com) 试了试楼上同学们提出的方法。最后还是用了 @SamZeng 给出的 Smashing Magazine 那篇文章里面的:

    @media only screen and (-webkit-min-device-pixel-ratio: 1.5),
    only screen and (-moz-min-device-pixel-ratio: 1.5),
    only screen and (-o-min-device-pixel-ratio: 3/2),
    only screen and (min-device-pixel-ratio: 1.5) {
    .block_to_2x {
    background-image: url(block_image_2x.png);
    }
    }

    另外发现,Icon Composer 做出来的 favicon 没法正确识别?最后还是拿一张 32x32 的 favicon.png 代替了 :(
    Thruth
        33
    Thruth  
       2012-08-31 21:42:01 +08:00
    FYI. 今天W3C刚发布了Responsive Image Extension 标准草案
    http://dvcs.w3.org/hg/html-proposals/raw-file/tip/responsive-images/responsive-images.html

    当然这是来自HTMLWG的,于是你懂得。。。
    smallcolor
        34
    smallcolor  
       2012-09-21 14:25:02 +08:00
    我要挖个坟。
    @Livid 既然 V2EX Logo 已经是高清版本了,为什么不把搜索框也处理一下呢?
    http://d.pr/i/xGjn
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1014 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 20:12 · PVG 04:12 · LAX 12:12 · JFK 15:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.