
Pull Quotes sind wunderbar. Sie können wirklich die Aufmerksamkeit der Leser fesseln und sind eine großartige Gelegenheit für coole typografische Arbeit. In einem Blog sind Pull Quotes jedoch besonders schwierig zu "ziehen" (verstehen Sie?!).
Das liegt an RSS. Auf Ihrer eigenen Website können Sie ein Pullquote mit beliebiger Markup-Art erstellen. Vielleicht ein Absatz-Tag mit der Klasse „pullquote“. Aber wenn das an RSS-Reader gesendet wird, wird dieser Tag entweder entfernt oder ignoriert.
So könnte das Markup für ein traditionelles Pullquote aussehen
<p>Whether I shall turn out to be the hero of my own
life, or whether that station will be held by anybody else, these pages
must show. To begin my life with the beginning of my life, I record that
I was born (as I have been informed and believe) on a Friday, at twelve
o'clock at night. It was remarked that the clock began to strike, and I
began to cry, simultaneously.</p>
<p class="pullquote">It was remarked that the clock began to strike,
and I began to cry, simultaneously.</p>
Da Ihre Klasse in einem RSS-Reader keine Bedeutung hat, wird es für jemanden, der es auf diese Weise liest, so aussehen, als wäre der letzte Satz wiederholt worden. *Umständlich*.
Wir können dieses Problem lösen und unser Markup mit jQuery noch sauberer gestalten. (Oh jQuery, gibt es etwas, das du nicht kannst? Küsse.) Hier ist unser neues, saubereres Markup
<p>Whether I shall turn out to be the hero of my own
life, or whether that station will be held by anybody else, these pages
must show. To begin my life with the beginning of my life, I record that
I was born (as I have been informed and believe) on a Friday, at twelve
o'clock at night. <span class="pullquote">It was remarked that the
clock began to strike, and I began to cry, simultaneously.</span></p>
Der Unterschied besteht darin, dass wir statt den Abschnitt zu wiederholen, der als Pullquote verwendet werden soll, diesen Abschnitt nur in ein Span mit der Klasse „pullquote“ einschließen. Dieses Span ist der Haken, mit dem wir mit jQuery arbeiten werden.
Wir müssen jQuery auf unserer Seite einbinden und dann ein einfaches JavaScript schreiben, um nach den Zitaten zu suchen
<script src="js/jquery.js"></script>
<script>
$(function() {
$('span.pullquote).each(function(index) {
... do something ...
});
});
</script>
Der obige Code wartet, bis der DOM bereit ist, und durchsucht dann die gesamte Seite nach Spans mit der Klasse „pullquote“. Jetzt müssen wir die Magie hinzufügen. Zuerst finden wir das übergeordnete Element des Spans, das ist der Absatz, in dem es sich befindet, und weisen es einer Variable zu, da wir es zweimal referenzieren werden (schneller). Dann **KLONEN** wir das Span und fügen es dem selben Absatz voran. Natürlich fügen wir unsere eigene Klasse hinzu, die wir als Haken zum Stylen verwenden können.
$(function() {
$('span.pullquote).each(function() {
var $parentParagraph = $(this).parent('p');
$parentParagraph.css('position', 'relative');
$(this).clone()
.addClass('pulledquote)
.prependTo($parentParagraph);
});
});
Dies erreicht genau das, was wir brauchen: ein dupliziertes Element (aber nur, wenn es auf der Website selbst angezeigt wird) mit einer eindeutigen Klasse zum Stylen. Hier ist ein Beispiel-CSS für das „herausgezogene“ Zitat
.pulledquote {
display: block;
float: right;
padding: 0 0 0 10px;
margin: 0 0 10px 10px;
width: 170px;
font-size: 1.5em;
line-height: 1.4em;
text-align: right;
color: #666;
border-left: 3px solid #ccc;
}
In der Demo habe ich zwei separate jQuery-Snippets geschrieben. Eines zum Ziehen von Zitaten nach links und eines nach rechts. Sehen Sie sich die Quellcodes auf dieser Seite an, um diesen Code zu sehen.
Andere Artikel / Ressourcen
- 456 Berea Street: Automatische PullQuotes mit JavaScript und CSS
- Nerdaphernalia: WordPress-Plugin für JavaScript-Pull-Quotes
- Ganze Sektion im Buch Learning jQuery über PullQuotes
- Drupal-Modul für PullQuotes
haha, super, hatte gerade gestern das Problem.
Guter Artikel, ich denke, Sie sollten span.pullqoute in CSS für das herausgezogene Zitat in span.pulledquote ändern :)
Guter Artikel – nützlicher Trick.
Ein MooTools-Beispiel
Ich habe das Beispiel (von der Hauptseite dieser Website) gesehen, ohne weiter nachzuschauen, und beschlossen, etwas Ähnliches mit MooTools zu versuchen. Ich bin ziemlich nah an die hier vorgestellte Lösung herangekommen. Nicht schlecht für meinen ersten Versuch mit MT! (Wenn ich das selbst sagen darf). Ich habe eine einfache Anpassung vorgenommen, um bei Bedarf ein einfaches Verzahnen der Pull-Quotes zu ermöglichen. Ich hoffe, Sie finden es nützlich. -Joe
@Ivan: Danke, das habe ich behoben.
@Joseph: Sehr nett, gute Arbeit =) Ich mag die Idee des „automatischen Verzahnen“ der Pull-Quotes. Ich denke, in der normalen Produktion würden die Leute das wahrscheinlich gerne selbst kontrollieren können, aber in längeren statischen Artikeln ist es sehr cool, wenn es automatisiert ist.
Ich sollte darüber nachdenken, eine zweite „Klasse“ zum Klassennamen des Span-Elements hinzuzufügen, so dass die zweite Klasse den MT-Code einfach anweist, das Pull-Quote nach links oder rechts zu schieben usw. Auf diese Weise können die Pull-Quotes leicht einzeln angepasst werden, oder wenn sie weggelassen werden, als Ganzes verzahnt werden.
Dieses funktioniert auch für textbasierte Browser, da diese sich keine Gedanken über DOM-Hintergrundarbeit machen müssen. Ich bin mir jedoch nicht sicher, wie Screenreader dies interpretieren würden...
Screenreader lesen die Informationen leider zweimal. Ich habe über eine Möglichkeit nachgedacht, dieses Problem zu vermeiden.
Die Idee des automatischen Verzahnen gefällt mir wirklich. Die Leute würden es wahrscheinlich nicht stören, dies nicht zu kontrollieren, sondern es stattdessen automatisieren zu lassen.
Amanda <3
Das gefällt mir sehr gut. Danke, mein Herr.
(Ich bin der Autor des WordPress-Pull-Quotes-Plugins)
Das ist eine gute Frage bezüglich Screenreadern. Gibt es eine Möglichkeit, programmatisch (in JavaScript oder PHP) festzustellen, ob ein Screenreader verwendet wird? Wenn ja, könnten Sie entweder das Pull-Quote nicht anzeigen oder es mit „Pull-Quote“ und „Ende Pull-Quote“ einrahmen. Da Screenreader tendenziell mit ganz normalen Browsern funktionieren, bin ich mir nicht sicher, ob dies zuverlässig möglich ist.
Bezüglich des Verzahnen der Zitate auf der Seite macht mein Plugin dies. Grundsätzlich hat jedes aufeinanderfolgende Zitat die Klassen „pullquote“ oder „pullquote pqright“, und das CSS formatiert entsprechend.
Ich mag die Idee, das eigentliche Pull-Quote als „pulledquote“ zu formatieren – ein separater Selektor als das Span. Das muss ich mir vielleicht ausleihen. ;-) Es funktioniert sicherlich mit demselben Selektor (da es sich um unterschiedliche Tags handelt – „span“ oder „blockquote“), aber es gibt möglicherweise Vorteile bei Ihrer Methode. Ich muss darüber nachdenken.
@Stephen: Ich bin mir keiner sicheren Methode bewusst, um einen Screenreader zu erkennen. Es gibt definitiv JavaScript-Techniken zur Browsererkennung, aber da die meisten Screenreader kein JavaScript haben, ist das nicht nützlich. Das ist ein weiterer schöner Grund, dies mit JavaScript zu tun, denn wenn ein Browser es nicht unterstützt oder es ausgeschaltet hat, gibt es einfach keine Pull-Quotes.
„Das ist ein weiterer schöner Grund, dies mit JavaScript zu tun, denn wenn ein Browser es nicht unterstützt oder es ausgeschaltet hat, gibt es einfach keine Pull-Quotes.“
Genau! Mir wurde vorgeworfen, ich hätte „PHP verwenden sollen“; aber ich habe JavaScript ganz bewusst gewählt. :)
Die neue Version 1.2.6 von jQuery bricht dies.
Gibt es einen neuen Workaround?!
Ich taste mich hier gerade erst heran :)
Hoppla
Mein Fehler! Funktioniert perfekt!
Interessant – mein einziger Wunsch wäre die automatische Großschreibung des ersten Buchstabens des Textzugs. Manchmal ist das Zitat nicht der ganze Satz, aber im Zug sollte es großgeschrieben werden.