_layout.less 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. // /**
  2. // * Copyright © Magento, Inc. All rights reserved.
  3. // * See COPYING.txt for license details.
  4. // */
  5. // # Layout
  6. //
  7. // Magento UI library provides mixins for flexible page layout customization. For simple quick layout customization global layout variables are used.
  8. header.header {
  9. background-color: rgba(255, 0, 0, .2);
  10. }
  11. .column.main {
  12. background-color: rgba(255, 255, 0, .2);
  13. }
  14. .column.left {
  15. background-color: rgba(0, 255, 255, .2);
  16. }
  17. .column.right {
  18. background-color: rgba(0, 0, 255, .2);
  19. }
  20. footer.footer {
  21. background-color: rgba(0, 0, 0, .2);
  22. }
  23. // # Layout global variables
  24. //
  25. // <pre>
  26. // <table>
  27. // <tr>
  28. // <th class="vars_head">Variables list names</th>
  29. // <th class="vars_head">Default value</th>
  30. // <th class="vars_head">Allowable values</th>
  31. // <th class="vars_head">Comment</th>
  32. // </tr>
  33. // <tr>
  34. // <th>@layout__width</th>
  35. // <td class="vars_value">''</td>
  36. // <td class="vars_value">'' | false | value</td>
  37. // <td>Page minimum width</td>
  38. // </tr>
  39. // <tr>
  40. // <th>@layout__max-width</th>
  41. // <td class="vars_value">1280px</td>
  42. // <td class="vars_value">'' | false | value</td>
  43. // <td>Page maximum width</td>
  44. // </tr>
  45. // <tr>
  46. // <th>@layout-indent__width</th>
  47. // <td class="vars_value">20px</td>
  48. // <td class="vars_value">'' | false | value</td>
  49. // <td>Page indents on the left and right</td>
  50. // </tr>
  51. // <tr>
  52. // <th colspan="4" class="vars_section">Class names defining different layouts</th>
  53. // </tr>
  54. // <tr>
  55. // <th>@layout-class-1column</th>
  56. // <td class="vars_value">page-layout-1column</td>
  57. // <td class="vars_value">'' | false | <nobr>page-layout-1column</nobr> | <nobr>page-layout-2columns-left</nobr> | <nobr>page-layout-2columns-right</nobr> | <nobr>page-layout-3columns</nobr></td>
  58. // <td>Class name for one column layout</td>
  59. // </tr>
  60. // <tr>
  61. // <th>@layout-class-2columns__left</th>
  62. // <td class="vars_value">page-layout-2columns-left</td>
  63. // <td class="vars_value">'' | false | <nobr>page-layout-1column</nobr> | <nobr>page-layout-2columns-left</nobr> | <nobr>page-layout-2columns-right</nobr> | <nobr>page-layout-3columns</nobr></td>
  64. // <td>Class name for two columns layout with left sidebar</td>
  65. // </tr>
  66. // <tr>
  67. // <th nowrap="nowrap">@layout-class-2columns__right</th>
  68. // <td class="vars_value">page-layout-2columns-right</td>
  69. // <td class="vars_value">'' | false | <nobr>page-layout-1column</nobr> | <nobr>page-layout-2columns-left</nobr> | <nobr>page-layout-2columns-right</nobr> | <nobr>page-layout-3columns</nobr></td>
  70. // <td>Class name for two columns layout with right sidebar</td>
  71. // </tr>
  72. // <tr>
  73. // <th>@layout-class-3columns</th>
  74. // <td class="vars_value">page-layout-3columns</td>
  75. // <td class="vars_value">'' | false | <nobr>page-layout-1column</nobr> | <nobr>page-layout-2columns-left</nobr> | <nobr>page-layout-2columns-right</nobr> | <nobr>page-layout-3columns</nobr></td>
  76. // <td>Class name for three columns layout with left sidebar</td>
  77. // </tr>
  78. // <tr>
  79. // <th colspan="4" class="vars_section">Variables used for layout grid</th>
  80. // </tr>
  81. // <tr>
  82. // <th>@total-columns</th>
  83. // <td class="vars_value">12</td>
  84. // <td class="vars_value">'' | false | value</td>
  85. // <td>Number of total columns in layout (i.e. <em>1, 2, 3</em>)</td>
  86. // </tr>
  87. // <tr>
  88. // <th>@gutter-width</th>
  89. // <td class="vars_value">0</td>
  90. // <td class="vars_value">'' | false | value</td>
  91. // <td>Distance between columns</td>
  92. // </tr>
  93. // <tr>
  94. // <th colspan="4" class="vars_section">Variables for layout columns</th>
  95. // </tr>
  96. // <tr>
  97. // <th>@layout-column__width</th>
  98. // <td class="vars_value">@total-columns</td>
  99. // <td class="vars_value">'' | false | value</td>
  100. // <td>Sets base columns number</td>
  101. // </tr>
  102. // <tr>
  103. // <th>@layout-column__sidebar-width</th>
  104. // <td class="vars_value">2</td>
  105. // <td class="vars_value">'' | false | value</td>
  106. // <td>Sets sidebar width</td>
  107. // </tr>
  108. // <tr>
  109. // <th>@layout-column__left-width</th>
  110. // <td class="vars_value">@layout-column__sidebar-width</td>
  111. // <td class="vars_value">'' | false | value</td>
  112. // <td>Sets left column width</td>
  113. // </tr>
  114. // <tr>
  115. // <th>@layout-column__right-width</th>
  116. // <td class="vars_value">@layout-column__sidebar-width</td>
  117. // <td class="vars_value">'' | false | value</td>
  118. // <td>Sets right column width</td>
  119. // </tr>
  120. // <tr>
  121. // <th colspan="4" class="vars_section">Variables for layout columns depending on layout used</th>
  122. // </tr>
  123. // <tr>
  124. // <th>@layout-column-main__width-1</th>
  125. // <td class="vars_value">100%</td>
  126. // <td class="vars_value">'' | false | value</td>
  127. // <td>Sets one column width</td>
  128. // </tr>
  129. // <tr>
  130. // <th>@layout-column-main__width-2-left</th>
  131. // <td class="vars_value">@layout-column__width - @layout-column__left-width</td>
  132. // <td class="vars_value">'' | false | value</td>
  133. // <td>Sets left column width</td>
  134. // </tr>
  135. // <tr>
  136. // <th nowrap="nowrap">@layout-column-main__width-2-right</th>
  137. // <td class="vars_value">@layout-column__width - @layout-column__right-width</td>
  138. // <td class="vars_value">'' | false | value</td>
  139. // <td>Sets right column width</td>
  140. // </tr>
  141. // <tr>
  142. // <th>@layout-column-main__width-3</th>
  143. // <td class="vars_value">@layout-column__width - @layout-column__left-width - @layout-column__right-width</td>
  144. // <td class="vars_value">'' | false | value</td>
  145. // <td>Sets three columns layout main column width</td>
  146. // </tr>
  147. // <tr>
  148. // <th colspan="4" class="vars_section">Settings variables</th>
  149. // </tr>
  150. // <tr>
  151. // <th>@use-flex</th>
  152. // <td class="vars_value">true</td>
  153. // <td class="vars_value">'' | true | false</td>
  154. // <td>Sets compatibility for browsers not supporting flex</td>
  155. // </tr>
  156. // <tr>
  157. // <th>@responsive</th>
  158. // <td class="vars_value">true</td>
  159. // <td class="vars_value">'' | true | false</td>
  160. // <td>Is set to true if theme has responsive layout</td>
  161. // </tr>
  162. // </table>
  163. // </pre>
  164. // # Page layouts
  165. //
  166. // Default properties for page columns are generated using alias mixins:
  167. //
  168. // <code>#lib-layout-columns</code> - sets columns container
  169. //
  170. // <code>#lib-layout-columns > .main()</code> - alias for main column
  171. //
  172. // <code>#lib-layout-columns > .left()</code> - alias for left column
  173. //
  174. // <code>#lib-layout-columns > .right()</code> - alias for right column
  175. //
  176. // <code>#lib-layout-columns > .reset()</code> - column width and order reset may be used in RWD
  177. //
  178. // These aliases use default class names for layouts predefined in vars (i.e. <code>@layout-class-3columns: layout-3</code>) and general column mixin *[<code>.lib-layout-column()</code>](#layout-column)*
  179. //
  180. // ## Three columns page layout
  181. //
  182. // ```html
  183. // <div class="page-wrapper layout-3">
  184. // <header class="header">Header</header>
  185. // <section class="page main">
  186. // <div class="columns">
  187. // <div class="column main">Main column</div><!--
  188. // --><div class="column left sidebar">Left column</div><!--
  189. // --><div class="column right sidebar">Right column</div>
  190. // </div>
  191. // </section>
  192. // <footer class="footer">Footer</footer>
  193. // </div>
  194. // ```
  195. //
  196. // ## Two columns page layout with sidebar on the left
  197. // ```html
  198. // <div class="page-wrapper layout-2-left">
  199. // <header class="header">Header</header>
  200. // <section class="page main">
  201. // <div class="columns">
  202. // <div class="column main">Main column</div><!--
  203. // --><div class="column left sidebar">Left column</div>
  204. // </div>
  205. // </section>
  206. // <footer class="footer">Footer</footer>
  207. // </div>
  208. // ```
  209. //
  210. // ## Two columns page layout with sidebar on the right
  211. //
  212. // ```html
  213. // <div class="page-wrapper layout-2-right">
  214. // <header class="header">Header</header>
  215. // <section class="page main">
  216. // <div class="columns">
  217. // <div class="column main">Main column</div><!--
  218. // --><div class="column right sidebar">Right column</div>
  219. // </div>
  220. // </section>
  221. // <footer class="footer">Footer</footer>
  222. // </div>
  223. // ```
  224. //
  225. // ## One column page layout
  226. //
  227. // ```html
  228. // <div class="page-wrapper layout-1">
  229. // <header class="header">Header</header>
  230. // <section class="page main">
  231. // <div class="columns">
  232. // <div class="column main">Main column</div>
  233. // </div>
  234. // </section>
  235. // <footer class="footer">Footer</footer>
  236. // </div>
  237. // ```
  238. .columns {
  239. #lib-layout-columns();
  240. > .column {
  241. &:extend(.add-box-sizing all);
  242. .lib-css(padding-bottom, @indent__xl);
  243. }
  244. }
  245. @media (min-width: 600px) {
  246. .column.main {
  247. #lib-layout-columns > .main();
  248. }
  249. .column.left {
  250. #lib-layout-columns > .left();
  251. }
  252. .column.right {
  253. #lib-layout-columns > .right();
  254. }
  255. }
  256. // # Layout column
  257. //
  258. // The <code>.layout-column()</code> mixin is used to setup page columns. It configures number, position and width of columns
  259. //
  260. // 3 columns layout example:
  261. //
  262. // ```html
  263. // <div class="layout-example-3">
  264. // <header class="header">Header</header>
  265. // <section class="page main">
  266. // <div class="columns">
  267. // <div class="column main">Main column</div><!--
  268. // --><div class="column left sidebar">Left column</div><!--
  269. // --><div class="column right sidebar">Right column</div>
  270. // </div>
  271. // </section>
  272. // <footer class="footer">Footer</footer>
  273. // </div>
  274. // ```
  275. //
  276. // To move main column to the left, change 2nd argument <code>@_order</code> for main and left columns:
  277. //
  278. // ```less
  279. // .lib-column.main {
  280. // .lib-layout-column(3, 1, 60%);
  281. // }
  282. // .lib-column.left {
  283. // .lib-layout-column(3, 2, 20%);
  284. // }
  285. // ```
  286. //
  287. // ```html
  288. // <div class="layout-example-3-1">
  289. // <header class="header">Header</header>
  290. // <section class="page main">
  291. // <div class="columns">
  292. // <div class="column main">Main column</div><!--
  293. // --><div class="column left sidebar">Left column</div><!--
  294. // --><div class="column right sidebar">Right column</div>
  295. // </div>
  296. // </section>
  297. // <footer class="footer">Footer</footer>
  298. // </div>
  299. // ```
  300. .layout-example-3 {
  301. .column.main {
  302. .lib-layout-column(3, 2, 60%);
  303. }
  304. .column.left {
  305. .lib-layout-column(3, 1, 20%);
  306. }
  307. .column.right {
  308. .lib-layout-column(3, 3, 20%);
  309. }
  310. }
  311. .layout-example-3-1 {
  312. .column.main {
  313. .lib-layout-column(3, 1, 60%);
  314. }
  315. .column.left {
  316. .lib-layout-column(3, 2, 20%);
  317. }
  318. .column.right {
  319. .lib-layout-column(3, 3, 20%);
  320. }
  321. }
  322. // # Layout column variables
  323. //
  324. // <pre>
  325. // <table>
  326. // <tr>
  327. // <th class="vars_head">Mixin variable</th>
  328. // <th class="vars_head">Allowed values</th>
  329. // <th class="vars_head">Comment</th>
  330. // </tr>
  331. // <tr>
  332. // <th>@_layout__min-width </th>
  333. // <td class="vars_value">number</td>
  334. // <td>Number of total columns in layout (i.e. <em>1, 2, 3</em>)</td>
  335. // </tr>
  336. // <tr>
  337. // <th>@_order</th>
  338. // <td class="vars_value">number</td>
  339. // <td>Order of current column</td>
  340. // </tr>
  341. // <tr>
  342. // <th>@_width</th>
  343. // <td class="vars_value">number</td>
  344. // <td>Width set in css units (<em>20%, 300px, etc.</em>) or in <em>grid columns</em> if unit is not specified. (<em>4</em>)</td>
  345. // </tr>
  346. // </table>
  347. // </pre>
  348. // # Layout width
  349. //
  350. // The <code>.lib-layout-width()</code> mixin is used to set default page width of the element the mixin is applied to. It can be used to set width for the whole page wrapper or for the page elements individualy like header, footer, and so on.
  351. // # Layout width variables
  352. //
  353. // <pre>
  354. // <table>
  355. // <tr>
  356. // <th class="vars_head">Mixin variable</th>
  357. // <th class="vars_head">Default value</th>
  358. // <th class="vars_head">Allowed values</th>
  359. // <th class="vars_head">Comment</th>
  360. // </tr>
  361. // <tr>
  362. // <th>@_layout__min-width</th>
  363. // <td class="vars_value">''</td>
  364. // <td class="vars_value">'' | false | value</td>
  365. // <td>Page minimum width</td>
  366. // </tr>
  367. // <tr>
  368. // <th>@_layout__max-width</th>
  369. // <td class="vars_value">1280px</td>
  370. // <td class="vars_value">'' | false | value</td>
  371. // <td>Page maximum width</td>
  372. // </tr>
  373. // <tr>
  374. // <th>@_layout__indent</th>
  375. // <td class="vars_value">20px</td>
  376. // <td class="vars_value">'' | false | value</td>
  377. // <td>Page indents on the left and right</td>
  378. // </tr>
  379. // </table>
  380. // </pre>