2014-05-07 12 views
5

Wenn es wird eine leere div mit contenteditable="true":`contenteditable = true` Höhe Ausgabe in FireFox

CSS:

[contenteditable="true"] { 
    border: 1px dashed #dedede; 
    padding: 3px; 
} 

HTML:

<div contenteditable="true"> 
    <!-- blank by default --> 
</div> 

In IE und Chrome, es zeigt, die Höhe wie ein normales Eingabefeld mit kleiner Polsterung. In Firefox zeigt es nur, dass 3px Padding ich in den Stilen hinzugefügt habe. Wobei, es kollabiert und ist nur so groß wie die Grenze.

Wissen Sie, ob das ein Firefox-Bug ist? Können Sie einen Weg vorschlagen, damit umzugehen?

+1

Sie vertrauen wahrscheinlich auf die Standardstile der Browser, deshalb sehen Sie die Unterschiede. Versuchen Sie es mit einem CSS-Reset und wenden Sie Ihre Stile an. http://www.cssreset.com/ – Arbel

+0

Ich habe dieses Problem nur in Firefox gesehen. – Skitterm

+0

Siehe auch https://github.com/w3c/editing/issues/70 – Nickolay

Antwort

13

Umgehung:

[contenteditable='true']:before { 
    content: "\feff "; 
} 

CSS2 section 10.6.3:

das Höhe des Elements ist der Abstand von seinem oberen Inhaltskante zum ersten anwendbaren der folgenden:

  1. die Unterkante das Feld für die letzte Zeile, wenn das Feld einen Inline-Formatierungskontext mit einer oder mehreren Zeilen
  2. einrichtet
  3. der untere Rand des unteren (möglicherweise kollabierten) Rands des letzten untergeordneten untergeordneten Elements, wenn der untere Rand des Elements nicht mit dem unteren Rand des Elements kollabiert
  4. der untere Rand des letzten Inflow-Kindes, dessen Spitze Marge nicht kollabiert mit dem unteren Rand des Elements
  5. Null, sonst

Für diesen leeren div,

1 bis 3 sind nicht anwendbar, da die div leer. Es hat keine Linienboxen oder Kinder. Punkt 4 gilt daher.

Die Problemumgehung erzwingt mindestens ein Zeilenfeld innerhalb des div, so dass es eine Höhe ungleich Null erhält.

+0

hat perfekt funktioniert, danke. – KickingLettuce

+0

Für diejenigen, die wie ich eine spezielle Einheit suchen, die mit CSS 'min-height' verwendet werden kann, gibt die Höhe der Zeile an [es gibt keine solche Einheit ATM] (https://bugzilla.mozilla.org /show_bug.cgi?id=1098151#c18). – Nickolay

0

Dies funktioniert für mich ganz gut in firefox

http://jsfiddle.net/D6D6A/

html:

<div contenteditable='true'></div> 

css: zu schwarzen Rand geändert, so leichter

[contenteditable='true'] { 
    border: 1px dashed #000; 
    padding: 3px; 
} 

Mitteilung zu sehen wenn Sie Paddin wechseln g bis 0 px, hat keine Höhe. Mit dem 3px-Padding funktioniert es jedoch wie es sollte.

+0

Danke für die Antwort. Leider, in Firefox v28.0 für Windows (was ich gerade teste), hat die Geige, die du gepostet hast, dieselben Ergebnisse, wie ich in meiner Frage erwähnt habe. – KickingLettuce

+0

Dies hat das gleiche Problem bei Firefox - die Höhe bricht zusammen. – Skitterm