3

As the title says, i want to use LESS variables that are already defined by Magento. for example,

there is variable called @color-white defined in following file.

ROOT/lib/web/css/source/lib/variables/_colors.less

and i want to use that in my own less file that located in my new theme. by doing this is to keep style in consistency. any idea on how to do this?

  • I found out if i created <theme_dir>/css/source/_theme.less, i can use those variables without extra work. But i still don't know what is the best practice or what side effect of do so. – Nero Apr 3 '16 at 3:37
5

As you already figured out how to use the variables, I'll briefly explain the 2 ways recommended by Magento to override or extend the styles from a parent theme:

1. Simple way

  • Extend:

    In your theme directory, create a web/css/source sub-directory. (You've already done this part)

    Create a _extend.less file there. According to the documentation: "Extending a theme using _extend.less is the simplest option when you are happy with everything the parent theme has, but want to add more styles."

  • Override:

    Instead of creating the _extend.less file, you create a _theme.less file.

    In this case you need to copy all variables you need from the parent _theme.less, including those which will not be changed. Then make your changes.

    Drawback: "You need to monitor and manually update your files whenever the parent’s _theme.less is updated."

2. Structured way

  • Extend

    This method lets you organize your code in a better way. Your changes will be structured. Instead of using a single _extend.less file to include all your changes, you create a extend file for each component from the Magento UI library you want to change.

    Say you want to extend styles from button and navigation components. In your theme directory create 2 files:

    _buttons_extend.less and _navigation_extend.less, then add your changes for each component in the corresponding file.

    Then you create the _extend.less file adding this code:

    • @import '_buttons_extend.less';

    • @import '_navigation_extend.less';

  • Override:

    In your theme, create a copy of the file corresponding to the UI component you want to change _buttons.less, _navigation.less etc This file will override the _buttons.less of the parent theme.

It is important to notice the difference between override and extend.

You can read more at: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/css-guide/css_quick_guide_approach.html

  • Thank you @Luis Garcia. your answer is helpful and instructive. – Nero Apr 9 '16 at 4:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.