Por lo general, las áreas de texto son rectangulares o cuadradas, así:
Pero quiero un área de texto con forma personalizada, como esta, por ejemplo:
¿Cómo es esto posible?
javascript
jquery
html
css
Paranoico
fuente
fuente
<div>
para almacenar texto no es una buena solución. Puede ayudar al diseño, e incluso puede ser aceptable para texto de solo lectura (que anula por completo el propósito decontenteditable
), pero no es bueno para la entrada de texto de un usuario. Un div (incluso uno contento) no es un elemento de entrada estándar como un elemento de forma normal, por lo tanto, no será tratado como tal, por lo que su contenido no será guardado por los navegadores en caso de fallas. Usar un div conduce a la pérdida de datos . Ver este ejemplo .Respuestas:
Introducción
Primero, hay muchas soluciones, propuestas en otras publicaciones. Creo que este es actualmente (en 2013) el que puede ser compatible con la mayor cantidad de navegadores, ya que no necesita ninguna propiedad CSS3. Sin embargo, el método no funcionará en los navegadores que no son compatibles
contentdeditable
, tenga cuidado.Solución con un div
contenteditable
Según lo propuesto por @Getz , puede usar un div con
contenteditable
y luego darle forma con algo de div. Aquí hay un ejemplo, con dos bloques que flotan en la esquina superior izquierda y en la esquina superior derecha del div principal:Como puede ver, debe jugar un poco con los bordes si desea obtener el mismo resultado que solicitó en su publicación. El div principal tiene el borde azul en cada lado. A continuación, los bloques rojos deben pegarse para ocultar los bordes superiores del div principal, y debe aplicar un borde a ellos solo en lados particulares ( abajo e izquierda para el bloque derecho, abajo y derecha para el izquierdo).
Después de eso, puede obtener el contenido a través de Javascript, cuando se activa el botón " Enviar ", por ejemplo. Y creo que también se puede manejar el resto de la CSS (
font-size
,color
, etc.) :)Muestra de código completo
fuente
You can't apply a border color for the editable section keeping the two corner div's background-color:white
. ¿No es así? Aún así, esto ganará. +1bad things
. Esos serían los efectos secundarios de la situación que acabo de preguntar y de lo que ha hecho en el violín. Pero ciertamente es una muy buena solución. Gracias por la aclaración.En un futuro cercano podemos usar los llamados
css-shapes
para lograr esto. Un div con elcontenteditable
atributo establecido entrue
combinado concss-shapes
puede hacer que un área de texto tenga cualquier tipo de forma.Actualmente Chrome Canary ya es compatible
css-shapes
. Un ejemplo de lo que es posible con css-shapes es:Aquí están usando una forma de polígono para definir el flujo de texto. Debería ser posible crear dos polígonos para que coincidan con la forma que desea para su área de texto.
Se
css-shapes
ha escrito más información sobre : http://sarasoueidan.com/blog/css-shapes/Polígono creado con: http://betravis.github.io/shape-tools/polygon-drawing/
Resultado
http://jsfiddle.net/A8cPj/1/
fuente
¿Quizás es posible con Content Editable ?
No es un área de texto, pero si logras crear un div con esta forma, podría funcionar.
Creo que no es posible con solo textarea ...
Un pequeño ejemplo: http://jsfiddle.net/qgfP6/5/
fuente
Podría trabajar con un div contenteditable, con dos divs de esquinas:
fuente
También puede hacer esto con Regiones CSS
(Plataforma web)
[Actualmente compatible con WebKit Nightly, Safari 6.1+ y iOS7 y ya se puede usar en Chrome y Opera después de habilitar la bandera: enable-experimental-web-platform-features - caniuse , Web Platform ]
VIOLÍN
Por lo tanto, puede crear esa forma de área de texto haciendo fluir el texto a través de 2 regiones y editarla agregando contenido contento en el contenido.
Margen
(Relevante) CSS
El resultado:
Para obtener más información sobre las regiones, aquí hay un buen artículo: regiones CSS3: diseño de página enriquecido con HTML y CSS3
fuente
Una larga línea de texto en el cuadro dejará caer el cursor más allá de los bordes medios y parece que no puedo solucionarlo.
fuente
¡Eso no es posible señor! Un área de texto es generalmente un cuadro rectángulo o cuadrado, donde puede escribir.
Sin embargo, para hacer algo así, puede usar 2 textarea's y luego darles un ancho y una altura específicos. De lo contrario, ¡no creo que vaya a suceder!
El segundo método sería hacer un elemento editable.
http://jsfiddle.net/afzaal_ahmad_zeeshan/at2ke/
El codigo es:
¡Usando esto, puedes hacer que cualquier elemento sea editable! ¡Puedes darle dimensiones y funcionará! Lo obtendrás solo como un área de texto.
Referencia: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_Editable
fuente
div
s en lugar de textarea. ¡Porque textarea no se puede modificar en forma! :) @Markasoftware ¡Así que te equivocas al rechazar esta respuesta! .. ya que esta es la misma respuesta que la suya. ¡Lo único que no está presente aquí es la imagen y el código para hacer el div editable con esa forma!Si combina formas CSS con
contenteditable
esto, puede hacerlo en los navegadores webkit.Primero debe habilitar la bandera: enable-experimental-web-platform-features
Luego reinicie su navegador webkit y luego verifique este FIDDLE .
Este método también funcionará para formas no estándar.
Margen
CSS
Entonces, ¿cómo demonios obtuve esa forma de polígono?
¡Ve a este sitio y crea tu propia forma personalizada!
Notas sobre cómo habilitar la bandera: (desde aquí )
fuente
box-sizing
.)Puede usar la herramienta de diseño web de Google para crear formas complejas usando
HTML5-canvas and CSS
.Además, obtendrá otras herramientas como herramientas de escritura para ingresar textos dentro de estas formas.
Como el archivo de salida contiene mucho código, proporciona un violín de una demostración de muestra creada con la herramienta Google Web Designer
FIDDLE DEMO >>
fuente
<textarea>
(es decir, un cuadro de texto editable), pero con una forma no rectangular. Sin la parte "editable", aquí hay muy pocos desafíos: la gente ha estado haciendo texto fluido en HTML desde la introducción de imágenes flotantes en HTML 2.0.Si, por alguna razón, realmente necesita admitir navegadores que no lo tienen
contenteditable
, probablemente podría hacer lo mismo en JavaScript, utilizando eventos, aunque esta es una solución muy desordenada.Pseudocódigo:
fuente