Friday, March 3, 2017

LESS - Passing Rulesets to Mixins

Description

Detached ruleset contains an ordinary ruleset such as properties, nested rulesets, variables declaration, mixins etc. It is stored in a variable and included into other structure where all its properties of the ruleset will get copied to that structure.

Example

The below example is passing ruleset to mixin in the LESS file:

passing_ruleset.htm

<!doctype html>
<head>
 <link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div class="cont">
   <h2>Welcome to TutorialsPoint</h2>
   <p>The largest Tutorials Library on the web.</p>
</div>
</body>
</html>
Next, create file style.less

style.less

@detached-ruleset: {
    .mixin() {
        font-family: "Comic Sans MS";
        background-color: #AA86EE;
    }
};

.cont {
    @detached-ruleset();
    .mixin();
}
You can compile the style.less file to style.css by using the following command:
lessc style.less style.css
Next execute the above command, it will create style.css file automatically with the below code:

style.css

.cont {
  font-family: "Comic Sans MS";
  background-color: #AA86EE;
}

Output

Let's carry out the following steps to see how above code works:
  • Save the above html code in passing_ruleset.htm file.
  • Open this HTML file in a browser, an output as below gets displayed.
Less passing ruleset to mixin

Scoping

All variables and mixins in detached ruleset are available wherever it is called or defined, otherwise both caller and definition scope are available. The declaration scope takes the priority when both scopes contain same mixin or variable. Detached ruleset body is defined in the declaration scope. It does not change its scope after the detached ruleset is copied from one variable to another.
Following table lists all the types of scope:
S.N.Types & Description
1 Definition and Caller Scope Visibility
Variables and mixin are defined inside the detached ruleset.
2 Referencing Won't Modify Detached Ruleset Scope
Just giving the references, the ruleset does not access to any new scopes.
3 Unlocking Will Modify Detached Ruleset Scope
The detached ruleset can access to scope by being imported into it.

No comments:

Post a Comment