Ich arbeite an einem Foundation 6-Projekt und versuche, es mit smoothState.js arbeiten zu lassen.Getting smoothState.js und Foundation 6 zusammenarbeiten
Ich schaffte es, smoothState selbst zu arbeiten, aber jetzt scheint Foundation gebrochen zu sein. Insbesondere wird die Seite korrekt geladen, wenn Sie sie zum ersten Mal laden oder auf die Schaltfläche zum erneuten Laden klicken. Wenn Sie jedoch auf Verknüpfungen zum Navigieren klicken, wird das Layout möglicherweise beschädigt. Meine Vermutung ist, dass es ist, weil $(document).foundation();
nur ausgeführt wird, wenn die Seite geladen wird.
Ich hatte versucht, allgemeineren Rat für js Plugins wie, Reinitializing page scripts after SmoothState.Js page change folgen, und ich versuchte https://gist.github.com/miguel-perez/476046a42d229251fec3, aber weder gelöst mein Problem. $(document).foundation('reflow');
funktioniert auch nicht. Ich stecke fest!
Es fühlt sich an, als würde ich etwas vermissen, da ich ein Neophyt bin.
Wie auch immer, hier ist das, was mit ich arbeite:
$(document).foundation();
$(function() {
'use strict';
var $page = $('#main'),
options = {
debug: true,
prefetch: true,
cacheLength: 2,
onStart: {
duration: 0, // Duration of our animation, was 250
render: function($container) {
// Add your CSS animation reversing class
$container.addClass('is-exiting');
// Restart your animation
smoothState.restartCSSAnimations();
}
},
onReady: {
duration: 0,
render: function($container, $newContent) {
// Remove your CSS animation reversing class
// $container.removeClass('is-exiting');
// Inject the new content
$container.html($newContent);
}
},
onAfter: function($container) {
$container.removeClass('is-exiting');
console.log('after');
$(document).foundation();
},
},
smoothState = $page.smoothState(options).data('smoothState');
});
Jede Hilfe ist willkommen! Ich habe dies auf der gitHub-Seite von smoothState.js unter Probleme gepostet.
Danke!
EDIT
Ok, also habe ich versucht, ein paar Auszüge aus der Dokumentation Foundation, und ich habe etwas, das halb funktioniert.
Die smoothState.js unten lädt Foundation neu und behebt das Layout, aber das betreffende Plugin, Foundation's Sticky, wird nicht zurückgesetzt (d. H. Wird nicht sticky). Obwohl die Eingabe von $('.sticky').foundation('_calc', true);
in der Konsole das Plug-in zu 100% behebt, wird das Problem nur zur Hälfte durch Hinzufügen der gleichen Zeile zu smoothState.js behoben. Auch keine Fehler.
So nah und doch so weit! Was vermisse ich? :)
// @codekit-prepend "jquery.smoothState.min.js";
$(document).foundation();
$(function() {
'use strict';
var $page = $('#main'),
options = {
debug: true,
prefetch: true,
cacheLength: 4,
onStart: {
duration: 0, // Duration of our animation, was 250
render: function ($container) {
// Add your CSS animation reversing class
$container.addClass('is-exiting');
// Restart your animation
smoothState.restartCSSAnimations();
// alert('end of start');
}
},
onReady: {
duration: 0,
render: function ($container, $newContent) {
$container.html($newContent);
// alert('end of ready');
// console.log('Ready');
}
},
onAfter: function ($container) {
$container.removeClass('is-exiting');
$(document).foundation();
$('.sticky').foundation('_calc', true);
// $('.sticky').foundation('_calc', true);
// alert('end of onAfter');
// console.log('onAfter');
},
},
smoothState = $page.smoothState(options).data('smoothState');
});
LAST EDIT
Hinzufügen $(window).trigger('load');
suggested as a workaround here, scheint zu funktionieren. Kann nicht helfen, aber frage mich, ob es eine bessere Lösung gibt?
Ich finde, dass OnAfter nicht auf 1. Seite laden funktioniert. Wenn Sie auf Aktualisieren klicken, wird es nicht geladen. Gibt es eine Lösung dafür? – iamrobert