Lo que estoy buscando:
Una forma de darle estilo a la MITAD de un personaje. (En este caso, la mitad de la letra es transparente)
Lo que he buscado y probado actualmente (sin suerte):
- Métodos para diseñar la mitad de un carácter / letra
- Diseñar parte de un personaje con CSS o JavaScript
- Aplicar CSS al 50% de un personaje
A continuación se muestra un ejemplo de lo que estoy tratando de obtener.
¿Existe una solución CSS o JavaScript para esto, o tendré que recurrir a las imágenes? Preferiría no seguir la ruta de la imagen ya que este texto terminará siendo generado dinámicamente.
ACTUALIZAR:
Como muchos han preguntado por qué querría diseñar la mitad de un personaje, esta es la razón. Mi ciudad había gastado recientemente $ 250,000 para definir una nueva "marca" para sí misma. Este logo es lo que se les ocurrió. Muchas personas se han quejado de la simplicidad y falta de creatividad y continúan haciéndolo. Mi objetivo era crear este sitio web como una broma. Escriba 'Halifax' y verá lo que quiero decir.
fuente
Respuestas:
¡Ahora en GitHub como complemento!
Siéntase libre de bifurcar y mejorar.
Demo | Descargar Zip | Half-Style.com (redirige a GitHub)
Parte 1: solución básica
Demostración: http://jsfiddle.net/arbel/pd9yB/1694/
Esto funciona en cualquier texto dinámico, o un solo carácter, y está todo automatizado. Todo lo que necesita hacer es agregar una clase en el texto de destino y el resto se encargará.
Además, la accesibilidad del texto original se conserva para los lectores de pantalla para personas ciegas o con discapacidad visual.
Explicación para un solo personaje:
CSS puro. Todo lo que necesita hacer es aplicar la
.halfStyle
clase a cada elemento que contiene el carácter que desea que tenga un estilo medio.Para cada elemento span que contenga el carácter, puede crear un atributo de datos, por ejemplo aquí
data-content="X"
, y en el uso del pseudoelementocontent: attr(data-content);
para que la.halfStyle:before
clase sea dinámica y no necesite codificarlo en cada instancia.Explicación de cualquier texto:
Simplemente agregue
textToHalfStyle
clase al elemento que contiene el texto.( Demostración JSFiddle )
Parte 2: Solución avanzada: partes izquierda y derecha independientes
Con esta solución, puede diseñar las partes izquierda y derecha, de forma individual e independiente .
Todo es igual, solo CSS más avanzado hace la magia.
Mostrar fragmento de código
( Demostración JSFiddle )
Parte 3: Combina y combina
Ahora que sabemos lo que es posible, creemos algunas variaciones.
-Medias horizontales
Sin sombra de texto:
Posibilidad de Text Shadow para cada media parte de forma independiente:
Mostrar fragmento de código
( Demostración JSFiddle )
-Vertical 1/3 piezas
Sin sombra de texto:
Posibilidad de sombra de texto para cada 1/3 parte de forma independiente:
Mostrar fragmento de código
( Demostración JSFiddle )
-Horizontal 1/3 piezas
Sin sombra de texto:
Posibilidad de sombra de texto para cada 1/3 parte de forma independiente:
Mostrar fragmento de código
( Demostración JSFiddle )
-Mejora a mitad de estilo por @KevinGranger
Mostrar fragmento de código
( Demostración JSFiddle )
-PeelingStyle mejora de HalfStyle por @SamTremaine
Mostrar fragmento de código
( Demostración JSFiddle y en samtremaine.co.uk )
Parte 4: Listo para producción
Se pueden usar diferentes conjuntos de estilos de medio estilo personalizados en los elementos deseados en la misma página. Puede definir varios conjuntos de estilos y decirle al complemento cuál usar.
El complemento utiliza el atributo de datos
data-halfstyle="[-CustomClassName-]"
en los.textToHalfStyle
elementos de destino y realiza todos los cambios necesarios automáticamente.Entonces, simplemente en el elemento que contiene el texto, agregue
textToHalfStyle
clase y atributo de datosdata-halfstyle="[-CustomClassName-]"
. El complemento hará el resto del trabajo.Además, las definiciones de clase de los conjuntos de estilos CSS coinciden con la
[-CustomClassName-]
parte mencionada anteriormente y están encadenadas.halfStyle
, por lo que tendremos.halfStyle.[-CustomClassName-]
( Demostración JSFiddle )
fuente
¡Acabo de terminar de desarrollar el complemento y está disponible para que todos lo usen! Esperamos que lo disfrutes.
Ver proyecto en GitHub - Ver el sitio web del proyecto . (para que pueda ver todos los estilos divididos)
Uso
En primer lugar, asegúrese de que la
jQuery
biblioteca esté incluida. La mejor manera de obtener la última versión de jQuery es actualizar su etiqueta de cabeza con:Después de descargar los archivos, asegúrese de incluirlos en su proyecto:
Margen
Todo lo que tiene que hacer es asignar la clase
splitchar
, seguido del estilo deseado al elemento que envuelve su texto. p.ejUna vez hecho todo esto, solo asegúrese de llamar a la función jQuery en su archivo de documento listo de esta manera:
Personalización
Para que el texto se vea exactamente como lo desea, todo lo que tiene que hacer es aplicar su diseño de esta manera:
¡Eso es! Ahora tienes el
Splitchar
complemento listo. Más información al respecto en http://razvanbalosin.com/Splitchar.js/ .fuente
Sí, puede hacer esto con un solo carácter y solo CSS.
Sin embargo, solo Webkit (y Chrome):
http://jsbin.com/rexoyice/1/
Visualmente, todos los ejemplos que usan dos caracteres (ya sea a través de JS, pseudo elementos CSS o solo HTML) se ven bien, pero tenga en cuenta que todo agrega contenido al DOM que puede causar accesibilidad, así como la selección / corte de texto / pegar problemas
fuente
background-clip: text
es súper impresionante y deberían considerarlo (o algo similartext-decoration-background
) para un módulo de nivel 4.JSFiddle DEMO
¡Lo haremos usando solo pseudo selectores CSS!
Esta técnica funcionará con contenido generado dinámicamente y diferentes tamaños y anchos de fuente.
HTML:
CSS:
Para ajustar la cadena generada dinámicamente, puede usar una función como esta:
fuente
Puede ser irrelevante, tal vez no, pero hace algún tiempo, creé una función jQuery que hace lo mismo, pero horizontalmente.
Lo llamé "Strippex" Para 'stripe' + 'text', demo: http://cdpn.io/FcIBg
No digo que esta sea la solución de ningún problema, pero ya intenté aplicar css a la mitad de un personaje, pero horizontalmente, por lo que la idea es la misma, la realización puede ser horrible, pero funciona.
Ah, y lo más importante, ¡me divertí mucho creándolo!
fuente
pointer-events:none
a&:nth-child(2)
-&:nth-child(5)
. Esto hace que el texto solo se pueda resaltar una vez y solo se obtenga una copia. Puede verlo aquí: codepen.io/anon/pen/upLajSi estás interesado en esto, entonces Glitch de Lucas Bebber es un efecto muy similar y súper genial:
Creado usando un simple SASS Mixin como
Más detalles en los trucos CSS de Chris Coyer y la página Codepen de Lucas Bebber
fuente
Aquí una implementación fea en lienzo. Intenté esta solución, pero los resultados son peores de lo que esperaba, así que aquí está de todos modos.
fuente
0.5
para la parada de color rojo.Lo más cerca que puedo llegar:
Demostración: http://jsfiddle.net/9wxfY/2/
Aquí hay una versión que solo usa un lapso: http://jsfiddle.net/9wxfY/4/
fuente
$('span').width()
solo devuelve el ancho del primer tramo que encuentra; Tendría que ser algo que hiciste para cada par. Lo que me da una idea ...Acabo de jugar con la solución de @ Arbel:
fuente
Otra solución solo para CSS (aunque se necesita un atributo de datos si no desea escribir CSS con letras específicas). Este funciona más en todos los ámbitos (Probado IE 9/10, Chrome más reciente y FF más reciente)
fuente
Solución limitada de CSS y jQuery
No estoy seguro de cuán elegante es esta solución, pero corta todo exactamente a la mitad: http://jsfiddle.net/9wxfY/11/
De lo contrario, he creado una buena solución para usted ... Todo lo que necesita hacer es tener esto para su HTML:
Eche un vistazo a esta edición más reciente y precisa a partir del 13/06/2016: http://jsfiddle.net/9wxfY/43/
En cuanto al CSS, es muy limitado ... Solo necesita aplicarlo a
:nth-child(even)
fuente
http://experimental.samtremaine.co.uk/half-style/
Puede utilizar este código para hacer todo tipo de cosas interesantes: esta es solo una implementación que mi asociado y yo ideamos anoche.
fuente
Una buena solución exclusiva de WebKit que aprovecha el
background-clip: text
soporte: http://jsfiddle.net/sandro_paganotti/wLkVt/fuente
¿Qué tal algo como esto para un texto más corto?
Incluso podría funcionar para texto más largo si hicieras algo con un bucle, repitiendo los caracteres con JavaScript. De todos modos, el resultado es algo como esto:
fuente
FWIW, aquí está mi opinión sobre esto haciéndolo solo con CSS: http://codepen.io/ricardozea/pen/uFbts/
Varias notas:
La razón principal por la que hice esto fue para probarme a mí mismo y ver si podía lograr el estilo de la mitad de un personaje al tiempo que proporcionaba una respuesta significativa al OP.
Soy consciente de que esta no es una solución ideal o más escalable y las soluciones propuestas por la gente aquí son mucho mejores para escenarios del "mundo real".
El código CSS que creé se basa en los primeros pensamientos que se me ocurrieron y en mi enfoque personal del problema.
Mi solución solo funciona en caracteres simétricos, como X, A, O, M. ** No funciona en caracteres asimétricos como B, C, F, K o letras minúsculas.
** SIN EMBARGO, este enfoque crea 'formas' muy interesantes con caracteres asimétricos. Intente cambiar la X a una K o una letra minúscula como una h o una p en el CSS :)
HTML
SCSS
fuente
También puede hacerlo usando SVG, si lo desea:
http://codepen.io/nicbell/pen/jGcbq
fuente
Esto se puede lograr con solo el
:before
selector CSS ycontent property value
.>> Ver en jsFiddle
fuente
Puedes usar el siguiente código. Aquí, en este ejemplo, utilicé la
h1
etiqueta y agregué un atributodata-title-text="Display Text"
que aparecerá con un texto de color diferente en elh1
elemento de texto de la etiqueta, lo que da efecto al texto de medio color como se muestra en el ejemplo a continuaciónfuente
¡Solo para el récord en la historia!
He encontrado una solución para mi propio trabajo desde hace 5-6 años, que es Gradext (javascript puro y css puro, sin dependencia).
La explicación técnica es que puede crear un elemento como este:
ahora, si desea hacer un degradado en el texto, debe crear varias capas, cada una coloreada individualmente y el espectro creado ilustrará el efecto de degradado.
por ejemplo, mira esta es la palabra lorem dentro de ay
<span>
causará un efecto de gradiente horizontal ( verifique los ejemplos ):y puede continuar haciendo este patrón durante mucho tiempo y también en un párrafo largo.
¡Pero!
¿Qué sucede si desea crear un efecto de gradiente vertical en los textos?
Luego hay otra solución que podría ser útil. Lo describiré en detalles.
Asumiendo nuestro primero de
<span>
nuevo. pero el contenido no debería ser las letras individualmente; el contenido debe ser todo el texto, y ahora vamos a copiar el mismo<span>
una y otra vez (recuento de tramos definirá la calidad de su gradiente, mayor envergadura, un mejor resultado, pero los malos resultados). Echa un vistazo a esto:De nuevo, pero!
¿Qué pasa si desea hacer que estos efectos de degradado se muevan y creen una animación?
bueno, hay otra solución para eso también. ¡Definitivamente debe verificar
animation: true
o incluso el.hoverable()
método que conducirá a un gradiente para comenzar según la posición del cursor! (suena bien xD)así es simplemente cómo estamos creando gradientes (lineales o radiales) en los textos. Si le gustó la idea o quiere saber más al respecto, debe consultar los enlaces provistos.
Tal vez esta no sea la mejor opción, tal vez no sea la mejor manera de hacer esto, pero abrirá algo de espacio para crear animaciones emocionantes y deliciosas para inspirar a otras personas a una mejor solución.
¡Le permitirá usar el estilo de degradado en los textos, que es compatible incluso con IE8!
Aquí puede encontrar una demostración en vivo en funcionamiento y el repositorio original también está aquí en GitHub, código abierto y listo para recibir algunas actualizaciones (: D)
Esta es mi primera vez (sí, después de 5 años, lo has escuchado bien) mencionar este repositorio en cualquier lugar de Internet, ¡y estoy emocionado por eso!
[Actualización: agosto de 2019:] Github eliminó la demostración de páginas de github de ese repositorio porque soy de Irán. Solo el código fuente está disponible aquí aunque ...
fuente