• 响应式图片的3种解决方案


    目前已经有几种备选的解决方案解决这些问题

    1. 创建一个新的(HTML)元素
    2. 创建新的图像格式
    3. 使用特定技术手段

    下面我们一一简述各种方案。

    创建新元素(或属性)

    该方法已经在使用了,不过在使用方式上存在一些争议。这些争议主要来自两方面:业界的web开发者和浏览器制造者。web开发者提议创建一个新的picture元素(类似HMTL5中的video这样的元素),该元素中包含其他的图片源,示例代码如下:·

    //code from http://caibaojian.com/3-solutions-for-responsive-image.html
    <picture alt="image description">
      <source src="/path/to/medium-image.png" media="(min- 600px)">
      <source src="/path/to/large-image.png" media="(min- 800px)">
      <img src="/path/to/mobile-image.png" alt="image description">
    </picture>

    其中的img元素是默认情况下显示的图片源。

    在其上面的两个source元素则是在特定媒体查询(media queries)条件下显示的图片——这也是开发者所喜欢的一种解决方案。

    Scott Jehl针对图片元素创建了polyfill项目,就是利用了这种思想,你现在可是就可以使用它了。·

    <span data-picture data-alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia">
            <span data-src="small.jpg"></span>
            <span data-src="medium.jpg"     data-media="(min- 400px)"></span>
            <span data-src="large.jpg"      data-media="(min- 800px)"></span>
            <span data-src="extralarge.jpg" data-media="(min- 1000px)"></span>
    
            <!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. -->
            <noscript>
                <img src="small.jpg" alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia">
            </noscript>
        </span>

    浏览器开发者则是通过给img元素标签增加srcset属性来解决此问题的,功能一样,然而直觉上不好理解。

    //code from http://caibaojian.com/3-solutions-for-responsive-image.html
    <img src="path-to-default-image.jpg" alt=""
      srcset="path-to-default-image.jpg 600w 200h 1x,
                       path-to-another-image.jpg 600w 200h 2x,
                       path-to-a-third-image.jpg 200w 200h">

    以srcset的一个值为例讲解:

    path-to-another-image.jpg 600w 200h 2x

    •   path-to-another-image.jpg 是不言自明的,当符合下述条件时就使用该 图片
    •   依据media queries要求,设备最小尺寸为600w和200h
    •   浏览器有以2x像素密度显示的能力
  • 相关阅读:
    C. Dima and Salad 背包好题
    centos7下查看cup核数
    code码说明
    数据库慢查询
    centos7重启Mysql命令
    many connection errors,更改max_connection_errors的值
    CentOS7 linux下yum安装redis以及使用
    django Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes
    linux命令
    linux命令解压压缩rar文件的详细步骤
  • 原文地址:https://www.cnblogs.com/Javi/p/6681898.html
Copyright © 2020-2023  润新知