javascript - 如何使 knockout-js 模板 css 媒体查询感知?

标签 javascript jquery media-queries

我正在建立一个我想表现的网站 responsively使用 CSS 媒体查询。 我还使用 Knockout-js 在客户端上制作我的 UI 模板——它真的很快就很好用。

我发现,例如,我需要渲染一些我在 knockout-js 模板中定义的 UI...这会导致一些 DIV 和 SPAN 为每个“列表项”渲染文本。< br/> 当用户缩小屏幕时,布局通过媒体查询响应以“简化”用户界面 - 删除更详细的信息以为最重要的内容腾出空间。

我知道我可以使用 css 将我的标签“分组”为“冗长级别”,然后在屏幕空间减少时使用媒体查询关闭“更高级别的冗长”——这会有效地使某些 HTML 元素不可见。

但是 - 我的模板变得非常复杂,非常快 - 因为仅仅关闭一个 div 可能还不够。在我看来,我可以定义一个模板更有意义,该模板将包含 css-media-query“规则”,因此当用户更改浏览器大小时,模板是实际上交换了。这将导致更简洁的 HTML 模板和更简单的 CSS。

所以,我的问题是 - 有没有人考虑过这个问题,也许通过一些最佳实践解决了它 - 也许我在 KnockoutJs 中缺少一些可以为我解决这个问题的功能?

非常感谢!

最佳答案

充其量,我认为去这里的方法是密切关注 $(window).resize(如果您使用的是 jQuery)并检查初始加载时页面的尺寸并设置一些可观察的基础这会告诉您应该处于哪种响应模式。

类似于:

var layoutType = ko.observable('normal');

$(window).resize(function() {
  if ($(window).width() > 900)
    layoutType('normal')
  else if ($(window).width() > 500)
    layoutType('compact')
  else
    layoutType('compressed')
});

$(document).ready(function() {
  $(window).resize()
})

然后您可以基于该基础可观察对象创建计算可观察对象,该基础可观察对象可以根据布局类型采取适当的操作。

您还可以观察一些 CSS 标记,例如一些元素会以较小的尺寸消失。

关于javascript - 如何使 knockout-js 模板 css 媒体查询感知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9897878/

相关文章:

javascript - ES6 : transfer nested array into array with objects using destructuring

javascript - 如何使用 jQuery/Javascript 获取两个时间值?

javascript - JQuery语法困惑

正方形内的javascript可点击区域

css - 媒体查询视觉错误,意外行为移动响应

css - 考虑到 div 不会根据我的媒体查询输入进行缩放,我做错了什么?

javascript - 数组转换给出字符串而不是数组

javascript - 如何在 Vuex 状态创建中使用函数

javascript - 使用HTML5 History时如何处理页面刷新?

css - 结合匹配的媒体查询?