根据默认行为,alt
属性在图像渲染之前第一次渲染。我在一个网格中显示 25 个图像,所以它看起来有点尴尬,因为所有alt
属性都首先显示。
alt
是否可以在 Firefox中隐藏属性?
注意: alt
在我的例子中,属性包含动态名称。
根据默认行为,alt
属性在图像渲染之前第一次渲染。我在一个网格中显示 25 个图像,所以它看起来有点尴尬,因为所有alt
属性都首先显示。
alt
是否可以在 Firefox中隐藏属性?
注意: alt
在我的例子中,属性包含动态名称。
在这里尝试了所有其他方法后,我发现这种方法效果最好,它使文本透明,直到图像加载:
.yourClass img {
color: transparent;
}
防止alt
显示属性值的方法是删除该属性。
属性(不是标签)的含义alt
是它指定了一个替代方案,即在不显示图像的情况下替代图像。因此,如果您想在图像尚未加载时隐藏它,您要求的行为与该属性的真正含义相矛盾。
但是,您可以通过设置例如使alt
文本在 Firefox 上不可见(使用通常的 CSS 警告)
img { background: white; color: white; }
在 CSS 中。这意味着alt
在浏览器永远无法获取图像或浏览器已配置为不显示图像的情况下,文本也是不可见的。
从以上所有答案的参考中,我发现最好的方法是使用
img:-moz-loading {
visibility: hidden;
}
假设没有图像,我们使用白色或透明颜色,然后 alt 属性不再使用,因此,如果没有图像,我们需要此属性来显示此处要加载的图像并显示要显示的替代文本。
除了设置为:
img {
background: white;
color: white;
}
我也喜欢禁用 Firefox 的默认图像行为:
img:-moz-loading {
visibility: hidden;
}
老问题,但截至 2020 年,img:-moz-loading {visibility: hidden;}
它不再起作用。
而不是做img {background: white; color: white;}
,我认为这样做更有意义:
img {
color: transparent;
}
这样它就不会弄乱应该具有一定透明度的图像。此外,当您需要为 img 设置背景颜色时,它不会影响少数情况。
对于奖励积分,您可以这样做:
<img src="src.com/src" onerror="this.style.color='black'"/>
如果浏览器无法获取图像,这会将其恢复为正常的 alt 颜色。
当然,添加到每个图像中是很乏味的,但如果您使用的是带有全局<Image/>
组件的 JS 框架,则更容易。
你能把动态名称放在标题属性中吗?您可以尝试黑色背景或黑色背景图像;也许 Firefox 仍然使用黑色文本颜色。也许img { color: white; }
会做?
如果你不介意添加一些额外的东西,这里是:
<img src = "283414_2114217089554_728204_nn.jpg" onload="this.setAttribute('alt','this is the alt of my image');" />
希望对您有所帮助... :))
无需担心 alt 函数,您可以为所有图像提供一个通用类,例如image-to-show
创建一个绝对定位在该图像上的加载 div。因此,当页面加载时,您只显示加载 div,带有加载 gif,如下所示:
// show loading image
$('.loader').show();
加载图像后,您可以隐藏 div 并显示图像。
// main image loaded ?
$('.image-to-show').load(function(){
// hide/remove the loading image
$('.loader').hide();
});
您可以使用特定的图像 ID 进一步增强此代码。另一种更简洁的方法是将data-loading
正在加载的图像设置为 true ,一旦图像被加载,设置$('.image-to-show').data('loading', false)
有多种方法可以解决这个问题,如果您需要进一步说明,请告诉我。
我将从添加这个 CSS 开始,它将隐藏所有带有 alt 文本的图像(不是display: none
因为我们想要撤消它并且我们不知道要撤消什么):
img[alt] {
width: 0;
height: 0;
}
然后在全部加载后显示它(这使用 jQuery):
$(document).ready(function() {
$('img[alt]').on('load', function() {
this.style.width = 'auto';
this.style.height = 'auto';
});
});