2016-04-12 5 views
0

ich viele Beispiele für Befestigung eines Elements oben relativ zu dem Fenster gefunden. Wie repariere ich ein Element X Pixel vom unteren Rand des Fensters? Durch einfaches Ändern ‚oben‘ auf ‚unten‘ funktioniert nicht (zum Beispiel, wenn die Höhe des Elements ist mehr als die Fensterhöhe)Verwendung JQuery-Element von der Unterseite des Fensters befestigen

Von oben:

var pixels = 10; 
var $elemPosition = $element.position(); 
var $elementH = $element.height(); 
var $windowH = $(window).height(); 
var $bottom = $element.offset().top + $element.height(); 

if ($(window).scrollTop() + pixels >= $elemPosition.top) { 
    $element.css({ 
     'position': 'fixed', 
     'top': pixels + 'px' 
    }); 
} else { 
    $element.css({ 
     'position': 'relative', 
     'top': '0px' 
    }); 
} 

es gelöst! Lösung kam ich mit:

if (($windowH + $(window).scrollTop() - $bottom - pixels) >= 0) { 
    $element.css({ 
     'position': 'fixed', 
     'top': ($windowH - $element.height() - pixels) + 'px', 
     'width': $eW + 'px', 
     'height': $eH + 'px' 
    }); 
} else { 
    $element.css({ 
     'position': 'relative', 
     'top': '0px' 
    }); 
} 
+0

'bottom' statt' top' vielleicht? –

+0

Ich bin mir ziemlich sicher, dass die Höhe des Elements berücksichtigt werden muss – Patriotec

+0

dann die Höhe des Elements erfassen mit '$ element.height();' und sie den 'bottom' Wert gilt :) –

Antwort

1

Verwenden Sie die CSS bottom Eigenschaft anstelle der top Eigenschaft.

$element.css({ 
    'position': 'fixed', 
    'bottom': pixels + 'px' 
}); 
+0

Dies nicht, vor allem nicht funktioniert, wenn es ein anderes Element mit einer Höhe, die größer als das Element I fixieren will (vielleicht weil das Element im selben Container wie das größere Element ist?) Ich löste das Problem. Danke für die Hilfe – Patriotec

0

Nach Ihre Kommentare und Nachfrage:

zum Beispiel, wenn die Höhe des Elements mehr als die Fensterhöhe ist

Sie will something like this?

JS

$element = $("#element"); 
function setPosition(){ 
    var pixels = 10; 
    var $elementH = $element.height(); 
    var $windowH = $(window).height(); 

    if ($windowH > $elementH) { 
     $element.css({ 
      'position': 'fixed', 
      'bottom': pixels + 'px' 
     }); 
    } else { 
     $element.css({ 
      'position': 'relative', 
      'bottom': '0px' 
     }); 
    } 
} 

$(function(){ 
    setPosition(); 
    $(window).scroll(function(){ 
    setPosition(); 
    }); 
}); 

Wenn Sie versuchen, das height des Elements 700px zum Beispiel zu ändern, werden Sie sehen, dass er relative Position bekommt.

+0

Das funktioniert nicht. Das Element in Ihrer Lösung scrollt nicht und repariert es nicht, es ist immer behoben. Ich habe das Problem gelöst. Siehe oben für die Lösung – Patriotec

+0

Ok, es war ein Missverständnis dann. Ich dachte, du wolltest die Position des Elements abhängig von der Bildlaufleiste des Fensters ändern. –

Verwandte Themen