Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › FAQ ›

CSS - wie wird man die Eigenschaft float wieder los? Ein Trick.

Eingetragen von quiptime (4972) am 03.12.2008 - 14:37 Uhr in
  • Allgemeines

Um HTML Elemente horizontal gegeneinander anzuordnen, also links und rechts nebeneinander, kann man die CSS-Formatierungen

  • float: left
  • float: right

verwenden. Werden HTML Elemente mit diesen Eigenschaften versehen muss man nach dem letzten Element mit einer "Float-Eigenschaft" das Floaten wieder aufheben.

Um die Eigenschaft des Floatens eines floatenden HTML-Elementes aufzuheben kann man diese CSS-Formatierungen

  • clear: left
  • clear: right
  • clear: both

verwenden. Um dies Anwenden zu können muss es also nach dem letzten floatenden HTML-Element ein Element geben dem man eine der 3 clear-Formatierungen zuweist.

Dummi-HTML-Element

In der Regel oder sehr oft wird dafür ein sogenanntes Dummi-HTML-Element verwendet.

Dieses Dummi-HTML-Element ist im ungünstigen Fall ein br Tag oder ein span Tag. Ungünstig sind diese beiden Tags deswegen weil sie Fonteigenschaften erben bzw. besitzen. Deswegen hat ein br Tag oder ein span Tag immer eine gewisse Zeilenhöhe. Damit nun dieses Dummi-HTML-Element keine unerwünschten Abstand erzeugt muss es noch zusätzlich bezüglich seiner Höhe formatiert werden.

Diese zusätzliche Formatierung kann man umgehen wenn man als Dummi-HTML-Element das div Tag verwendet. Denn ein leeres div Tag hat keine Höhe.

Mit einem div-Tag als Dummi-HTML-Element um Floaten aufzuheben ist man eigentlich am Ziel angelangt.

Aber,

mit einem div-Tag als Dummi-HTML-Element kann es unter bestimmten Vorraussetzung Probleme geben. Um diese Probleme zu umgehen bleibt nur eine Möglichkeit:

Kein Dummi-HTML-Element verwenden.

Der Trick

Der Trick, um die Eigenschaft des Floatens eines floatenden HTML-Elementes aufzuheben besteht darin, kein Dummi-HTML-Element mit einer clear-Formatierung zu verwenden. Mit anderen Worten, man benötigt die CSS Formatierungen

  • clear: left
  • clear: right
  • clear: both

nicht um Floaten aufzuheben.

Statt dessen wird ein div verwendet welches die floatenden HTML-Elemente umschliesst. Diesem div muss man explizit die CSS-Formatierung

display: block

zuweisen. Das ist der Trick und das ist Alles.

Demo, Test mit div und display: block

Ich bin das umschliessende div und bin mittels der CSS-KLasse "clear-block" mit display: block formatiert.

Ich bin links und besitze die Eigenschaft
float: left
Ich bin rechts und besitze die Eigenschaft
float: right

Dieser Trick funktioniert nur wenn man dem umschliessenden div die Formatierung über eine CSS-Klasse zuweist.

Bei einigen Themes wird für genau diese Zuweisung die CSS-Klasse "clear-block" bereitgestellt. Wenn man sich in der CSS-Datei eines solchen Theme diese Formatierung ansieht:

.clear-block {
  display: block;
}

Zufällig verwendet das von DrupalCenter benutzte Zen Theme diese CSS-Klasse. Aus diesem Grund funktioniert mein obiges Demo des Trick hier auf dieser FAQ Seite.

Anwendungsszenario

Erlaubt man Usern beim Erstellen von Inhalten mit dem Eingabeformat Full HTML zu arbeiten kann man das div welches den Inhalt der Node umfasst vorsorglich mit der CSS-Formatierung display: block versehen. Damit verhindert man das sich durch nicht aufgehobenes Floaten von HTML-Elementen das gesamte Layout der Seite verschiebt sondern sich Verschiebungen nur im Bereich des eigentlichen Nodeinhaltes ereignen.

Fazit

Schlussendlich bleibt anzumerken, das es nicht wenige Drupal-Modulentwickler gibt die diese Anwendungsmöglichkeit von display: block im Zusammenhang mit flotenden HTML-Elementen scheinbar nicht kennen.

-------------
quiptime

  • Anmelden oder Registrieren um Kommentare zu schreiben

Verzeih, wenn ich deinen Beitrag ein wenig korrigiere.

Eingetragen von rainman (226)
am 16.12.2008 - 09:34 Uhr

Dies ist leider nicht alles. Die Methode des einschließen von Floats ohne zusätzliches Markup wurde 2004 von Position Is Everything dokumentiert (Big John, Holly Bergevin) und nennt sich easyclearing. Ins deutsche übersetzt wurde sie 2005 von Catherine und Onno K. Gent. Drupal selbst nutzt diese Methode in der CSS-Datei modules/system/defaults.css. Das Zen-Theme setzt nur darauf auf.

Im Original von 2004 schaut die Klasse clearfix so aus:
/* für alle modernen Browser */
.clearfix:after {
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

/* für den IE5/Mac und hasLayout für IE7 */
.clearfix {display: inline-block;}

/* Verstecken vor dem IE/Mac, hasLayout für IE5+6 erzwingen \*/
  * html .clearfix {height: 1%;}
  .clearfix {display: block;}
/* Ende des Verstecken */

/* Trotz des Überschreibens der Eigenschaft display, bleibt das Layout für den IE erhalten. */

Dem gegenüber die Klasse clear-block in Drupal:
.clear-block:after {
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

.clear-block {
  display: inline-block;
}

/* Hides from IE-mac \*/
* html .clear-block {
  height: 1%;
}
.clear-block {
  display: block;
}
/* End hide from IE-mac */

Ein einfaches display:block hat also nicht die erklärte Wirkung, sondern das Zusammenspiel der Komponenten, welches sich in der Klasse clear-block äußert.

Dein Fazit würde ich dem zu folge ein wenig ändern.

Fazit
Schlussendlich bleibt anzumerken, das es nicht wenige Drupal-Modulentwickler gibt, die diese Anwendungsmöglichkeit von der Klasse clear-block im Zusammenhang mit floatenden HTML-Elementen scheinbar nicht kennen.
Geänderte easyclearing-Methode
Seit Dezember 2008 sieht die originale easyclearing-Methode etwas anders aus. Unter anderem wurde height:1% durch zoom:1 ersetzt. Damit wird der IE5.0 nicht mehr unterstützt, da zoom erst ab IE-Version 5.5 funktioniert. Der Grund für die Umstellung dürfte sein, dass height:1% in Verbindung mit overflow:hidden zu starken Problemen führen kann.
Einfache Methode um Floats zu clearen
Paul O’Brien fand eine andere, einfache Methode um Floats zu clearen. Dem DIV, in dem sich die Foat-Elemente befinden, ein overflow:auto; bzw. overflow:hidden; mit auf den Weg geben. Beispiel:
.div_mit_float_elementen {
  overflow: hidden;
  width: 100%;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 21 Stunden 48 Minuten
  • Hey danke
    vor 1 Tag 16 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 10 Stunden
  • Hallo, im Prinzip habe ich
    vor 6 Tagen 20 Stunden
  • Da scheint die Terminologie
    vor 6 Tagen 23 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 18 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 10 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association