我认为你想要的是当点击时有锚标签调用正确的灯箱,因为样式sample_img响应css将按预期工作,不需要花哨的东西,但如果我是正确的,那么你在我看来有3个选择,你可以像你说的那样做,并使用媒体查询隐藏.desktop链接,因为图像完全相同,用户不必再次加载该图像,并且设置为display:none
用户浏览器获胜不会呈现这个元素,所以唯一的缺点是你会有一个混乱的HTML,它会感觉泥泞,但在我看来没有其他问题。
另一个选择是使用像这样的js代码,但是由于通常灯箱代码会有一个方法来添加事件处理程序给他们找到的每个链接(使用合适的格式,可以说它是rel),您将拥有在更改链接rel attr后手动触发该事件,或者在发生这种情况之前执行adaptLinks()
,在这种情况下,在Windows上调整大小将不起作用,除非您按照之前所说的操作。为此,您可以检查如何在Lightbox页面上执行该操作,他们可以列出该方法。
这里是代码
var adaptLinks = (function(){
var $winHeight = $(window).height();
var $lightBoxLinks = $('a.lightBox');
return function() {
var isPrettyPhoto = false;
if($winHeight < 1000){
$lightBoxLinks
.removeClass('desktop')
.addClass('mobile')
.attr('rel','external');
} else {
$lightBoxLinks
.removeClass('mobile')
.addClass('desktop')
.attr('rel','prettyPhoto');
isPrettyPhoto = true;
}
// Call the link processing method of the lightbox
if(isPrettyPhoto) {
$lightBoxLinks.prettyPhoto();
} else {
// photoSwipe method
}
}
})();
$(window).resize(adaptLinks());
而且锡尔选项,是使用既为桌面和移动工作的灯箱,我认为这是做正确的方式。
祝你好运。
您应该考虑在服务器端确定mobile vs pc,并且只将正确的图像发送给客户端。加载时间会更多一些(假设移动和桌面图像是不同的,如果它们是相同的,加载时间将类似于HTML大小不那么显着)。 – JCOC611
'mobile'和'desktop'加载2套不同的图片吗?如果他们加载的是同一组图像,那么'display:none'就可以正常工作,而不会影响性能。 –
[这可能是有趣的](http://blog.cloudfour.com/css-media-query-for-mobile-is-fools-gold/)TLDR:这两个图像将被下载。 – steveax