Sie sollten dieses Problem mit CSS anstatt Ruby lösen. Sie tun etwas, das sich auf das DOM-Layout auswirkt, und es gibt keine Möglichkeit, programmatisch eine Lösung zu entwickeln, die konsistent funktioniert.
Angenommen, Ihr HTML-Parser-Juwel funktioniert, und Sie finden einen kleinsten gemeinsamen Nenner, der die meiste Zeit funktioniert.
Was passiert, wenn Sie die Schriftgröße oder das Layout Ihrer Website ändern? Sie müssen die Zeichenanzahl erneut neu berechnen.
Oder lassen Sie uns sagen, Ihr HTML hat so etwas in diesem: <p><br /></p><br />
Das ist null Zeichen, aber es würde dazu führen, dass ein großer Brocken leerer Text eingefügt wird. Es könnte sogar ein <blockquote>
oder <code>
Tag mit zu viel Polsterung oder Rand sein, um Ihr Layout völlig aus dem Gleichgewicht zu bringen.
Oder das Gegenteil, sagen wir, Sie haben diese 3 ≅ λ
(3 ≅ λ) Das 26 Zeichen lang ist, aber für die Anzeige ist es nur 5.
Der Punkt, dass Zeichenzahl ist sagt nichts über wie etwas im Browser rendern wird. Ganz zu schweigen von der Tatsache, dass HTML-Parser große Teile von Code sind, die manchmal unzuverlässig sein können.
Hier ist ein paar gute CSS, um damit umzugehen. Nach der Pseudoklasse wird eine weiße Einblendung zur letzten Zeile des Inhalts hinzugefügt. Sehr schöner Übergang.
body { font-size: 16px;}
p {font-size: 1em; line-height: 1.2em}
/* Maximum height math is:
line-height * #oflines - 0.4
the 0.4 offset is to make the cutoff look nicer */
.lines-3{height: 3.2em;}
.lines-6{height: 6.8em;}
.truncate {overflow: hidden; position:relative}
.truncate:after{
content:"";
height: 1em;
display: block;
width: 100%;
position:absolute;
background-color:white;
opacity: 0.8;
bottom: -0.3em
}
Sie können so viele .lines-x
Klassen hinzufügen, wie Sie für richtig halten. Ich habe em verwendet, aber px ist genauso gut.
Dann bewerben Sie diese zu Ihrem Element: <div class="truncate lines-3">....lots of stuff.. </div>
und die Geige: http://jsfiddle.net/ke87h/
Die Arbeits Link für das zweite ist: https://github.com/hgmnz/truncate_html – Cristian
Gibt es irgendwelche neueren Edelsteine, die noch gepflegt werden und Schienen 4 stützen? – Alaric
@RyanClark Ich würde mit [hgmnz/truncate_html] (https://github.com/hgmnz/truncate_html) gehen. Es basiert auf regulären Ausdrücken und sollte mit jeder Rails-Version funktionieren, solange die Ruby-Versionen kompatibel sind. – Daniel