だから私は現在、次のようなウェブサイトを持っています:
モバイルでは、コンテンツが次のように折りたたまれます。
それはまさに私が望む方法です。すごい!ただし、大きな画面サイズでもセクションを折りたたむことは望ましくありません。
現在、CSS だけでサイズ変更するとうまく非表示/表示されますが、ウィンドウのサイズを変更してコーヒーの使用を開始すると、すべてがうまくいきません。
問題#1:
折りたたみ可能なコンテンツでページをロードすると、サイズ変更後に折りたたみイベントを停止できますが、その後のサイズ変更後に再度オンにすることはできません。または、表示されているコンテンツから始めて、折りたたまれるまでサイズを変更すると、両方のトランジションが同時に発生したように見え、再び消える前にコンテンツが少しだけ表示されます。
問題#2:
折りたたみ可能になると、ヘッダーをクリックすると、jQuery のスライドダウン/アップ遷移を使用してコンテンツが表示/非表示になりますが、非表示にしてからサイズを変更してウィンドウを大きくすると、コンテンツは非表示のままになります。
私はこれらの両方が非常に単純だと確信していますが、私は文字通り一日中頭を叩いていて、それを理解することはできません:(
ですから、誰かが洞察を持っているか、アドバイスを貸してくれるなら、私は感謝しています。
これは、関連する CSS、Coffeescript、および HTML のコンテンツ セクションを含む JSFiddle です。
そして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()
ありがとう