- From: François REMY <francois.remy.dev@outlook.com>
- Date: Thu, 17 Apr 2014 18:34:35 +0200
- To: "Ron van den Boogaard" <ron@ronvdb.com>
- Cc: "CSS WG" <www-style@w3.org>
> Can you remind us what the "cascade" keyword is meant to do? I don’t
> understand the example by itself.
>
> Simon Sapin
Sure. It is replaced at cascade time by the value the property would have if
the current declaration was deemed invalid (or didn't exist).
.ZoomOnHover { transform: scale(1.1) cascade; } // will not affect other
transforms
.UpsideDown { transform: rotate(180deg) cascade; } // idem
<span class="UpsideDown ZoomedIn"> // transform: rotate(180deg)
scale(1.1) none;
In fact, "* { property: cascade }" is equivalent to nothing being done,
because the declaration is simply ignored. Also, see [1].
> As an author, to me this feels more like a hack than a solution.
> Using !important is considered bad practice where I am living anyway.
>
> Ron van den Boogaard
It's the traditional usage of !important that's an issue, not the feature
per se. In this case, I'm implementing the Decorator pattern [0] in CSS,
where the final value of the property walks through a set of "filters"
(those have to be executed as last instruction, and therefore are !important
to be prioritized against normal declarations). I don't say declaration
should ever be !important, because *that* would be bad practice, but I don't
see why we couldn't use !important to apply filter and value-transform
functions on otherwise classically set values.
[0] http://en.wikipedia.org/wiki/Decorator_pattern
[1] http://lists.w3.org/Archives/Public/www-style/2014Apr/0013.html
Received on Thursday, 17 April 2014 16:34:59 UTC