Javascript 避免在手机中加载图像
我想避免在屏幕宽度小于1146px时在网站上加载图像。我尝试添加以下CSS规则:Javascript 避免在手机中加载图像,javascript,php,jquery,css,responsive-design,Javascript,Php,Jquery,Css,Responsive Design,我想避免在屏幕宽度小于1146px时在网站上加载图像。我尝试添加以下CSS规则: @media only screen and (max-width: 1146px) { #img_cabecera2 {display: none;} } 当然,图像不会显示,但会加载。我只想在屏幕宽度超过1146px时加载图像。如何实现 我不介意解决方案是否使用CSS、Javascript、jQuery或PHP代码 编辑: 我是这样做到的: template.html: <div id="img_ca
@media only screen and (max-width: 1146px) {
#img_cabecera2 {display: none;}
}
当然,图像不会显示,但会加载。我只想在屏幕宽度超过1146px时加载图像。如何实现
我不介意解决方案是否使用CSS、Javascript、jQuery或PHP代码
编辑:
我是这样做到的:
template.html:
<div id="img_cabecera2">
<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" width="0" height="0" alt="">
</div>
script.js:
$(function(){
/* Set img_cabecera2 size */
function set_src() {
var window_width = $(window).width();
if (window_width < 1147) {
$("#img_cabecera2").css({"display":"none"});
} else {
$("#img_cabecera2 img").attr('width', 300).attr('src', "/public/img/carrete.png").attr('alt', "logo").attr('height','auto');
$("#img_cabecera2").css({"top":"15px","left": "44%","display":"block"});
}
}
set_src();
$(window).resize(function() {
set_src();
});
/* ************************* */
...
$(函数(){
/*设置img_cabecera2尺寸*/
函数集_src(){
var window_width=$(window.width();
如果(窗宽<1147){
$(“img#u cabecera2”).css({“display”:“none”});
}否则{
$(“#img_cabecera2 img”).attr('width',300).attr('src',“/public/img/carrete.png”).attr('alt',“logo”).attr('height',auto');
$(“#img_cabecera2”).css({“top”:“15px”,“left”:“44%”,“display”:“block”});
}
}
set_src();
$(窗口)。调整大小(函数(){
set_src();
});
/* ************************* */
...
将css显示:无;
添加到图像,并添加此jQuery代码:
function set_src() {
var window_width = $(window).width();
if (window_width < 1147) {
$("#img_cabecera2").hide();
} else {
$("#img_cabecera2").attr('src', BIG).show(); // Change to your image link
}
}
$(document).ready(function(){
set_src();
$(window).resize(function() {
set_src();
});
});
如前所述,目前在纯CSS中无法做到这一点。我在过去使用过该脚本,并发现它非常可靠。我使用此脚本:
<!-- This image is a blank, 2*2 image -->
<img src="/images/transparant.png"
data-bigsrc="/images/big.jpg"
data-smallsrc="/images/small.jpg" />
可能很容易知道:显示在
上的图像:无
仍在加载,您只是看不到而已。此外,使用(javascript-)函数删除图像也可能很慢,因为它仍然会触发图像的下载,但由于您删除了
标记,因此不会显示图像,这有点浪费时间和资源:)那么没有javascript就无法获得它。纯css只能删除它。@TomChung-以及如何避免使用javascript和JQuery?if(window.width()<1146)$(“img”).remove();@rynhe这是一个很好的建议,但选择器应该是$(“#img_cabecera2”)@rynhe-无论如何都会加载图像…我想阻止加载图像。我不太喜欢这段代码,因为以下原因:这只适用于1个图像。如果你想要多个图像,你必须复制/粘贴。此外,javascript不应该包含新图像的位置,这不是JS的用途。但重要的是,这是base64代码使用起来很奇怪(imo),没有人会从头记住它。@Martijn base64代码是wierd,我同意,但如果你不想要那种奇怪的代码,你可以用一些1x1图像或你选择的类似图像来替换它。我选择base64代码是因为它几乎和图像一样小,所以它几乎没有impac“在页面加载时间上没有任何错误。@Martijn您对“1图像”的看法完全正确”-问题。我没有想到这一点,因为OP问了一个问题。你的答案更适合这种情况,尽管你可以在我的函数中轻松地应用每个循环。实际上,你可以用背景图像和媒体查询来做。但实际上,不能用纯图像。
<!-- This image is a blank, 2*2 image -->
<img src="/images/transparant.png"
data-bigsrc="/images/big.jpg"
data-smallsrc="/images/small.jpg" />
function getProperImageSource(){
var attr2use = $('body').outerWidth()>480 ? 'data-bigsrc' : 'data-smallsrc';
$('img[data-smallsrc], img[data-bigsrc]').each(function(i){
this.src = this.getAttribute(attr2use);
});
}
$(document).ready({
getProperImageSource(); // load images on init
$(window).on('resize', function(){
getProperImageSource();// again on resize
});
});