Navigation im Googlemail-Style mit jQuery

Wer Googlemail benutzt, kennt sicherlich die Buttons mit dem Grauverlauf und den abgerundeten Ecken, die jedoch ohne eine Grafik auskommen. So etwas kann man relativ schnell selber machen, man muss nur genug HTML-Tags "in den Topf werfen". In diesem Tutorial zeige ich euch, wie ihr das mithilfe von jQuery bewerkstelligen könnt. jQuery deshalb, weil man einfach HTML-Tags hinzufügen kann und der eigentliche Quelltext schön sauber bleibt.

navigation im googlemail-style

Und wenn wir schon beim Thema sind, fangen wir am besten mit dem Quelltext an. Dieser sieht so aus:

HTML
<ul class="navigation">
   <li><a href="index.html">Home</a></li>
   <li><a href="#">About</a></li>
   <li><a href="#">Tutorials</a></li>
   <li><a href="#">Contact</a></li>
</ul>

Eine schlanke, ungeordnete Liste, wie es sich gehört. Allerdings brauchen wir nun ein Element, um die abgerundeten Ecken darzustellen, zwei weitere Elemente um den Grauverlauf zu bilden, und nochmal zwei Elemente um die geprägte Schrift auf den Buttons hinzubekommen.

Summa sumarum müssen also 5 Tags hinzugefügt werden, um den grafischen Effekt hinzubekommen. Deshalb auch die Javascript-Lösung, da bspw. Suchmaschinen-Bots oder Menschen an Screen-Readern nichts mit dieser Fülle an HTML-Elementen anfangen können.

Hier nun die benötigten Javascript-Angaben:

Javascript
$(document).ready(function() {
   var start = "<span class=\"layer_1\"><span class=\"layer_2\"></span><span class=\"layer_3\"></span><span class=\"layer_4\">";
   var middle = "</span><span class=\"layer_5\">";
   var end = "</span></span>";

   var item = new Array();
   $('.navigation li a').each( function() {
      item.push(this.innerHTML);
      for ( i = 0; i < item.length; i++ ) {
         $(this).html(start + item[i] + middle + item[i] + end);
      }
   });
});

Als erstes werden die benötigten Elemente — in diesem Fall <span>-Tags — in Variablen gespeichert. Danach werden die jeweiligen Beschriftungen der Listen-Elemente in einem Array gespeichert. Zum Schluss wird alles zusammengefügt. Nun fehlen nur noch die entsprechenden Styles, um die Buttons fertig zu machen. Diese gestalten sich wie folgt:

CSS
body {
	padding: 100px;
	font: normal 12px Helvetica;
	font-weight: bold;
	background-color: #FFF;
}

.navigation {
	height: 20px;
	padding: 1px 0;
	clear: left;
	list-style: none;
}

.navigation li {
	position: relative;
	width: 82px;
	height: 20px;
	margin: 0 10px 0 0;
	float: left;
	display: inline;
}

a, span {
	display: block;
	text-decoration: none;
}

a:focus {
	outline: none;
}

a:link, a:visited {
	width: 82px;
	height: 20px;
	position: relative;
	background-color: #DDD;
	text-align: center;
	line-height: 20px;
	color: #333;
	z-index: 100;
	overflow: visible;
}

a:hover {
	background-color: #999;
	color: #000;

}

.layer_1 {
	width: 80px;
	height: 20px;
	position: absolute;
	top: -1px;
	left: 1px;
	border: 0;
	border: 1px solid #DDD;
	border-left: 0;
	border-right: 0;
	background-color: #F9F9F9;
	overflow: hidden;
	z-index: 200;
}

a:hover .layer_1 {
	border-top: 1px solid #999;
	border-bottom: 1px solid #999;
}

.layer_2 {
	width: 80px;
	height: 2px;
	position: absolute;
	top: 10px;
	left: 0;
	background-color: #EEE;
	z-index: 300;
}

a:active .layer_2 {
	top: 8px;
	left: 0;
}

.layer_3 {
	width: 80px;
	height: 8px;
	position: absolute;
	top: 12px;
	left: 0;
	background-color: #E3E3E3;
	z-index: 300;
}

