Saltar al contenido

Pseudo elementos CSS en React

Mantén la atención ya que en esta división hallarás el hallazgo que buscas.

Solución:

Recibí una respuesta de @Vjeux en el equipo de React:

HTML / CSS normal:

Something

Reaccionar con estilo en línea:

render: function() 
    return (
        
Something
); ,

El truco es que en lugar de usar ::after en CSS para crear un nuevo elemento, debe crear un nuevo elemento a través de React. Si no desea tener que agregar este elemento en todas partes, cree un componente que lo haga por usted.

Para especial attributes me gusta -webkit-filter, la forma de codificarlos es quitando guiones y poniendo en mayúscula la siguiente letra. Entonces se convierte en WebkitFilter. Tenga en cuenta que haciendo '-webkit-filter': ... también debería funcionar.

Los estilos en línea no se pueden usar para apuntar a pseudoclases o pseudoelementos. Necesita utilizar una hoja de estilo.

Si desea generar CSS de forma dinámica, la forma más sencilla es crear un elemento DOM

El estilo en línea no admite pseudos ni reglas at (p. Ej., @Media). Las recomendaciones van desde la reimplementación de funciones de CSS en JavaScript para estados de CSS como :hover vía onMouseEnter y onMouseLeave a usar más elementos para reproducir pseudo-elementos como :after y :before para usar una hoja de estilo externa.

Personalmente no me gustan todas esas soluciones. Reimplementar las características de CSS a través de JavaScript no se escala bien, ni tampoco agregar marcas superfluas.

Imagine un gran equipo en el que cada desarrollador está recreando características CSS como :hover. Cada desarrollador será Hágalo de manera diferente, a medida que los equipos crezcan en tamaño, si se puede hacer, se hará. El hecho es que con JavaScript hay sobre norte formas de reimplementar las funciones de CSS y, con el tiempo, puede apostar a que se implementen todas y cada una de esas formas con el resultado final de código espagueti.

¿Entonces lo que hay que hacer? Usa CSS. De acuerdo, preguntaste sobre el estilo en línea, asumiendo que probablemente estés en el campo CSS-in-JS (¡yo también!). He encontrado que colocar HTML y CSS es tan valioso como colocar JS y HTML, mucha gente simplemente no se da cuenta todavía (la colocación de JS-HTML también tuvo mucha resistencia al principio).

Hice una solución en este espacio llamada Style It que simplemente le permite escribir CSS de texto sin formato en sus componentes de React. No es necesario desperdiciar ciclos reinventando CSS en JS. Herramienta adecuada para el trabajo adecuado, aquí hay un ejemplo que utiliza :after:

npm install style-it --save

Sintaxis funcional (JSFIDDLE)

import React from 'react';
import Style from 'style-it';

class Intro extends React.Component 
  render() 
    return Style.it(`
      #heart 
        position: relative;
        width: 100px;
        height: 90px;
      
      #heart:before,
      #heart:after 
        position: absolute;
        content: "";
        left: 50px;
        top: 0;
        width: 50px;
        height: 80px;
        background: red;
        -moz-border-radius: 50px 50px 0 0;
        border-radius: 50px 50px 0 0;
        -webkit-transform: rotate(-45deg);
        -moz-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
        -o-transform: rotate(-45deg);
        transform: rotate(-45deg);
        -webkit-transform-origin: 0 100%;
        -moz-transform-origin: 0 100%;
        -ms-transform-origin: 0 100%;
        -o-transform-origin: 0 100%;
        transform-origin: 0 100%;
      
      #heart:after 
        left: 0;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg);
        -webkit-transform-origin: 100% 100%;
        -moz-transform-origin: 100% 100%;
        -ms-transform-origin: 100% 100%;
        -o-transform-origin: 100% 100%;
        transform-origin :100% 100%;
      
    `,
      
); export default Intro;

Sintaxis JSX (JSFIDDLE)

import React from 'react';
import Style from 'style-it';

class Intro extends React.Component 
  render() 
    return (
      
  


export default Intro;

Ejemplo de corazón extraído de CSS-Tricks

Puntuaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *