RE CSS: inheriting styles in the OO sense (was: Are more font variants in the pipeline?)
Pedro Duque Vieira
pedro.duquevieira at gmail.com
Thu Aug 23 14:49:40 PDT 2012
Sorry I forgot to put the subject. Apoligies for sending a duplicate mail.
Hi,
I don't think the idea is bad but it doesn't exist in the CSS universe. And
if you want to conform to the W3C CSS as is the objective as was mentioned
sometime ago in this mailing list than you don't want to introduce things
that are not present on the standard.
I haven't seen any mention on this kind of inheritance on the CSS
Selectors 4 draft. Have I missed it?
Thanks, best regards,
> Not a bad idea. Certainly the idea has merit and there is a W3C working
> draft on CSS Selectors 4 so maybe this could be proposed.
>
> For JavaFX purposes, it might be possible to use a functional
> pseudo-element to accomplish this:
>
> .my-specific-label-style::-fx-
> inherit(.my-base-label-style) { ? }
>
> The function syntax could allow multiple args for your multiple
> inheritance. Declarations would be copied from the inherited rules in the
> order given in the args (thus, later declarations override earlier ones)
> but coming before the declarations in the child rule.
>
> As an alternative, it would be fairly straight forward to pre-process a
> file with suitable "extends" syntax and generate a new file with all of the
> "inherited" declarations rolled into the normalized selector that would be
> parseable by standard CSS syntax.
>
> It never hurts to create a feature request so ideas like these aren't lost.
>
> On Aug 23, 2012, at 9:19 AM, Daniel Zwolenski wrote:
>
> > This is maybe a good opening to ask what the thoughts would be on adding
> some stuff beyond web-css, in particular "inheritance" (in the OO sense,
> not the containment sense that CSS already supports).
> >
> > So if I have a base style like:
> >
> > .my-base-label-style {
> > -fx-font: 15px "Open Sans";
> > -fx-background-color: red;
> > }
> >
> > Then we have specific instances that then extend this, and override as
> needed:
> >
> > .my-specific-label-style extends my-base-label-style {
> > -fx-border: 1px solid green;
> > -fx-background-color: red;
> > }
> >
> > (syntax used is for descriptive purposes only, not a suggestion).
> >
> > So the resulting styles would be the merged set of these two (with the
> base class overriding the parent class styles).
> >
> > This would mean we could avoid adding both styles in the code, and just
> add the actual specific class (which implies the base class), which means
> styling is kept nicely in the stylesheet. If I want to change my button to
> not use the base class, that's a CSS change, not a code change.
> >
> > Multiple inheritance would be bonus points (where each 'extends'
> overrides the last).
> >
> > I don't know the ramifications of doing this and if it is possible in
> the JFX implementation. I just know this type of usage is something I have
> often wanted and wondered about.
> >
> > If 'extends' style doesn't work, what about an -fx-base-class attribute:
> >
> > .my-specific-label-style {
> > -fx-base-class: my-base-label-style1, my-base-label-style2;
> > -fx-border: 1px solid green;
> > -fx-background-color: red;
> > }
> >
> > Bad idea?
> >
> >
>
--
Pedro Duque Vieira
More information about the openjfx-dev
mailing list