a:active .layer_3 {
	top: 0;
	left: 0;
}

.layer_4 {
	width: 80px;
	height: 12px;
	position: absolute;
	top: 5px;
	left: 0;
	line-height: 12px;
	color: #FFF;
	text-align: center;
	z-index: 400;
}

.layer_5 {
	width: 80px;
	height: 12px;
	position: absolute;
	top: 4px;
	left: 0;
	line-height: 12px;
	color: #777;
	text-align: center;
	z-index: 500;
}

a:hover .layer_5 {
	color: #333;
}

Zugegeben, das ist ein ganz schöner Rattenschwanz an CSS-Angaben, aber es lohnt sich. layer_1 ist höher als das <a>-Tag und ragt oben und unten darüber hinaus. Dadurch bekommen wir die abgerundeten Ecken. layer_2 und layer_3 sind leer und erzeugen den Grauverlauf. layer_4 und layer_5 beinhalten die Beschriftung des Buttons und erzeugen den Eindruck geprägter Buchstaben, indem das untere Layer weiße Schrift und einen Offset von einem Pixel in der y-Achse hat.

Das ganze funktioniert im Internet Explorer 6-8, im Firefox, in Opera und in Safari. Andere Browser habe ich nicht getestet, allerdings sollte es mit keinem modernen Browser Probleme geben.

Für Anmerkungen nutzt bitte die Kommentarfunktion, ich freue mich immer über Anregungen und konstruktive Kritik. Solltet ihr noch keine Erfahrungen mit jQuery gemacht haben, empfehle ich euch das Einsteiger-Tutorial in den "Weiterführenden Links".

Weiterführende Links:

Geschrieben am 23. Juni 2009 • 2 Kommentare

Ressourcen-sparende Navigation in WordPress

Normalerweise baut man die Navigation in WordPress mit der Funktion wp_list_pages() (mehr auf WordPress Codex), so dass man im Backend Seiten anlegen kann und diese dynamisch im Frontend erscheinen. Dadurch ist es für Nutzer möglich, jedes beliebige Theme zu laden und trotzdem eine vollständige Navigation zu haben, ohne dass sie im Quelltext rumwerkeln müssen.

Allerdings sind damit eine Menge Abfragen verbunden, die die Ladezeit der Seite erhöhen. Baut man sich ein eigenes Theme und weiß, welche Seiten man anlegen möchte, sollte man ernsthaft darüber nachdenken, auf wp_list_pages() zu verzichten und die Navigation selbst in statischem HTML mithilfe einer ungeordneten Liste zu bauen.

Blöderweise muss man dabei auf das von wp_list_pages() zur Verfügung gestellte Navigation Highlighting verzichten. Dabei wird dem li-Tag des Navigationspunktes der Seite, auf der man sich gerade befindet, die Klasse current_page_item hinzugefügt, so dass man die Möglichkeit hat, diesen Punkt per CSS hervorzuheben.

Hier kommt jedoch die neue WordPress-Funktion body_class() ins Spiel. Diese fügt dem body-Tag u.a. den Name der aktuellen Seite als Klasse hinzu. Der HTML-Teil einer Navigation kann dann bspw. so aussehen:

PHP/HTML
<body <?php body_class() ?>>
  …
  <ul class="navigation">
    <li class="home_nav"><a href="#">Home</a></li>
    <li class="leistungen_nav"><a href="#">Leistungen</a></li>
    <li class="referenzen_nav"><a href="#">Referenzen</a></li>
  </ul>
  …
</body>

Den Pfad zur Seite müsst ihr natürlich ins href-Attribut des a-Tags eintragen. Ansonsten trifft hier der Titel der Seite in der body-Klasse auf die Klasse des zur Seite gehörenden li-Tags. Das kann man sich zunutze machen und zwar mit folgenden CSS-Angaben:

CSS
.home li.home_nav a:link,
.home li.home_nav a:visited,
.leistungen li.leistungen_nav a:link,
.leistungen li.leistungen_nav a:visited,
.referenzen li.referenzen_nav a:link,
.referenzen li.referenzen_nav a:visited {
  color: #FFF;
  background-color: #369;
  text-decoration: underline;
}

