How to understand the word cascade in CSS?

Why it is called cascade, instead of inheritable, or derivable, or chained, or something else? Maybe I have misunderstood the word? And, when should I use the word cascade in my own software architectures?


Cascading is used in a manner specifically referring to the priority-based rule matching mechanism. Inherit would tend to be avoided because CSS isn't a programming language, and the way cascading rules work illustrates that; CSS cascading is actually very nearly the opposite of OOP inheritance. Chaining implies entities being joinable in sequence in a way that isn't the case with CSS. Derivable tends to imply a bottom-up organization, like with inheritance, where CSS's is more top-down.

If you are making architecture that involves a broad set of entities with subsets being targeted for processing by arbitrary rule sets that can override each other based on their priority, then I would say sure, use cascading as part of its description.


CSS - Cascading Style Sheets

Cascade means "to flow or fall in or like a cascade (ie. a waterfall)" where one flow follows another, each building upon the previous.

Inheritable doesn't work here, that word is more usually applied to Object Oriented architectures, and elements don't "inherit" a greater set of attributes.

I don't know why the word cascading in particular was chosen, but if you read the cascading rules section of the CSS2 specification, you'll see that they speak of a cascading order and precedence, where declarations are declared one on top of another. This process wouldn't be quite as evocative with a word such as chaining which implies a sequential not a cumulative process.


Inheritable would be the closest synonym you suggested. The effect of a number of style sheets "cascade" in that their effects are incrementally combined as they are applied in sequence.

For an example of when to use the word "cascade" w.r.t. technology (albeit hardware) you might like to look at the operation of "adder" circuits that "cascade" bit operations to perform a full arithmetic operation.