在响应式设计中有条件地加载javascript
Conditionally loading javascript in responsive design
我正在尝试做一些我认为应该非常简单的事情,但我还没有找到解决方案的简单解释。
我正在构建一个响应式网站,它首先是移动的(默认宽度为320像素)。在这个小分辨率下,网站是一列,我很乐意允许每个单独的"盒子"扩展或收缩到里面内容的自然高度。
然而,在网站扩展到三列的较大分辨率下,我想添加一个小的Javascript函数来均衡每列框的高度。我所说的功能是这样的:
jQuery(document).ready(function() {
setHeight('#inner-footer .widget-area');
});
var maxHeight = 0;
function setHeight(column) {
//Get all the element with class = col
column = $(column);
//Loop all the column
column.each(function() {
//Store the highest value
if($(this).height() > maxHeight) {
maxHeight = $(this).height();;
}
});
//Set the height
column.height(maxHeight);
}
我找到了不同的方法来做我所说的事情。
- 我可以使用modernizr"load"函数(形式上是yesnope.js)
- 使用包含Nicholas Zakas"isMedia"函数的自定义函数,如本链接中所述媒体特定Javascript或
- 使用中的"screenWidth"变量的自定义javascript函数
var screenWidth = (screen.width < 768) ? true : false;
如真实世界中的媒体查询中所述
由于我对javascript的了解有限,我一直无法真正编写代码,使这些方法中的任何一种都适用于我的脚本。有人能帮我吗?
我对这种方法没有特别的偏好,我只希望它能跨浏览器等工作。我的感觉是modernizr方法是在大多数用例中实现这种功能的最健壮和稳定的方法,但我不完全确定。我从未修改过modernizr,所以我不确定如何编写以及将自定义加载函数放在哪里。
有人对modernizr方法或任何其他解决方案(或其他什么)有想法和特定代码吗?我非常感谢你的帮助。
Modernizr可以使用Modernizr.mq()函数检查媒体查询是否适用
你把你想让它像这个一样匹配的媒体查询传给它
if(Modernizr.mq('all and (min-width: 768px)')) {
// Equal height code here
}
这里,一旦最小宽度超过768px,就会调用函数内部的代码,所以对您来说,是等高代码。
您可以尝试使用matchMedia,这将允许您根据媒体查询加载特定的js。
https://developer.mozilla.org/en/DOM/window.matchMedia
Paul Irish一直致力于一些聚填充
https://github.com/paulirish/matchMedia.js/
希望这能帮助
Ian
- 如何根据条件加载Anguar.js控制器
- 是否有用于加载外部脚本的JavaScript库
- 网页上已有tinymce加载图像列表
- d3.js继续条件加载数据
- Highcahrts有时会加载,但并非总是如此
- 有时会加载旧的 PHP 会话变量
- React.js 中的条件加载
- 在 jqgrid 中,如何按条件加载数据
- Wordpress;Enquire.js-条件加载原理
- 按下按钮,有一个加载弹出窗口,然后更改弹出文本
- 基于UA的动态PHP内容的条件加载
- Require.js是否有用于加载单个依赖项的同步版本
- 以同步方式要求JS条件加载模块
- jQuery的条件加载
- 根据条件加载两个不同的json
- 是否有可能加载更多的页面与javascript内部使用infinity-scroll
- 有条件加载javascript资源
- 有问题加载所有JSON数据到标记层与在For循环
- 有条件加载javascript脚本
- 有条件加载JavaScript文件