.home li.home_nav a:hover,
.leistungen li.leistungen_nav a:hover,
.referenzen li.referenzen_nav a:hover {
  color: #FFF;
  background-color: #666;
  text-decoration: underline;
}

Natürlich muss man noch den Normalzustand der Navigation definieren, aber ansonsten ist das Navigation Highlighting fertig. Alles mit einer(!) dymischen Komponente — der body_class()-Funktion —, also schön schlank.

Weiterführende Links:

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 22. Juni 2009 • Comments Off

What is a Browser?

(direktBrowser)

Bei all dem Engagement bezüglich der Netzsperren und der zunehmenden Politisierung des Internets in den letzten Wochen, darf man eines nicht vergessen: Wir befinden uns in einem Mikrokosmos. Wer einen Blick auf seine Twitter-Timeline wirft oder durch die Blogosphäre streift, für den ist das Thema "Netzsperren" hochpräsent und allgegenwärtig. Für die restliche Bevölkerung, die das ganze von außen betrachtet - so sie denn überhaupt etwas davon mitbekommt -, ergibt sich jedoch ein anderes Bild.

Diese Menschen, die sicherlich die Mehrheit stellen, nehmen das Internet ganz anders wahr. Sie wissen vielleicht nicht, was ein Browser ist und es ist ihnen egal. Wenn sie nach einer Suchanfrage auf einem Blog landen, wissen sie nicht, dass sie sich gerade nicht auf einer herkömmlichen, statischen Website befinden, sondern eben auf einem Blog. Und es ist vollkommen irrelevant für sie. Erscheinen nun im Netz Stopp-Schilder an Stelle der eigentlichen Inhalte, dürfte sie das wenig kümmern. Möglicherweise freuen sie sich sogar darüber, dass der Zugriff auf Kinderpornografie erschwert wird. Erscheint oberflächlich betrachtet ja auch sinnvoll.

Für diesen Teil der Bevölkerung hat das Internet einen ganz anderen Stellenwert, als z.B. für die über 134.000 Unterzeichner der Online-Petition gegen das Gesetz zur Zugangserschwerung zu Kinderpornografie im Internet. Sie werden Artikel zu diesem Thema überblättern/wegklicken, weil es nicht ihr Interessengebiet ist. Das ist bei einem allgegenwärtigen Medium wie dem Internet natürlich höchst bedenklich, aber andererseits auch verständlich: Jede/r hat nun einmal unterschiedliche Interessengebiete.

Diese Menschen trotzdem zu erreichen und Themen wie Zensur auf einer verständlichen Ebene abseits des Nerd- und Geektums zu kommunizieren, wird die große Herausforderung, der sich bspw. die Piraten stellen müssen.

(Vielen Dank an Christoph für den Hinweis auf das Video.)

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 19. Juni 2009 • Comments Off

Hat mein Abgeordneter für Netzsperren gestimmt?

hat mein abgeordneter fuer netzsperren gestimmt?

Das ist eine interessante Frage und Dank Wortfeld dürfte es nicht schwer fallen, eine Antwort zu finden. Man muss nur wissen, wie der/die Abgeordnete des eigenen Wahlkreis heißt, und schon kann die Suche auf beginnen Hat mein Abgeordneter für Netzsperren gestimmt? beginnen.

(via aptgetupdate)

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 19. Juni 2009 • Comments Off

Die Netzsperren haben den Bundestag passiert

Genau genommen sind es nicht die Netzsperren, sondern das Gesetz zur Zugangserschwerung zu Kinderpornografie im Internet, welches heute mit 389 Ja-Stimmen, 128 Nein-Stimmen und 18 Enthaltungen im Bundestag abgesegnet wurde. Möglicherweise schon ab diesem Sommer wird auf Seiten, die auf der Sperrliste stehen, ein Stopp-Schild zu sehen sein, und nicht mehr der eigentliche Inhalt. Eine Löschung des eigentlichen Inhalts wird zwar angestrebt, findet aber nicht zwingend statt.

