如何根据屏幕宽度限制我的 API 响应?
How do I limit my an API response based on screen width?
jQuery(function($) {
var feed = new Instafeed({
get: 'user',
userId: 1094499841,
clientId: '0f6a6d6496d04eecaa5996870bb2af17',
accessToken: '178142608.0f6a6d6.27edbb518cad4d3eadcc7f3ec5995c45',
resolution: 'thumbnail',
{% if screen.width <= 900 %}
limit: 9,
{% else %}
limit: 16,
{% endif %}
sortBy: 'most-recent'
});
feed.run();
});
我想将在手机上拉取的 Instagram 照片限制为 9 张,而在平板电脑或台式机上限制为 16 张。这是在 shopify theme.liquid 文件中完成的。我认为发生的事情是未检测到屏幕宽度,因为现在无论屏幕尺寸如何,它都只能拉出 16 张照片。
我对 Liquid 的经验有限 - screen
even exist?
不过,这应该可以通过 JavaScript 使用 window.innerWidth
或 jQuery 的 .width()
方法来实现。这将为您提供视口的宽度。在移动设备上,这通常也是显示器的宽度(在其当前方向!),但在桌面上,这可能不会反映显示器的总宽度。
jQuery(function($) {
var feed = new Instafeed({
/* */
limit: (window.innerWidth <= 900 ? 9 : 16)
});
feed.run();
});
要获取显示尺寸,您可以尝试 window.screen.width
or window.screen.availWidth
。您通常不应该关心显示器的大小 - 如果您正在为多个设备开发,只有视口的大小对您来说才是真正重要的,因为视口大小将始终对您的设计施加约束。
我会尝试在您的设计中取得平衡,即所有设备看到的信息量大致相同,无论大小/方向如何,因为大多数设备都会调整大小或重新定向。
一个很好的边缘案例示例是 iPad 2,它的分辨率为 1024x768
。如果用户以纵向方式加载您的网站,收到 9 张图片,然后旋转为横向方式,会发生什么情况?
谢谢@Oka 和@DanO。关于屏幕宽度与 window 宽度,您是正确的。桌面上的某些人可能会从一个小的 window 开始,然后将其最大化,在这种情况下,显示的照片会太少。所以我决定用移动媒体查询隐藏 CSS 中的额外照片,我最初出于某种原因避免这样做:
#instafeed a {
position: relative;
float: left;
overflow: hidden;
width: 12.5%;
width: -webkit-calc(100% / 8);
width: calc(100% / 8);
opacity: .75;
filter: alpha(opacity=75);
-webkit-transition: all 200ms ease;
-moz-transition: all 200ms ease;
-ms-transition: all 200ms ease;
-o-transition: all 200ms ease;
transition: all 200ms ease;
}
@media (max-width: 768px){
#instafeed a {
width: -webkit-calc(100% / 3);
width: calc(100% / 3);
&:nth-child(10),&:nth-child(11),&:nth-child(12),&:nth-child(13),&:nth-child(14),&:nth-child(15),&:nth-child(16){
display: none;
}
}
}
jQuery(function($) {
var feed = new Instafeed({
get: 'user',
userId: 1094499841,
clientId: '0f6a6d6496d04eecaa5996870bb2af17',
accessToken: '178142608.0f6a6d6.27edbb518cad4d3eadcc7f3ec5995c45',
resolution: 'thumbnail',
{% if screen.width <= 900 %}
limit: 9,
{% else %}
limit: 16,
{% endif %}
sortBy: 'most-recent'
});
feed.run();
});
我想将在手机上拉取的 Instagram 照片限制为 9 张,而在平板电脑或台式机上限制为 16 张。这是在 shopify theme.liquid 文件中完成的。我认为发生的事情是未检测到屏幕宽度,因为现在无论屏幕尺寸如何,它都只能拉出 16 张照片。
我对 Liquid 的经验有限 - screen
even exist?
不过,这应该可以通过 JavaScript 使用 window.innerWidth
或 jQuery 的 .width()
方法来实现。这将为您提供视口的宽度。在移动设备上,这通常也是显示器的宽度(在其当前方向!),但在桌面上,这可能不会反映显示器的总宽度。
jQuery(function($) {
var feed = new Instafeed({
/* */
limit: (window.innerWidth <= 900 ? 9 : 16)
});
feed.run();
});
要获取显示尺寸,您可以尝试 window.screen.width
or window.screen.availWidth
。您通常不应该关心显示器的大小 - 如果您正在为多个设备开发,只有视口的大小对您来说才是真正重要的,因为视口大小将始终对您的设计施加约束。
我会尝试在您的设计中取得平衡,即所有设备看到的信息量大致相同,无论大小/方向如何,因为大多数设备都会调整大小或重新定向。
一个很好的边缘案例示例是 iPad 2,它的分辨率为 1024x768
。如果用户以纵向方式加载您的网站,收到 9 张图片,然后旋转为横向方式,会发生什么情况?
谢谢@Oka 和@DanO。关于屏幕宽度与 window 宽度,您是正确的。桌面上的某些人可能会从一个小的 window 开始,然后将其最大化,在这种情况下,显示的照片会太少。所以我决定用移动媒体查询隐藏 CSS 中的额外照片,我最初出于某种原因避免这样做:
#instafeed a {
position: relative;
float: left;
overflow: hidden;
width: 12.5%;
width: -webkit-calc(100% / 8);
width: calc(100% / 8);
opacity: .75;
filter: alpha(opacity=75);
-webkit-transition: all 200ms ease;
-moz-transition: all 200ms ease;
-ms-transition: all 200ms ease;
-o-transition: all 200ms ease;
transition: all 200ms ease;
}
@media (max-width: 768px){
#instafeed a {
width: -webkit-calc(100% / 3);
width: calc(100% / 3);
&:nth-child(10),&:nth-child(11),&:nth-child(12),&:nth-child(13),&:nth-child(14),&:nth-child(15),&:nth-child(16){
display: none;
}
}
}