Normalerweise sind Textbereiche wie folgt rechteckig oder quadratisch:
Aber ich möchte einen benutzerdefinierten Textbereich wie diesen, zum Beispiel:
Wie ist das möglich?
javascript
jquery
html
css
Paranoid
quelle
quelle
<div>
zum Speichern von Text ist keine gute Lösung. Es kann beim Entwerfen helfen und sogar für schreibgeschützten Text akzeptabel sein (was den Zweck von völlig zunichte machtcontenteditable
), aber es ist nicht gut für die Texteingabe eines Benutzers. Ein div (auch ein inhaltsbearbeitbares) ist kein Standardeingabeelement wie ein normales Formularelement, daher wird es nicht wie eines behandelt, und daher wird sein Inhalt bei Abstürzen nicht von Browsern gespeichert. Die Verwendung eines Div führt zu Datenverlust . Siehe dieses Beispiel .Antworten:
Einführung
Erstens gibt es viele Lösungen, die in anderen Beiträgen vorgeschlagen werden. Ich denke, dieser ist derzeit (2013) derjenige, der mit der größten Anzahl von Browsern kompatibel sein kann, da er keine CSS3-Eigenschaften benötigt. Die Methode funktioniert jedoch nicht in Browsern, die nicht unterstützt
contentdeditable
werden. Seien Sie vorsichtig.Lösung mit einem div
contenteditable
Wie von @Getz vorgeschlagen , können Sie ein div mit verwenden
contenteditable
und es dann mit einem div darauf formen. Hier ist ein Beispiel mit zwei Blöcken, die oben links und oben rechts im Hauptteil schweben:Wie Sie sehen, müssen Sie ein wenig mit den Rändern spielen, wenn Sie das gleiche Ergebnis erzielen möchten, das Sie in Ihrem Beitrag angefordert haben. Der Hauptteil hat auf jeder Seite den blauen Rand. Als nächstes müssen rote Blöcke aufgeklebt werden, um die oberen Ränder des Hauptteils auszublenden, und Sie müssen nur auf bestimmten Seiten einen Rand auf sie anwenden ( unten und links für den rechten Block, unten und rechts für den linken).
Danach können Sie den Inhalt über Javascript abrufen, wenn beispielsweise die Schaltfläche " Senden " ausgelöst wird. Und ich denke , man kann auch den Rest der CSS Griff (
font-size
,color
usw.) :)Vollständiges Codebeispiel
quelle
You can't apply a border color for the editable section keeping the two corner div's background-color:white
. Ist es nicht? Trotzdem wird dies gewinnen. +1bad things
. Das wären die Nebenwirkungen der Situation, nach der ich gerade gefragt habe, und was Sie in der Geige getan haben. Aber es ist sicherlich eine wirklich gute Lösung. Vielen Dank für die Klarstellung.In naher Zukunft können wir so genannte verwenden
css-shapes
, um dies zu erreichen. Ein Div mit demcontenteditable
Attribut "true
Kombiniert mit"css-shapes
kann einem Textbereich eine beliebige Form geben.Derzeit Chrome Canary bereits unterstützt
css-shapes
. Ein Beispiel, was mit CSS-Formen möglich ist, ist:Hier verwenden sie eine Polygonform, um den Textfluss zu definieren. Es sollte möglich sein, zwei Polygone zu erstellen, die der gewünschten Form für Ihren Textbereich entsprechen.
Weitere Informationen
css-shapes
zu finden Sie unter: http://sarasoueidan.com/blog/css-shapes/Polygon erstellt mit: http://betravis.github.io/shape-tools/polygon-drawing/
Ergebnis
http://jsfiddle.net/A8cPj/1/
quelle
Vielleicht ist es mit Content Editable möglich ?
Es ist kein Textbereich, aber wenn es Ihnen gelingt, ein Div mit dieser Form zu erstellen, könnte es funktionieren.
Ich denke, es ist nicht nur mit Textarea möglich ...
Ein kleines Beispiel: http://jsfiddle.net/qgfP6/5/
quelle
Sie könnten mit einem inhaltsbearbeitbaren Div mit zwei Eck-Divs arbeiten:
quelle
Sie können dies auch mit CSS-Regionen tun
(Webplattform)
[Wird derzeit in WebKit Nightly, Safari 6.1+ und iOS7 unterstützt und kann nach Aktivierung des Flags bereits in Chrome und Opera verwendet werden: enable-experimental-web-platform-features - caniuse , Web Platform ]
GEIGE
Sie können diese Textbereichsform also erstellen, indem Sie den Text durch zwei Regionen fließen lassen, und ihn bearbeiten, indem Sie dem Inhalt inhaltsbearbeitbare Elemente hinzufügen.
Markup
(Relevantes) CSS
Das Ergebnis:
Weitere Informationen zu Regionen - hier ein guter Artikel: CSS3-Regionen: Reichhaltiges Seitenlayout mit HTML und CSS3
quelle
Eine lange Textzeile im Feld lässt den Cursor über die mittleren Ränder fallen, und ich kann das scheinbar nicht beheben.
quelle
Das ist nicht möglich, Herr! Ein Textbereich ist im Allgemeinen eine rechteckige oder quadratische Box, in die Sie eingeben können.
Um so etwas zu machen, können Sie jedoch 2 Textbereiche verwenden und ihnen dann eine bestimmte Breite und Höhe geben. Sonst denke ich nicht, dass es passieren wird!
Die zweite Methode wäre, ein bearbeitbares Element zu erstellen.
http://jsfiddle.net/afzaal_ahmad_zeeshan/at2ke/
Der Code lautet:
Auf diese Weise können Sie jedes Element bearbeitbar machen! Sie können ihm Dimensionen geben, und es wird funktionieren! Sie erhalten es nur als Textbereich.
Referenz: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_Editable
quelle
div
s anstelle von Textarea. Weil der Textbereich nicht in Form gebracht werden kann! :) @Markasoftware Sie liegen also falsch, wenn Sie diese Antwort ablehnen! .. da dies genau die gleiche Antwort ist wie seine. Das einzige, was hier nicht vorhanden ist, ist das Bild und der Code, um das bearbeitbare Div mit dieser Form zu erstellen!Wenn Sie kombinieren CSS Formen mit
contenteditable
dieser kann in Webkit - Browser erfolgen.Zuerst müssen Sie das Flag aktivieren: enable-experimental-web-platform-features
Starten Sie dann Ihren Webkit-Browser neu und überprüfen Sie diese FIDDLE !
Diese Methode funktioniert auch für nicht standardmäßige Formen.
Markup
CSS
Wie um alles in der Welt habe ich diese Polygonform bekommen?
Gehen Sie auf diese Seite und erstellen Sie Ihre eigene Form!
Hinweise zum Aktivieren der Flagge: (von hier )
quelle
box-sizing
.)Mit dem Google Web Designer-Tool können Sie komplexe Formen erstellen
HTML5-canvas and CSS
.Darüber hinaus erhalten Sie andere Werkzeuge wie Schreibwerkzeuge, um Texte in diese Formen einzugeben.
Da die Ausgabedatei viel Code enthält, können Sie eine Beispieldemo erstellen, die mit dem Google Web Designer-Tool erstellt wurde
FIDDLE DEMO >>
quelle
<textarea>
(dh einer Box mit bearbeitbarem Text), aber mit einer nicht rechteckigen Form. Ohne den "bearbeitbaren" Teil gibt es hier kaum eine Herausforderung - seit der Einführung von schwebenden Bildern in HTML 2.0 haben die Leute fließenden Text in HTML erstellt.Wenn Sie aus irgendeinem Grund wirklich Browser unterstützen müssen, die keine haben
contenteditable
, können Sie wahrscheinlich dasselbe in JavaScript tun, indem Sie Ereignisse verwenden, obwohl dies eine sehr unübersichtliche Problemumgehung ist.Pseudocode:
quelle