Dass es soweit gekommen ist, kann ich immer noch nicht wirklich glauben. Den Verantwortlichen in CDU und SPD scheint die Tragweite dieser Entscheidung nicht klar zu sein. Über 130.000 Menschen haben in der erfolgreichsten Online-Petition der deutschen Geschichte ihre Stimme ganz klar gegen dieses Gesetzes-Vorhaben abgegeben. Nicht, weil ihnen das Gesetz nicht gefallen hat, sondern weil sie sich durch dieses Gesetz in ihren Grundrechten berührt sehen.

Diese Menschen wurden ignoriert. Das ist bitter und enttäuschend. Man fühlt sich hilflos, wenn man in einer Demokratie lebt und von der Regierung einfach nicht gehört und ernst genommen wird. Ich kann nur hoffen, dass das nicht ohne Konsequenzen bei der kommenden Bundestagswahl bleibt. Denn wie schreibt René auf Nerdcore so schön:

Und hier nun der Fehler: Diese 500.000 Leute sind Teilnehmer im Netz. Die neuen Produzenten von Tweets, Postings und Content im Netz. Mit einem anderen Wort: Multiplikatoren. Und Sie wollen nicht wirklich 500.000 Multiplikatoren gegen sich haben, oder? Haben sie aber, von jetzt auf ewig. Zum Vergleich: Die alteingesessene FAZ hat eine Auflage von 360.915 Exemplaren.

Hoffen wir, dass er recht behält und das Internet mit seiner Fähigkeit nichts zu vergessen einen Ausgleich zum generell ziemlich miserablen kollektiven Gedächtnis der Gesellschaft bildet. Hier geht es schließlich nicht nur um einen Denkzettel bei der Bundestagswahl. Hier geht es um einen Generationenkonflikt und einen Wandel, der endlich vollzogen werden muss. Es kann nicht länger sein, dass Menschen über das Internet entscheiden, die keine Ahnung davon haben und ignorant und unangemessen an dieses Medium herangehen.

Weiterführende Links:

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 18. Juni 2009 • Comments Off

Fancy Login-/Logout-Button für deinen WordPress-Blog

Hier habe ich ein kleines Tutorial, wie ihr in euren WordPress-Blog einen schicken Login-/Logout-Button einbaut. Dafür nutzen wir die WordPress-eigene Funktion wp_loginout(), die Abfrage is_user_logged_in() und die Text Replacement-Technik mithilfe von CSS

loginout-button - style

Vorweg eine kleine Demo.

Und nun los:

Die Funktion wp_loginout() generiert, je nachdem, ob der User eingeloggt ist oder nicht, automatisch einen Anmelden- bzw. Abmelden-Link. Um mit der Text Replacement-Technik darauf zugreifen zu können, müssen wir jedoch dem umschließenden <p>-Tag eine Klasse abhängig vom User-Status zuweisen. Das ist der Punkt, wo die Abfrage is_user_logged_in() ins Spiel kommt.

Der Code sieht folgendermaßen aus:

PHP/HTML
<?php if ( is_user_logged_in() ) : ?>
   <p class="logout">
<?php else : ?>
   <p class="login">
<?php endif; wp_loginout(); ?>
</p>

Ist der User angemeldet, bekommt das <p>-Tag die Klasse "logout" und der Logout-Button wird angezeigt, ist der User nicht angemeldet, bekommt das <p>-Tag die Klasse "login" und der Login-Button wird angezeigt.

Nun kommen die Styles hinzu, um den schicken Button, anstatt des schnöden Text-Links anzuzeigen:

CSS
.login,
.logout {
	width: 100px;
	height: 60px;
	text-indent: -9999px;
	overflow: hidden;
}

.login a,
.logout a {
	display: block;
	width: auto;
	height: 60px;
	background-image: url('loginout.jpg');
	background-repeat: no-repeat;
}

.login a:link,
.login a:visited { background-position: 0 0 }
.login a:hover { background-position: 0 -60px }
.login a:active { background-position: 0 -120px }

