【问题标题】:Art Directed Responsive Images艺术指导的响应式图像
【发布时间】:2016-05-31 16:28:45
【问题描述】:

我正在尝试根据设备和屏幕尺寸更改/艺术指导图像,而不仅仅是更改图像的分辨率。

我正在使用<picture> 元素,当我在桌面上调整浏览器大小时它可以正常工作,但在移动设备上却无法正常工作。

目前的代码如下:

<picture>
  <source media="(min-width: 950px)" srcset="http://phillipsperfections.com/images/PhillipsPerfections_Home.png">
  <img src="http://phillipsperfections.com/images/PhillipsPerfections_Home_500.png" alt=“image”>
</picture>

我了解&lt;picture&gt;并不是所有平台都支持,所以我也尝试了srcset,如下:

<img srcset="http://phillipsperfections.com/images/PhillipsPerfections_Home_500.png 500w, 
             http://phillipsperfections.com/images/PhillipsPerfections_Home.png 950w" 
     sizes="100vw” 
     src="http://phillipsperfections.com/images/PhillipsPerfections_Home_500.png" alt=“image”>

我希望图像始终为 100% 宽度,并在查看 950 像素以下时切换到不同的图像。

我从这里 http://alistapart.com/article/using-responsive-images-now#section3 引用代码,但我错过了什么吗?有人能指出我正确的方向吗?

我的工作站点是http://phillipsperfections.com/。您应该能够查看所有代码的源代码。

非常感谢!

【问题讨论】:

    标签: html image mobile responsive-design srcset


    【解决方案1】:

    因为两个版本包含不同的视觉内容,你确实是“艺术指导”,应该使用&lt;picture&gt; 元素(而不是srcset)在你的图像的两个版本之间切换。

    (如果这两个版本是相同的,相互放大和缩小版本,srcset 将是要走的路)。

    您的&lt;picture&gt; 标记看起来正确;您在哪个移动浏览器中没有看到预期的版本? &lt;picture&gt; 这些天的支持实际上相当不错;这里是a current support matrix

    如果您需要艺术指导以在旧版浏览器中工作,则需要使用 Picturefill - 检查您的网站,看起来您就是这样!但是有一些额外的引号会阻止脚本加载:

    <script src="“http://phillipsperfections.com/js/picturefill.js&quot;" async=""></script>
    

    如果您将其更改为:

    <script src="http://phillipsperfections.com/js/picturefill.js" async></script>
    

    您是否在移动浏览器中看到了之前未向您显示的所需行为?

    【讨论】:

    • 还有!如果您希望图像始终占据视口的 100%,那么 that 的地方就是 CSS。在&lt;picture&gt; 内部的&lt;img&gt; 中添加class="full-width" 或其他任何内容,然后在您的CSS 中添加.full-width { display: block; width: 100%; }
    • 埃里克,非常感谢您的观看!出于某种原因,当我最终查看代码时,我没有看到那些额外的引号。我取出旧行,并粘贴您建议的版本以防万一。还是无济于事!你现在看到额外的东西了吗?我正在 iPhone 5 和 6s 上的 Safari 以及 iPhone 5 上的 Chrome 中进行测试。
    • 好的!所以我现在看不到双引号,但我注意到我的 iPhone 5C 上加载了一些我以前没有注意到的东西 - 你没有 @viewport&lt;meta name="viewport"&gt; 声明。因此,iPhone 以 iOS 默认视口宽度 980px 呈现页面,然后在视觉上将其缩小以适合手机屏幕。将此添加到您的&lt;head&gt;&lt;meta name="viewport" content="width=device-width"&gt;&lt;style&gt;@viewport { width: device-width }&lt;/style&gt;。这会导致预期的行为吗?
    • 太棒了!!那解决了!除了身体没有全宽显示,所以我添加了两个关于比例的注释。现在显示为:&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"&gt;&lt;style&gt;@viewport { width: device-width }&lt;/style&gt;。只剩下一个小问题——如果你水平滚动或缩小,你会看到页面右侧有额外的边距或填充。我添加了overflow-x: hidden;,它可以在桌面上的 Chrome 上运行。但不适用于桌面 Safari,也不适用于 iPhone 5 和 6s Safari 和 Chrome。你知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 2016-01-04
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多