2012-12-20 4 views
5

Hallo Ich frage mich, ob jemand helfen kann, ich versuche, eine reaktionsschnelle Website mit jQuery zu erstellen (zu tun, wie die Zielgruppe auf IE7/8 und css3-mediaqueries ist) .js scheint die jQuery UI zu stören, die ich auch verwende). Ich benutze das folgende Skript, um Breite und Höhe zu erkennen und Stile entsprechend anzuwenden, es funktioniert gut für die Breite, aber nicht die Höhe, es lädt die SMstyle.css und überschreibt dann mit der style.css. Ich versuche JavaScript zu lernen, aber nicht super stark im Moment, ich weiß, dass es einen einfacheren Weg gibt! Jede mögliche Hilfe würde geschätzt ...Ersetzen von Stylesheets mit jQuery abhängig von der Bildschirmgröße

function adjustStyle(width) { 
     width = parseInt(width); 
     if ((width >= 701) && (width < 1200 
     )) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).width()); 
     $(window).resize(function() { 
      adjustStyle($(this).width()); 
     }); 
    }); 

    function adjustStyle(height) { 
     height = parseInt(height); 
     if (height < 800 
     ) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).height()); 
     $(window).resize(function() { 
      adjustStyle($(this).height()); 
     }); 

    }); 
+0

werden Sie die Höhe in PX oder Prozent spezifizieren? Die Höhe funktioniert nicht in Prozent ohne jedes speziell definierte Elternelement. Möglicherweise müssen Sie die Höhe in PX dynamisch festlegen, anstatt ein Stylesheet aufzurufen ... wenn meine Einstellung korrekt ist. – Ben

+0

Danke, Ben Ich rufe es in Pixel – user1919582

Antwort

1

Wenn mit ansprechenden Layouts zu tun, die Sie nicht wirklich kümmern uns um die Höhe. Das ganze Konzept ist, dass, wenn der Inhalt nicht mit der Breite passen kann, er kollabiert (und somit die Höhe erhöht).

EDIT:

Ich glaube, Sie brauchen, da der Umfang von $ $ (document) statt $ (this), verwenden (diese) wird anders sein, wenn Sie es manuell auslösen und, wenn es ausgelöst durch ein Größenänderungsereignis

function adjustStyle() { 
    var width = $(document).width(); 
    var height = $(document).height(); 
    if (((width >= 701) && (width < 1200)) || (height < 800)) { 
     $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
    } else { 
     $("#size-stylesheet").attr("href", "css/style.css"); 
    } 
} 

adjustStyle(); 
$(window).resize(function() { 
    adjustStyle(); 
}); 

Um die verschiedenen Bereiche zu sehen, versuchen Sie dies:

$(function() { 
    console.log('Scope', $(this)); // Scope is DOM-element 
    $(window).resize(function() { 
     console.log('Scope', $(this)); // Scope is Window object. 
    }); 
}); 
+1

Hängt, wen Sie fragen. Einige Leute würden argumentieren, dass vertikale Reaktionsfähigkeit ebenfalls wichtig ist. http://css-tricks.com/responsive-web-above-the-fold/ – Jrod

+0

In diesem Fall ist die Höhe wichtig, da ich den Paralax-Effekt mit localScroll und physischem Scrollen ausgeschaltet habe. Einige der Benutzer für die Website haben Laptop-Bildschirm Abmessungen von 1366x768, so wird Höhe ein wichtiger Faktor – user1919582

+0

Vielen Dank Antila! Es funktioniert perfekt, du hast mich davon abgehalten, mir die Haare auszureißen! – user1919582

1

Überarbeitete (ungetestet)

function adjustStyle(width, height) { 
    width = parseInt(width); 
    height = parseInt(height); 
     if (((width >= 701) && (width < 1200)) || (height < 800)) 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     else 
      $("#size-stylesheet").attr("href", "css/style.css"); 
} 

$(function() { 
    adjustStyle($(this).width(), $(this).height()); 
    $(window).resize(function() { 
     adjustStyle($(this).width(), $(this).height()); 
    }); 
}); 
+0

Awesome, danke! Ich werde es jetzt versuchen – user1919582

+0

nein, es sieht aus wie es lädt die richtige ** SMstyle.css ** für die Höhe, aber dann springt zurück zu ** style.css ** und geht nur zurück zu ** SMstyle.css ** auf einem Fenster Größe ändern ... – user1919582

+0

In diesem Fall sollte es ein anderes Skript, das tun, würde ich auch einen Blick auf Ihre HTML –