Fortgeschrittene CSS-Tricks: Initiale Großbuchstaben (Initialen) innerhalb einer CSS3-Spalte

8

Seit etwa einem Jahr hat die multicolumn css3-Eigenschaft die Unterstützung vieler Browser genossen. Grund, es für eine bessere Gestaltung und Lesbarkeit auf Ihrer Website zu implementieren. Ich dachte, lass uns die Hürde nehmen und die alten - aber immer so schönen Drop Caps (= erster großer Anfangsbuchstabe) in die Multicolumn übernehmen. bestimmte Bildschirmbreiten brechen jedoch das mehrspaltige Layout in FireFox. Was mache ich falsch?

siehe jsfiddle DEMO

Wenn Sie die Fensterbreite ändern, sehen Sie das Springen / Brechen des Layouts in Aktion in IE und Firefox. Unten ein Beispiel. Stuck auf was verursacht die Mängel in den mehrspaltigen Fehlabstimmungen!?

Entschuldigung für mein bärtiges Alter-Ego-Selbstporträt: Ich habe vergessen, mich zu rasieren, habe den ganzen Tag auf dieses Problem gestarrt, ohne rechtzeitig aufzuräumen. Ich verspreche dir aber ein sauberes ordentliches rasiertes Portrait hier zurück, sobald dieses Problem gelöst ist!

Oberhalb von mehr Ausrichtungsproblemen in den meisten Bildschirmbreiten im Internet Explorer 11. Curious Safari und Chrome zeigen das Layout fehlerfrei bei all Browser-Bildschirmbreiten an, es gibt keinen Bruch.

%Vor%     
Sam 01.04.2014, 00:42
quelle

4 Antworten

3

Zunächst möchte ich sagen, dass die Verwendung des mehrspaltigen Layoutmoduls noch nicht empfehlenswert ist.

Hauptsächlich wegen der fehlenden Unterstützung für die Eigenschaften break-before , break-after , break-inside , mit Ausnahme von IE 10+ und den proprietären -webkit-column-break-* -Eigenschaften (siehe: CSS3 Mehrfachspaltenlayout ).
(Sie können auch meine Antwort auf diese SO-Frage ansehen: IE (11) unsachgemäße Behandlung von CSS-Multispalten? )

Zusätzlich müssen Sie daran denken, dass es ein sogenanntes " mehrspaltiges Pseudo gibt -Algorithmus ", der von Ihrem :first-letter Selektor verwirrt zu sein scheint.

Sie können dieses Problem vermeiden, indem Sie stattdessen ein span -Element mit einem Klassenattribut für die Initialen verwenden.

Aber da die ersten Buchstaben größer sind als der Rest des Textes, entsteht ein anderes Problem Es kann vorkommen, dass eine (einzelne) Textzeile des Anfanges eines Absatzes mit einer Drop-Cap zur vorherigen Spalte passt, während die Drop-Cap (die etwa doppelt so hoch wie der normale Text ist) nicht darf.

>

Um dieses unerwünschte Verhalten zu vermeiden, müssen Sie ein anderes span -Element verwenden, das mindestens mehr Text enthält, als in eine einzige Zeile (aus Text) passen kann!
Und diese Spain-Elemente geben ein display: inline-block; löst dieses Problem.

Nur ein Wort zur Antwort von Amir5000: Obwohl meine vorgeschlagene Lösung auch einige zusätzliche Span-Elemente benötigt, verwendet sie kein "rein präsentatives Markup", das auch unerwünschte Leerzeilen erzeugen kann.

Aber wie eingangs gesagt, ist die Verwendung von Multi-Column zumindest sehr "schwierig" und es ist sehr schwierig, vorhergesagte Ergebnisse über Browser und / oder unterschiedliche Ansichtsfensterbreiten zu erhalten.

Hier ist meine vorgeschlagene "Lösung": DEMO

    
Netsurfer 20.04.2014, 12:52
quelle
3

Die Ursache des Problems war float:left auf #multicolumn p:first-letter , wenn Sie das herausnehmen, werden Sie sehen, dass es dieses Problem nicht mehr hat; Sie haben jedoch nicht das gleiche Format wie beim ersten Buchstaben. Also habe ich ein JSFIDDLE erstellt, wo ich

hinzugefügt habe

#multicolumn p { float: left; }

und fügte eine Breite für den Container #multicolumn hinzu und zentrierte sie, wie Sie sehen können.

Ich hoffe, das löst das Problem für Sie.

------- Aktualisierung ---------

Nachdem ich viel Zeit damit verbracht habe, es wie beabsichtigt fließen zu lassen, war ich in der Lage, eine Arbeit zu finden, die ziemlich einfach ist, wenn Sie sich jetzt das aktualisierte FIDDLE

Ich habe ein leeres span zwischen den Absätzen hinzugefügt, um den Float zu löschen, und außerdem eine Medienabfrage hinzugefügt, damit es auf kleineren Bildschirmen schöner aussieht

Dies war der einfachste Weg, um Ihr Problem zu lösen, hoffe, dass es hilft!

    
Amir5000 18.04.2014 12:23
quelle
1

Ich bin mir nicht sicher über das Spaltenproblem. Du solltest eine Geige dafür machen, damit wir dir schneller helfen können. Soweit die erste Kappe Problem. Das ist ziemlich schwierig, was sind deine Einschränkungen? Kannst du es richtig programmieren oder musst du es dynamisch machen?

Ich habe hier eine hartcodierte Lösung gepostet. Es ist im Grunde nur mit

%Vor%

Ссылка

    
Britton 18.04.2014 00:12
quelle
1

Ich habe Chenges unter CSS

%Vor%

Demos

    
Piyush Marvaniya 22.04.2014 10:51
quelle

Tags und Links