Anker erzeugen für Anfänger - Fragen zum jquery scrollto
am 14.07.2012 - 11:45 Uhr in
Hallo,
ich habe für meinen Ortsverein eine Homepage erstellt: www.spd-leipzig-suedwest.de
Jetzt habe ich aber noch ein offenes Problem mit der Verankerung. Ich habe ein fusion-basiertes Theme für meine Zwecke angepasst. (Ich bin Anfänger und habe gerade so etwas CSS angeeignet). Meine Seite hat eine Slideshow und unser Sozi-Logo als ziemlich großen Header. Wann immer ich jetzt einen Menüpunkt aufrufe oder in eine neue Node hineinklicke, lande ich automatisch am Seitenanfang, d.h. ganz oben auf den Header. Das ist natürlich blöd, wenn ich nur eine kleine Auflösung habe und dann den riesen Header sehe.
Wie kann ich eine Verankerung bauen (ich hoffe ich habe den richtigen Begriff), dass ich im Inhaltsfeld lande oder bzw. kurz unter der horizontalen Menüleiste und nicht am Seitenanfang.
Bei der Recherche habe ich jetzt nicht wirklich was sinnvolles gefunden. Ich weiss auch nicht, wie ich das in prägnante Begriffe packe, deswegen dieser Thread. Daher bin ich für eine Anleitung oder den Hinweis auf eine Anleitung sehr dankbar.
LG alaind
- Anmelden oder Registrieren um Kommentare zu schreiben
CSS Anker
am 14.07.2012 - 12:52 Uhr
Das ist das Ziel. Also ganz oben einsetzen
<a name=“top“>Irgendein Element</a>
Das ist der Link unten um nach oben zu springen.
<a href=“#top“>Gehe an den Anfang</a>
Funktioniert nur mit dem "#" Zeichen.
Die prägnanten Begriffe für Google und Co sind: "CSS Anker setzen"
Liebe Grüsse
T.
Hallo Taranis, Danke für die
am 15.07.2012 - 18:17 Uhr
Hallo Taranis,
Danke für die Antwort. Leider bin ich immer noch nicht schlauer.
Wo muss ich das einsetzen? Im page.tpl.php? Das ist doch nicht CSS.l Ich werde auch nicht Autor der Seite sein. Ich möchte nur, dass die Seite bei Menüwechsel oder Anklicken einer neuen Node am Anfang der entsprechenden Node landet und nicht am Seitenanfang.
LG alaind
Hm... Vielleicht ist Anker
am 15.07.2012 - 18:24 Uhr
Hm... Vielleicht ist Anker auch das falsche Wort für mein anliegen.
scrollTo
am 15.07.2012 - 18:51 Uhr
Ich vermute mal, Du möchtest eher das hier haben: http://flesler.blogspot.de/2007/10/jqueryscrollto.html
Zur Einbindung des Skripts über die template.php Deines Themes solltest Du Dir dann noch [api:drupal_add_js:7] anschauen.
Hm... Danke für die Antwort.
am 15.07.2012 - 19:05 Uhr
Hm... Danke für die Antwort. Ich bin mir nicht sicher bei so einer Scroll-Geschichte. Schau dir mal meine Seite an. Vielleicht verstehst du dann, was mein Problem ist. Vielleicht kann ich es nicht so gut in Worte kleiden.
LG alaind
scroll
am 16.07.2012 - 06:59 Uhr
... dass ich im Inhaltsfeld lande oder bzw. kurz unter der horizontalen Menüleiste und nicht am Seitenanfang.
Das ist genau das, was das jQuery-Plugin macht. Es scrollt die Seite automatisch so weit herunter, dass das gewünschte Element oben ist.
Also ungefähr so:
Hm... ich werde es wohl
am 16.07.2012 - 21:00 Uhr
Hm... ich werde es wohl probieren müssen. Gerade die Anpassung des js klingt fürchterlich kompliziert - für einfachere Anregungen bin ich dankbar.
Gruß alaind
Also ich habe jetzt erstmal
am 17.07.2012 - 01:14 Uhr
Also ich habe jetzt erstmal versucht das scrollto über die theme.info ein zu binden.
In JavaScript und jquery kenne ich mich aber überhaupt nicht aus. Wie ist denn:
var $scrollTo = $.scrollTo = function( target, duration, settings ){
$(window).scrollTo( target, duration, settings );
};
$scrollTo.defaults = {
axis:'xy',
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
zu konfigurieren und was triggered das scrollen?
axis müsste für meine Zwecke nur "y" sein und $(window).scrollTo( target, duration, settings ) - im Ziel vielleicht eine Pixel-Anzahl vllt 500 px oder so. Aber wo sage ich jetzt leg los? Und was kommt anstelle von windows. hat damit jemand Erfahrung?
Gruß alaind
alaind schrieb Also ich habe
am 17.07.2012 - 07:46 Uhr
Also ich habe jetzt erstmal versucht das scrollto über die theme.info ein zu binden.
In JavaScript und jquery kenne ich mich aber überhaupt nicht aus. Wie ist denn:
var $scrollTo = $.scrollTo = function( target, duration, settings ){
$(window).scrollTo( target, duration, settings );
};
$scrollTo.defaults = {
axis:'xy',
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
zu konfigurieren und was triggered das scrollen?
axis müsste für meine Zwecke nur "y" sein und $(window).scrollTo( target, duration, settings ) - im Ziel vielleicht eine Pixel-Anzahl vllt 500 px oder so. Aber wo sage ich jetzt leg los? Und was kommt anstelle von windows. hat damit jemand Erfahrung?
Gruß alaind
statt window kannst du jedes blockelement z.b. #page oder .node angeben,...
scroll
am 17.07.2012 - 08:15 Uhr
Ich bin mir sicher, man findet über google auch ein paar Beispiele, wie man Javascript in Drupal einbindet.
Zum Beispiel so (ungetestet):
<?php
drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/js/jquery.scrollto.js');
drupal_add_js("jQuery(document).ready(function () {
$.scrollTo($('#content'), 500, {});
});", array('type' => 'inline', 'scope' => 'footer'));
?>
"window" als Ziel anzugeben bringt rein gar nichts. Da kann man sich das Skript auch sparen.
hier steht wie man jquery in
am 17.07.2012 - 08:25 Uhr
hier steht wie man jquery in drupal 7 einbindet: http://orkjern.com/jquery-not-working-drupal-7-not-function
Hallo, danke aber neben der
am 17.07.2012 - 09:10 Uhr
Hallo, danke
aber neben der oben gegebenen Anleitung auf drupal.org für template.php, war dort auch zu finden, das js über das theme.info einzubinden (Fand ich auch durch eine google-Suche). Das macht wohl Sinn, wenn ich den Effekt auf jeder Seite haben will. Und das möchte ich zunächst.
Wichtig ist es, die Konfiguration des Scriptes zu verstehen und deswegen habe ich weiter gefragt, denn trotz der Hinweise des Scriptors, fällt es mir schwer.
Gruß alaind
Probiert habe ich
am 17.07.2012 - 18:12 Uhr
Probiert habe ich folgendes:
;(function( $ ){
var $scrollTo = $.scrollTo = function( target, duration, settings ){
$('#content').scrollTo( 2000px );
};
$scrollTo.defaults = {
axis:'y',
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
};
Wie gesagt: Beim Laden soll dort automatisch zum Beginn der node hingescrollt werden. Funktioniert natürlich nicht. Wo #Content steht wird angesetzt und 2000 px soll (theoretisch auf y-Achse gescrollt werden. Ich will ja das sozusagen vom Header hinunter gescrollt wird.
Danke für eure Antworten wie gesagt