From 9b5644e51fe06aa8c67b47cd3e4cb98c90093a0e Mon Sep 17 00:00:00 2001 From: Jonathan Reinink Date: Tue, 31 Oct 2017 08:28:33 -0400 Subject: [PATCH] Finish initial version of the responsive design docs --- docs/source/docs/responsive-design.blade.md | 79 +++++++++++++++++++-- 1 file changed, 74 insertions(+), 5 deletions(-) diff --git a/docs/source/docs/responsive-design.blade.md b/docs/source/docs/responsive-design.blade.md index 6df8cf61c..10fcb79ea 100644 --- a/docs/source/docs/responsive-design.blade.md +++ b/docs/source/docs/responsive-design.blade.md @@ -7,11 +7,46 @@ title: "Responsive Design" Tailwind allows you to build responsive designs in the same way you build the rest of your design—using utility classes. Every utility in Tailwind is also available in screen-size specific variations. For example, the `.font-bold` utility can be used on small screen sizes using the `.sm:font-bold` class, on medium screen sizes using the `.md:font-bold` class, on large screen sizes using the `.lg:font-bold` class and on extra large screen sizes using the `.xl:font-bold` class. -This is done using predfined screen sizes, each of which are given a unique name like `sm`, `md`, `lg` and `xl`. Tailwind takes a "mobile first" approach to responsive design, where each screen size represents a minimum viewport width. Any classes you apply at smaller screen sizes will also apply to larger sizes, unless of course you override them. This approach, while simple, is actually very powerful and can be used to build complex, beautiful, responsive designs. +This is done using predefined screen sizes (media query breakpoints), each of which are given a unique name like `sm`, `md`, `lg` and `xl`. By default Tailwind takes a "mobile first" approach, where each screen size represents a minimum viewport width. Any classes you apply at smaller screen sizes are also applied to larger sizes, unless of course you override them, which is the whole point! This approach, while simple, is actually very powerful and can be used to build complex, beautiful, responsive designs. -## Screens +## Responsive example -You define your project's screen sizes in your Tailwind config under the `screens` key. Screens in Tailwind are essentially CSS media queries. If you provide a single value for a screen, Tailwind will treat this as a minimum screen size value for that breakpoint. Here are the default screen sizes: +@component('_partials.responsive-code-sample') +@slot('none') +
+
+
+@endslot +@slot('sm') +
+
+
+@endslot +@slot('md') +
+
+
+@endslot +@slot('lg') +
+
+
+@endslot +@slot('xl') +
+
+
+@endslot +@slot('code') +
+ ... +
+@endslot +@endcomponent + +## Customing screens + +You define your project's screen sizes in your Tailwind config under the `screens` key. Screens in Tailwind are essentially CSS media queries. If you provide a single value for a screen, Tailwind will treat this as the minimum screen size value for that screen breakpoint. Here are the default screen sizes: ```js screens: { @@ -26,8 +61,42 @@ Feel free to have as few or as many screens as you want, naming them in whatever ## Advanced screens -Tailwind also allows for more complex screen definitions, which can be useful in certain situations. +Tailwind also allows for more complex screen definitions, which can be useful in certain situations. For example, if you wanted to define both the minimum and maximum size for your screens, you could do that like this: ```js -// add +screens: { + 'sm': {'min': '576px', 'max': '767px'}, + 'md': {'min': '768px', 'max': '991px'}, + 'lg': {'min': '992px', 'max': '1999px'}, + 'xl': {'min': '1200px'}, +}, +``` + +You can also provide multiple ranges per screen. This is useful in situations where you have a sidebar navigation and want to maintain consistent content breakpoints, regardless of the navigation being visible or not. Here's an example: + +```js +// Sidebar is shown at 768px +screens: { + 'sm': '576px', + 'md': [ + {'min': '668px', 'max': '767px'}, + {'min': '768px'} + ], + 'lg': '992px', + 'xl': '1200px', +}, +``` + +## Print screens + +As mentioned earlier, screens in Tailwind are essentially just CSS media queries. So while you normally define your screensizes in pixels, it's possible to also define non-regular screens using the `raw` key. Here is an example of how you could use this to create a print-only screen size. + +```js +screens: { + 'sm': '576px', + 'md': '768px', + 'lg': '992px', + 'xl': '1200px', + 'print': {'raw': 'print'} +}, ```