kkapsner
Super Moderator
Bitte.
Könnte man sicherlich machen, aber dann müsste man das komplette CSS des Teils umbauen.könnte man eventuell ein hover mit css anlegen und braucht gar kein js
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Bitte.
Könnte man sicherlich machen, aber dann müsste man das komplette CSS des Teils umbauen.könnte man eventuell ein hover mit css anlegen und braucht gar kein js
$("body").on("mousemove",function(event) {
if (event.pageX < 10) {
// do something
}
});
Das Problem kommt von deinem transform: translate3d(0,500px,0);, da die Elemente dadurch stark nach unten geschoben werden. Um das zu beheben braucht dein .menu ein overflow: hidden;Vielleicht kann man hier und da noch etwas anderes optimieren/besser machen?
Dieser Codefetzen scheint jQuery zu benutzen. Das hast du bei dir aber nicht eingebunden (die Fehlerkonsole hätte dich indirekt darauf hingewiesen) - brauchst du aber auch gar nicht:habe ich meine Funktion wahrscheinlich nicht ganz korrekt eingefügt.
document.body.addEventListener("mousemove",function(event) {
if (event.pageX < 10) {
document.body.classList.add("show-menu");
}
});
Die Fehlerkonsole hatte ich mir sogar auch angeschaut, bin davon aber ehrlich gesagt nicht wirklich schlau geworden. Muss mir das demnächst auch noch im Detail anschauen was darin alles steht.die Fehlerkonsole hätte dich indirekt darauf hingewiesen
HELL YEAH! Wow, jetzt steht auch diese Funktion!!Dieser Codefetzen scheint jQuery zu benutzen. Das hast du bei dir aber nicht eingebunden - brauchst du aber auch gar nicht:
Thanks again! Habe das auch eingefügt, aber da ist immer noch ein kleiner overflow unten. Wenn das durch das transform kommt.... kann man das anders/besser lösen?Das Problem kommt von deinem transform: translate3d(0,500px,0);, da die Elemente dadurch stark nach unten geschoben werden. Um das zu beheben braucht dein .menu ein overflow: hidden;
Ja, kann man. Das liegt daran, dass die Variable isOpen dann den falschen Wert hat. Ich würde mich ja in der Funktion toggleMenu nicht auf eine Variable verlassen, sondern da direkt classie.toggle verwenden:aber kann man trotzdem herausfinden woran dieses komische Verhalten liegt?
function toggleMenu() {
classie.toggle( bodyEl, 'show-menu' );
}
Das liegt daran, dass .menu-wrap ein padding-top und height: 100% hat. Normalerweise zählt das Padding nicht zur Höhe dazu und damit hast du mehr als 100% dargestellte Höhe. Um das zu beheben kannst du z.B. box-sizing: border-box; verwenden.aber da ist immer noch ein kleiner overflow unten.
Ich würde JS möglichst in JS-Dateien packen und diese dann direkt vor dem </body> einbinden. Hat den Vorteil, dass man direkt auf dem DOM arbeiten kann und nicht auf irgendwelche Events warten muss.Ist das so ok? Soll ich das später so lassen oder wäre es besser diese auch in eine separate JS-Datei auszulagern und dieses dann oben oder unten im HTML einzubinden? Soweit ich weiß, werden die Funktionen schneller ausgeführt wenn sie unten eingebunden werden, ist das soweit korrekt?
Was genau meinst Du mit "direkt auf dem DOM arbeiten"? Auch wenn man die Skripte auslagert hat man doch immer noch EventListener, oder nicht?!? Zumindest in meinem main.js habe ich diese EventListener auch. Oder verstehe Dich jetzt hierbei falsch?Ich würde JS möglichst in JS-Dateien packen und diese dann direkt vor dem </body> einbinden. Hat den Vorteil, dass man direkt auf dem DOM arbeiten kann und nicht auf irgendwelche Events warten muss.
Natürlich hat man noch EventListener, aber man muss dann nicht auf onload bzw. DOMReady warten.hat man doch immer noch EventListener, oder nicht?
das .icon-list braucht ein height: 100%, wenn du willst, dass es ganz nach unten geht. Du hast da 95%.Irgendwie ist da aber ein unterer Teil bei der Klasse .menu, wobei ich nicht verstehe woher das kommt.
Was ist denn für dich genau "Fullscreen"? Wenn das Browserfenster den kompletten Bildschirm ausfüllt oder wenn du F11 drückst?wenn das Fenster im Fullscreen ausgelöst wird
Ja richtig, wenn ich das da auf 100% statt 95% setze, dann geht das bis ganz unten. Aber damit wäre das Problem an sich nicht gelöst, sondern nur aus dem Blickfeld geschoben. Guck Dir bitte mal den Screenshot an, da sieht man genau bis wohin die 95% gehen.... aber woher dieser untere Teil her kommt, das ist mir immer noch ein absolutes Rätsel.das .icon-list braucht ein height: 100%, wenn du willst, dass es ganz nach unten geht. Du hast da 95%.
Fullscreen wäre in dem Fall für mich wenn das Browswerfenster den kompletten Bildschirm ausfüllt und nicht bei F11. Das heißt also wenn das Browserfenster nicht komplett vergrößert ist, soll das OffCanvas-Menü auf den Cursor am Rand nicht reagieren.Was ist denn für dich genau "Fullscreen"? Wenn das Browserfenster den kompletten Bildschirm ausfüllt oder wenn du F11 drückst?
Mir ist jetzt nicht ganz klar, was du genau meinst...aber woher dieser untere Teil her kommt, das ist mir immer noch ein absolutes Rätsel.
Dann wird dir die fullscreen-API nicht helfen. Als einzigen Weg sehe ich jetzt, dass du screen.width mit window.innerWidth vergleichst... aber stabil ist das auch nicht wirklich.Fullscreen wäre in dem Fall für mich wenn das Browswerfenster den kompletten Bildschirm ausfüllt und nicht bei F11. Das heißt also wenn das Browserfenster nicht komplett vergrößert ist, soll das OffCanvas-Menü auf den Cursor am Rand nicht reagieren.
Schau Dir bitte mal die beiden Screenshots unten an. Ich probiere die ganze Zeit rum, aber komm da irgendwie nicht hinter.....Mir ist jetzt nicht ganz klar, was du genau meinst...
Die fullscreen-API erkennt also nur das F11-Fullscreen? Hmmm.... warum ist denn der Vergleich nicht wirklich stabil? Wie sieht es aus bei Dual-Monitor-Betrieb? Screen-Width müsste dann doch trotzdem die Weite vom aktuellen Monitor ausgeben wo das Fenster sich gerade befindet, richtig?!? Die Höhe des Browswers ist mir nicht wichtig, es geht nur darum, dass die Weite den gesamten Bildschirm ausfüllt. Wäre der folgende Code dann so korrekt?Dann wird dir die fullscreen-API nicht helfen. Als einzigen Weg sehe ich jetzt, dass du screen.width mit window.innerWidth vergleichst... aber stabil ist das auch nicht wirklich.
if(screen.width === window.innerWidth){
// do this...
}
wenn (click auf #main-wrap && !click auf #contentclose) {mache das}
Dazu hab' ich doch schon geschrieben:Schau Dir bitte mal die beiden Screenshots unten an.
.menu darf ja 95% haben aber nicht .icon-list.das .icon-list braucht ein height: 100%, wenn du willst, dass es ganz nach unten geht. Du hast da 95%.
Naja - ich würde das eher über separater Eventlistener machen. Also auf dem Element, bei dem nicht geschlossen werden soll, einen Eventhandler registrieren, der per EVENT.stopPropagation() verhindert, dass das Event zu dem tieferen Eventlistener kommt.Ist der Ansatz so richtig?
Aaaah! Yes, you're the best! Geht jetzt wie es soll. Hab das jetzt noch nicht hochgeladen auf die Dropbox, aber sie top aus jetzt. So versteh ich jetzt auch wo dieser komische Rest unten her kam......menu darf ja 95% haben aber nicht .icon-list.
Hierzu hab ich gestern und heute eine Menge gegoogelt, Beispiele angeschaut und ausprobiert, aber das klappt nicht so wie es soll.Naja - ich würde das eher über separater Eventlistener machen. Also auf dem Element, bei dem nicht geschlossen werden soll, einen Eventhandler registrieren, der per EVENT.stopPropagation() verhindert, dass das Event zu dem tieferen Eventlistener kommt.
var contentclose = document.getElementById('contentclose');
contentclose.onclick = function() {
var content = document.getElementById('content-wrap');
content.style.display = 'none';
event.stopPropagation();
};
document.getElementById('contentclose').click(function() {
event.stopPropagation();
}
var contentclose = document.getElementById('contentclose');
contentclose.onclick = function(event) {
var content = document.getElementById('content-wrap');
content.style.display = 'none';
event.stopPropagation();
};
Sehr schön - dann ist das Thema damit gelöst?OK, hab es jetzt doch noch zum Laufen gebracht.