.logout a:link,
.logout a:visited { background-position: -100px 0 }
.logout a:hover { background-position: -100px -60px }
.logout a:active { background-position: -100px -120px }

Per text-indent: -9999px wird der Text-Link nach links ins Abseits verschoben und zurück bleibt die Grafik. Diese sieht wie folgt aus:

loginout - grafik

Per background-position wird je nach Zustand der richtige Button angezeigt. Ihr könnt die Grafik gerne übernehmen, oder einfach was eigenes entwerfen, was besser in euren Blog passt.

Wenn ihr dieses Tutorial hilfreich fandet, würde ich mich freuen, wenn ihr auf Twitter darauf aufmerksam macht oder es beim Bookmark-Service eures Vertrauens speichtert.

Vielen Dank.

Weiterführende Links:

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 18. Juni 2009 • Comments Off

Apple iPhone OS auf einem Mac Pro mit 24"-Multitouch Screen

(direktRiesenIphone)

Apple iPhone OS, das Bestriebssystem des iPhones, läuft auf einem Apple Mac Pro in Kombination mit einem 24"-Multitouch Screen. Vergessen wir mal die Tatsache, dass das iPhone als mobiles Gerät konzipiert ist: Das ist perfekt für Leute mit dicken Fingern. Und für all jene, die gerne mit Apple arbeiten möchten, denen Mac OS X aber zu aufgeblasen ist, könnte das auch eine prima Alternative sein.

(via @nerotunes)

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 14. Juni 2009 • Comments Off

Pale-Album steht zum kostenlosen Download bereit

pale-homepage - album-download

Die Indie-Band Pale aus Aachen zieht sich nach 15 Jahren aus dem Musikgeschäft zurück und bietet als Abschiedsgeschenk ein Album mit 17 Remixen, alternativen Versionen und Single-Editionen zum kostenlosen Download an. Das Ding kommt gerade aus den Boxen, während ich diesen Beitrag schreibe, und macht einen guten Eindruck.

(Download | via Tonspion)

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 14. Juni 2009 • Comments Off

Ursula von der Leyen an der Universität Hannover von Aktivisten überrascht

zensursula-protest-banner - www.zeichne-mit.de

Vorgestern, am 12. Juni 2009, war Ursula von der Leyen aka Ursula von der Laien aka Zensursula aka Zensuschi an der Universität Hannover und hat anlässlich der Verleihung des Sozialpreises des deutschen Studentenwerks in Hannover eine Rede gehalten. Dabei wurde sie von Aktivisten überrascht, die an der Balustrade hinter ihr ein für alle Gäste gut sichtbares Transparent mit obigem Slogan gegen die geplanten Netzsperren aufhängten.

Frau von der Leyen hat sich daraufhin bemüßigt gefühlt, das Thema spontan in ihre Rede einzubauen. Dass sie dabei vom Schutz der Menschenwürde misshandelter und missbrauchter Kinder im Internet redete, deren Entwürdigung jedoch gleichzeitig auf den Gipfel führte, indem sie sie für die Einführung eines Zensurapparats instrumentalisiert, dürfte wohl niemanden mehr überraschen. Die (fast) vollständige Rede, sowie Fotos der Aktion gibt es in den weiterführenden Links.

Weiterführende Links:

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 14. Juni 2009 • Comments Off

Analog · Light Street Telling

analog - light street telling

"Analog" ist ein französisches Fotografie-Projekt, beim dem Straßenszenen mit sog. Light Stencils kombiniert werden. Das ganze frei von Photoshop und – man höre und staune – vollkommen analog. Darüber, wie die Bilder genau gemacht werden, kann ich auch nur spekulieren, aber festgehalten werden kann, dass die Fotos einen schönen Eindruck machen. Und die Idee, nicht mehr mit Licht zu malen, sondern es durch Schablonen zu drücken, gefällt mir auch.

(via Artskills)

  • Twitter
  • Facebook
  • del.icio.us
  • MisterWong.DE
  • Yigg
  • MySpace
  • StumbleUpon
  • Webnews.de
  • LinkArena
  • Technorati
  • Digg

Geschrieben am 12. Juni 2009 • Comments Off