- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想完成一项简单的任务。
我在可变宽度容器中有一个图像。
容器的宽度可以为 300、400、700 或 900 像素。这是通过媒体查询完成的图像应占据该容器的所有宽度。所以它也将是 300、400、700 或 900 像素宽。对于所有宽度值,图像应该有不同的来源。所以我可以在手机上提供较小的图像。
我认为这可以通过 img
元素的 srcset
属性来完成,也许在 sizes
属性的帮助下。宽度是这样的
<img src="http://dummyimage.com/300x200/abc/000"
alt="dummy"
srcset="
http://dummyimage.com/900x200/abc/000 900w,
http://dummyimage.com/700x200/abc/000 700w,
http://dummyimage.com/400x200/abc/000 400w,
http://dummyimage.com/300x200/abc/000 300w
"
/>
但它不是那样工作的,因为浏览器根据显示端口的宽度而不是图像本身的宽度来选择图像。
使用来自 http://scottjehl.github.io/picturefill/ 的 picturefill polyfill 的示例: http://codepen.io/HerrSerker/pen/itBJy .这不起作用,因为它将拍摄下一个尺寸的图像。
我当然可以考虑到这一点并将我的 srcset 更改为此
srcset="
http://dummyimage.com/900x200/abc/000 999999w,
http://dummyimage.com/700x200/abc/000 900w,
http://dummyimage.com/400x200/abc/000 700w,
http://dummyimage.com/300x200/abc/000 400w
"
这将在桌面上运行,但在 Retina 显示器上失败,因为此处考虑了设备像素比,但与媒体查询的方式不同。而且它没有用,因为图像应该知道视口(viewport)的宽度并且与编译时的宽度相同?决不。图像 我在网格系统中使用图像。如果我在桌面设备上的 3 列网格和智能手机上的 1 列网格中,图像具有不同的宽度。图像不应该负责计算宽度和视口(viewport)宽度的比率。
我对 sizes
属性也没有任何好感(这里没有例子)。原因同上。在 sizes attibute 中,我说根据媒体查询,我的图像应该宽多少视口(viewport)宽度。这太离谱了。图像应该怎么知道?
所以我想到了这个解决方案。我设置了一个 data-srcset
属性,其语法与 srcset 属性本身相同,但使用自定义 JavaScript 编程。此处示例:http://codepen.io/HerrSerker/pen/tCqJI
jQuery(function($){
var reg = /[\s\r\n]*(.*?)[\s\r\n]+([^\s\r\n]+w)[\s\r\n]*(,|$)/g;
var regw = /(.*)w/;
var sets, $set, set, myMatch, i, w, that, last;
var checkData = function() {
$('img[data-srcset]').each(function() {
that = $(this);
$set = that.data('srcset');
sets = [];
while(myMatch = reg.exec($set)) {
set = {};
set.src = myMatch[1];
set.w = (myMatch[2].match(regw))[1];
sets[set.w] = set;
}
w = that.width();
last = 0;
for (i in sets) {
last = i;
if (w <= i) {
that.attr('src', sets[i].src);
return;
}
}
that.attr('src', sets[last].src);
});
};
checkData();
$(window).on('resize', checkData);
});
这行得通,但感觉不对。但也许不是,正如规范所说,响应式图像只能按照它的方式运行。但我觉得这是错误的方式。 90% 的响应式图像用例不适用于该规范。
我错了吗?我不是以定义的方式使用 srcset 吗?我是否错误地理解了规范? W3C 和 Responsive Images Community Group 是否以这种脱离现实的方式思考?
最佳答案
小图是大图的缩小版吗?或者他们被裁剪(艺术指导)?如果是后者,你应该使用图片
和source media
。
浏览器只使用视口(viewport)来决定下载哪个图像的原因是,当浏览器想要下载图像时,它是唯一可用的。 CSS(可能)尚未下载。所以如果你使用srcset
+sizes
,你必须在sizes
中重复断点和图像宽度。
关于css - 为什么响应式图像如此脱离(我的)现实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156301/
我正在尝试创建一个函数,以便您可以循环遍历一个包含很多对象的大对象,并按值找到特定的方法。我想在使用break语句找到值时停止函数中的循环。这是我的代码。 let fake_window = {
所以,我有以下代码: var name = prompt("What's your name?"); var greeting = "Hello " + name + " :D"; console.
有时,即使是最简单的事情也似乎是不可能的……看看这个,如果您明白我没有看到的东西。 >> LINK 一个 div(绿色),使用类分为两侧 L 和 R。 出于某种原因,类“left-content,ri
许多框架试图从 HTML(自定义标签、JSF 组件系统)中抽象出来,以便更轻松地处理特定的鱼缸。 你们有没有使用过将类似概念应用于 CSS 的东西?可以为您带来一系列跨浏览器魔法的东西,支持类似变量(
我有一个版本历史记录,我正在尝试在其上运行 gradle 构建,并在我的 bash 脚本中运行 while read -r version do git checkout $version
这个问题在这里已经有了答案: Android & RoboGuice - Inject views on Fragment? (1 个回答) 关闭 8 年前。 我有一个 roboactivity,我
我的问题是是否有一个 rails 等同于“脱离” Controller 操作,例如 def new if some_confirmation do_stuff
我厌倦了 此客户端太旧,无法使用工作副本 每当我在使用比石器时代更新的 svn 客户端修复我的工作副本后回到 Eclipse 时。 有没有办法让 Subclipse 使用当前的 Subversion
代码笔示例:http://codepen.io/mattrice/full/peXeqd/ 我想要的是 SVG 完全包含在父级的给定宽度内(本例为 6 列,但可以是任何其他任意宽度的网格元素)。 此示
我正在构建一个带有 TextView、ScrollView 和 LinearLayout 的 Android 应用程序,我想使用 Java 将一个 TextView 和一个 ImageView 添加到
我想在进行一些测试后分析我的 iPhone 应用程序中的数据,这些数据位于 SQLite 数据库中。有什么办法可以将它从 iPhone 复制回我的笔记本电脑吗?我不知道有任何机制允许我进行文件系统样式
我在 div 中有一个(带边框)。这在 Firefox 和 IE 10 上看起来不错(不确定旧版本的 IE)。但是,有时 IE 会激活兼容模式,然后表单(输入框和提交按钮)会脱离 div。是否有一些
内的 anchor 脱离
这是我的html文件 My text content is here...... lINK1lINK2 这是CSS div { width:960px; border:1px so
有人可以指出我研究如何防止用户使用 Ctrl+Z、Ctrl+C? 最佳答案 如果你用 PCNTL 编译了 php (进程控制)并且未运行 Windows,您可以使用 pcntl_signal() .
我是一名优秀的程序员,十分优秀!