Keine ideale Lösung, aber wir können den Effekt vortäuschen, indem wir von 50%
auf das Element :empty
anwenden, damit der Cursor in der Mitte erscheint.
Und dann ausrichten Sie den Platzhalter (das Pseudo-Element) in der Mitte durch Verwendung der absoluten Positionierung und einen negativen Wert von translateX
Transformationsfunktion.
* {
margin: 0;
padding: 0;
}
@-moz-document url-prefix() { /* CSS Hack to fix the position of cursor on FF */
[contentEditable=true]:empty {
padding-top: 1em;
padding-bottom: .25em;
-moz-box-sizing: content-box;
}
}
[contentEditable=true]:empty {
padding-left: 50%;
text-align: left; /* Fix the issue on IE */
}
[contentEditable=true]:empty::before{
content:attr(data-ph);
color: #CCC;
position: absolute;
top: 0;
left: 50%;
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-ms-transform: translateX(-50%);
-o-transform: translateX(-50%);
transform: translateX(-50%);
}
h1 {
text-align: center;
position: relative;
}
<h1 contenteditable="true" data-ph="Name"></h1>
Das einzige Problem, das bleibt - wie in den bereitgestellten Code des OP zu sehen ist - besteht darin, dass auf den folgenden, ein leeres <br>
Element contentEditable
Elemente angehängt wird, die :empty
pseudo-Klasse verursacht nicht passend zum Element. Daher wird der Platzhalter nicht wiederhergestellt.
Da jedoch die Frage über die Position des Cursors ist, nehme ich an, dass dieses Verhalten für das OP gut ist.
Interessanterweise startet der Cursor in IE11 am Ende des Inhalts, Chrome und Firefox rendern linksbündig. Chrome zeigt auch einen blauen Rahmen an, wo die anderen nicht liegen. – adamdc78