No se procesan múltiples reglas CSS de tipografía en la regla
@cjpollard gracias, pero parece que estás desmontando algo que se cosió por la razón equivocada. Creo que un enfoque mejor es no unir estas reglas de at-en desde el principio. @artf he presentado una residencia permanente por esto: https://github.com/artf/grapesjs/pull/1036 Para ser sincero, en mi opinión los parsers...
Lee la respuesta completa abajo ↓Pregunta
Última versión de uvas #cfde1c1
Si pones una sola '@font-face', esto se analiza perfectamente:
Ejemplo de JSFiddle: https://jsfiddle.net/szLp8h4n/140/
Captura de pantalla:
<img width="1395" alt="captura de pantalla 2018-04-11 a las 3 19 56 pm" src="https://user-images.githubusercontent.com/331833/38646200-d5c4260e-3d9b-11e8-8c41-7c3c6b1f67dd.png">Sin embargo, si se introduce una segunda 'cara de @font', solo se analiza la segunda y se pierde la primera:
Ejemplo de JSFiddle: https://jsfiddle.net/szLp8h4n/141/
Captura de pantalla:
<img width="1401" alt="captura de pantalla 2018-04-11 a las 3 21 45 pm" src="https://user-images.githubusercontent.com/331833/38646258-14959854-3d9c-11e8-977c-23a611fff2c5.png">Estoy intentando depurar esto, pero agradecería vuestra ayuda. ¿Podría estar relacionado con línea 122 en ParserCss.js?
Respuestas (3)
@cjpollard gracias, pero parece que estás desmontando algo que se cosió por la razón equivocada.
Creo que un enfoque mejor es no unir estas reglas de at-en desde el principio. @artf he presentado una residencia permanente por esto:
https://github.com/artf/grapesjs/pull/1036
Para ser sincero, en mi opinión los parsers no deberían intentar ser inteligentes y optimizar el código. El navegador es un analizador sintáctico en sí mismo, y si las reglas están en el navegador, las uvitas deberían respetar esto. Al complicar el analizador, introducimos varios errores (yo mismo ya he reunido una lista). De hecho, recomendaría no tener analizador en absoluto y simplemente obtener componentes y sus estilos, etc., en tiempo real desde la API DOM / Javascript.
Totalmente de acuerdo contigo, Tom, el objetivo principal de 'cssComposer' es simplemente ofrecer una interfaz ágil para las definiciones de estilo. Lo que tenemos dentro de CssParser ahora mismo es en realidad un analizador del navegador y el resto del código es solo un recorridor. De hecho, tenemos problemas como el #307 que muestran la inconsistencia generada por los analizadores del navegador (de hecho, obtendrás salidas diferentes en cada navegador). Mi idea (añadida ya a la hoja de ruta #74) era crear una interfaz extensible que permitiera añadir analizadores personalizados al editor (por ejemplo, 'postcss' para CSS), pero obviamente aún no encontré tiempo para empezarla.
Por cierto, gracias por la solución tan rápida
@artf que lo sepas, ahora puedo reproducir esto en un caso de prueba que falla:
it('Editor de Init desde el elemento con múltiples reglas at-font', () => {
config.fromElement = 1;
config.storageManager = { type: 0 };
fixture.innerHTML = '
<style>
@font-face {
familia de fuentes: 'Glificones Medianos';
src: formato URL (https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2) ('Woff2');
}
@font-face {
familia de fuentes: 'Droid Sans';
src: formato URL (https://fonts.gstatic.com/s/droidsans/v8/SlGVmQWMvZQIdix7AFxXkHNSbRYXags.woff2) ('woff2');
}
' +</style> htmlString;
editor const = obj.init(config);
const css = editor.getCss();
const styles = editor.getStyle();
expect(styles.length).toIgual(2);
});
Tras una depuración adicional, esto parece deberse a que 'cssComposer' piensa que la segunda regla es la misma que la anterior y luego devuelve la primera:
https://github.com/artf/grapesjs/blob/dev/src/css_composer/index.js#L185
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #609
La edición CSS duplica propiedades del cuerpo
Sigue duplicando secciones y propiedades del cuerpo: Cuando lo subo, esto es lo que parece: <img width="472" alt="captura de pantalla 2017-...
Issue #1012
¿Es posible exportar el contenido html con los atributos de datos en el editor?
@artf ¿Es posible exportar el contenido html con 'atributos de datos' en orden de reutilizar? Hablamos de esto anteriormente, sobre cómo pa...
Issue #1358
Crear enlace solo al pulsar el botón "OK"
Hola a todos, Sobrescribí el acto predeterminado 'Enlace' del editor de texto enriquecido: <img width="1274" alt="captura de pantalla 2018-...
Issue #1361
[Bug]: El marcador de posición de arrastre no debería ser visible cuando no hay objetivo
Estoy usando la última versión. Pasos para reproducirse:Configurar los grapesjs de tal manera que el envoltorio no sea dejable de caer.He c...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.