所以我目前有一个如下所示的网站:
在移动设备上,内容会折叠起来,看起来像这样:
这正是我想要的。伟大的!但是,我不希望这些部分在更大的屏幕尺寸上仍然可以折叠。
目前它仅使用 CSS 调整大小时很好地隐藏/显示,但是当您调整窗口大小并开始使用 Coffee 时,一切都会出错。
问题 #1:
如果您加载内容可折叠的页面,我可以在调整大小后停止折叠事件,但是在后续调整大小后我永远无法再次打开它。或者,如果您从显示的内容开始并调整大小直到它折叠,这两个过渡似乎会同时触发,并且它会在再次消失之前短暂地显示内容的微光。
问题 #2:
一旦它可折叠,单击标题使用 jQuery slideDown/up 过渡来显示/隐藏内容,但如果你隐藏它然后再次调整大小以使窗口更大,内容将保持隐藏状态。
我敢肯定这两个都很简单,但我几乎整天都在用头撞它,我想不通:(
因此,如果有人有任何见解或可以提供一些建议,我将不胜感激。
这是一个JSFiddle与我相关的 CSS、Coffeescript 和 HTML 的内容部分
以及 Coffeescript 令人不快的一点:
$ = window.jQuery
class Collapse
constructor: (element) ->
@collapseBreakPoint = 400
@element = $(element)
@init()
init: ->
@setCollapseOnClick()
@setOnResize()
setOnResize: ->
$(window).on 'resize', =>
clearTimeout(resizeId)
resizeId = setTimeout(@doneResizing, 500)
doneResizing: =>
if $(window).width() > @collapseBreakPoint
@element.find('.collapse__label').off 'click'
else
@setCollapseOnClick()
setCollapseOnClick: ->
if $(window).width() < @collapseBreakPoint
@element.find('.collapse__label').on 'click', (event) =>
content = $(event.target).closest('[data-collapse]').find('.collapse__content')
unless content.hasClass('open')
content.addClass('open').stop(true, false).slideDown(500)
else
content.removeClass('open').stop(true, false).slideUp(500)
$.fn.collapse = ->
new Collapse @
$.fn.collapse.Constructor = Collapse
$ -> $('[data-collapse]').collapse()
谢谢