Ich entwickle ein Webprodukt, das bei der Verwendung Code generiert, den die Benutzer in ihre Site einbetten.Namespaces in CSS und in Stylingkonflikten
Der generierte Code enthält HTML, JavaScript und CSS. Und wenn es in eine Seite eingebettet wird, wird es zusammen mit anderen Inhalten auf dieser Seite angezeigt, auf die ich keine Kontrolle habe. Mit anderen Worten, der von meinem Produkt generierte Code wird in eine Webseite eingebettet, die bereits andere Inhalte enthält. Ich habe keine Kontrolle über das Styling und den Inhalt dieser Seite.
Jetzt mache ich mir Sorgen über das Formatieren von Namenskonflikten. Angenommen, ich verwende eine CSS-Klasse mit dem Namen .amazing-color
und formatiert bestimmte Komponenten auf eine bestimmte Weise.
Angenommen, eine Webseite, die meinen Code zufällig verwendet, hatte auch ein Styling namens .amazing-color
, das einen anderen Styling-Code hätte und mein eigenes Styling überschreiben könnte.
Meine Frage ist, wie kann ich verhindern, dass dies geschieht? Wie kann ich Namenskonflikte in CSS verhindern?
Sie können vorschlagen, dass ich komplexe Namen für meine Stile habe, also würde ich .my-super-amazing-color-212321
verwenden, aber das würde zu komplexen CSS-Klassen führen, die nicht lesbar sind. Ich denke, eine bessere Lösung wäre die Verwendung von Namespaces. Ich bin mir jedoch nicht sicher, ob es Namespaces in CSS gibt, und wenn sie existieren, wie kann ich sie verwenden. Also, gibt es Namensräume in CSS? Können Sie einen Beispielcode zur Verwendung bereitstellen?
Danke.
Danke für Ihre Antwort. Dies ist eine Lösung, die ich mir auch ausgedacht habe, aber es ist möglicherweise keine gute Lösung, weil ich die BEM-Namenskonvention verwende (Details hier: http://getbem.com/). Also, wie kann ich das überwinden? – Greeso
Sorry, ich bin kein Fan von BEM und verwende es nicht, daher kann ich dort nicht wirklich beraten. Ich sehe keinen Grund, warum Sie in Ihren Blocknamen kein gemeinsames Präfix einfügen sollten, aber ich weiß nicht, ob das gegen die BEM-Konventionen verstößt. – Alohci
Ich verstehe, was Sie in Bezug auf BEM meinen. Ich benutze ** modifizierte ** BEM (oder was heißt BEVM wie hier beschrieben https://www.youtube.com/watch?v=nwS7M2L07uU); Dieses Modell ist flexibler und hilft, viele Nachteile von BEM zu überwinden. In Bezug auf Ihre Frage, ob es gegen BEM-Konventionen verstößt, glaube ich nicht, dass es gegen diese Konventionen verstößt, aber es macht den Code weniger lesbar und hoffte, Dinge über Namespaces zu gruppieren, wenn möglich. – Greeso