Updates before nor(DEV):con
This commit is contained in:
parent
de6303e55a
commit
639de3a234
24
taking-flight-with-tailwind-css/code/writing-plugin-1.js
Normal file
24
taking-flight-with-tailwind-css/code/writing-plugin-1.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
// Start require plugin
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
// End require plugin
|
||||
|
||||
// Start add function
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
|
||||
module.exports = plugin(function({ addUtilities }) {
|
||||
|
||||
})
|
||||
// End add function
|
||||
|
||||
// Start function contents
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
|
||||
module.exports = plugin(function({ addUtilities }) {
|
||||
addUtilities({
|
||||
'.list-reset': {
|
||||
listStyle: 'none',
|
||||
padding: 0,
|
||||
},
|
||||
})
|
||||
})
|
||||
// End function contents
|
47
taking-flight-with-tailwind-css/code/writing-plugin-2.js
Normal file
47
taking-flight-with-tailwind-css/code/writing-plugin-2.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
// Start create plugin
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
|
||||
module.exports = plugin(({ addComponents, theme }) {
|
||||
|
||||
});
|
||||
// End create plugin
|
||||
|
||||
// Start define styles
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
|
||||
module.exports = plugin(({ addComponents, theme }) {
|
||||
let styles = {
|
||||
primary: {
|
||||
default: {
|
||||
backgroundColor: theme("colors.primary.DEFAULT"),
|
||||
border: `2px solid ${theme("colors.primary.dark")}`,
|
||||
borderRadius: "10px",
|
||||
color: theme("colors.white"),
|
||||
cursor: "pointer",
|
||||
padding: `${theme("padding.3")} ${theme("padding.12")}`,
|
||||
},
|
||||
|
||||
hover: {
|
||||
backgroundColor: theme("colors.white"),
|
||||
color: theme("colors.primary.DEFAULT"),
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
// End define styles
|
||||
|
||||
// Start add components
|
||||
const plugin = require("tailwindcss/plugin");
|
||||
|
||||
module.exports = plugin(({ addComponents, theme }) {
|
||||
|
||||
// ...
|
||||
|
||||
addComponents({
|
||||
"#edit-checkout.button": styles.primary.default,
|
||||
"#edit-checkout.button:hover, #edit-checkout.button:focus":
|
||||
styles.primary.hover,
|
||||
});
|
||||
});
|
||||
// End add components
|
|
@ -1,15 +1,23 @@
|
|||
embeddedFonts: []
|
||||
["Inconsolata.ttf", "Inconsolata.ttf", "Inconsolata.ttf", "Inconsolata.ttf"]
|
||||
["Helvetica.ttf", "Helvetica-Bold.ttf", "Helvetica.ttf", "Helvetica-Bold.ttf"]
|
||||
embeddedFonts:
|
||||
- - Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- - Helvetica.ttf
|
||||
- Helvetica-Bold.ttf
|
||||
- Helvetica.ttf
|
||||
- Helvetica-Bold.ttf
|
||||
|
||||
fontsAlias:
|
||||
fontFont: Helvetica
|
||||
fontBold: Helvetica-Bold
|
||||
fontFont: Helvetica
|
||||
fontItalic: Helvetica
|
||||
fontMono: Inconsolata
|
||||
fontMonoBold: Inconsolata
|
||||
fontMonoBoldItalic: Inconsolata
|
||||
fontMonoItalic: Inconsolata
|
||||
|
||||
linkColor: '#60a5fa'
|
||||
|
||||
pageSetup:
|
||||
firstTemplate: coverPage
|
||||
|
@ -26,99 +34,84 @@ pageSetup:
|
|||
|
||||
pageTemplates:
|
||||
coverPage:
|
||||
# background: images/title.png
|
||||
frames: []
|
||||
[12%, 10%, 76%, 75%]
|
||||
background: ../images/bg-dark.png
|
||||
frames:
|
||||
- - 12%
|
||||
- 10%
|
||||
- 76%
|
||||
- 75%
|
||||
showFooter: false
|
||||
showHeader: false
|
||||
|
||||
imagePage:
|
||||
alignment: TA_CENTER
|
||||
background: ../images/bg-dark.png
|
||||
frames:
|
||||
- - 3%
|
||||
- 3%
|
||||
- 92%
|
||||
- 92%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
outputPage:
|
||||
background: ../images/bg-dark.png
|
||||
frames:
|
||||
- - 8%
|
||||
- 10%
|
||||
- 82%
|
||||
- 65%
|
||||
showFooter: false
|
||||
showHeader: false
|
||||
|
||||
standardPage:
|
||||
background: ../images/bg-dark.png
|
||||
frames:
|
||||
- - 3%
|
||||
- 3%
|
||||
- 92%
|
||||
- 92%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
titlePage:
|
||||
alignment: TA_CENTER
|
||||
frames: []
|
||||
[8%, 8%, 85%, 65%]
|
||||
background: ../images/bg-dark.png
|
||||
frames:
|
||||
- - 8%
|
||||
- 8%
|
||||
- 85%
|
||||
- 65%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
background: ../images/bg-dark.png
|
||||
|
||||
standardPage:
|
||||
frames: []
|
||||
[3%, 3%, 92%, 92%]
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
background: ../images/bg-dark.png
|
||||
|
||||
imagePage:
|
||||
alignment: TA_CENTER
|
||||
frames: []
|
||||
[3%, 3%, 92%, 92%]
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
background: ../images/bg-dark.png
|
||||
|
||||
outputPage:
|
||||
frames: []
|
||||
[8%, 10%, 82%, 65%]
|
||||
showFooter: false
|
||||
showHeader: false
|
||||
background: ../images/bg-dark.png
|
||||
|
||||
linkColor: #60a5fa
|
||||
|
||||
styles:
|
||||
normal:
|
||||
fontSize: 24
|
||||
textColor: #ffffff
|
||||
|
||||
bodytext:
|
||||
alignment: TA_LEFT
|
||||
|
||||
heading:
|
||||
fontName: fontBold
|
||||
fontSize: 20
|
||||
spaceAfter: 16
|
||||
textColor: #60a5fa
|
||||
|
||||
title:
|
||||
fontSize: 300%
|
||||
parent: heading
|
||||
|
||||
bullet-list:
|
||||
commands: []
|
||||
[LEFTPADDING, [0, 0], [1, -1], 5]
|
||||
[RIGHTPADDING, [0, 0], [1, -1], 0]
|
||||
colWidths: ["20", null]
|
||||
textColor: #ffffff
|
||||
colWidths:
|
||||
- '20'
|
||||
- null
|
||||
commands:
|
||||
- - LEFTPADDING
|
||||
- - 0
|
||||
- 0
|
||||
- - 1
|
||||
- -1
|
||||
- 5
|
||||
- - RIGHTPADDING
|
||||
- - 0
|
||||
- 0
|
||||
- - 1
|
||||
- -1
|
||||
- 0
|
||||
textColor: '#ffffff'
|
||||
|
||||
bullet-list-item:
|
||||
spaceBefore: 18
|
||||
spaceAfter: 0
|
||||
spaceBefore: 18
|
||||
|
||||
titleslideinfo:
|
||||
alignment: TA_CENTER
|
||||
fontSize: 140%
|
||||
parent: normal
|
||||
|
||||
footer:
|
||||
alignment: TA_RIGHT
|
||||
fontName: fontMono
|
||||
fontSize: 20
|
||||
textColor: #24608a
|
||||
rightIndent: 16
|
||||
spaceBefore: 0
|
||||
|
||||
literal:
|
||||
backColor: #111111
|
||||
fontName: fontMono
|
||||
|
||||
code:
|
||||
backColor: #111111
|
||||
borderWidth: 0
|
||||
fontSize: 24
|
||||
leading: 26
|
||||
parent: literal
|
||||
spaceBefore: 4
|
||||
|
||||
centred:
|
||||
alignment: TA_CENTER
|
||||
parent: normal
|
||||
|
@ -129,3 +122,43 @@ styles:
|
|||
fontSize: 48
|
||||
leading: 64
|
||||
parent: heading
|
||||
|
||||
code:
|
||||
backColor: '#111111'
|
||||
borderWidth: 0
|
||||
fontSize: 24
|
||||
leading: 26
|
||||
parent: literal
|
||||
spaceBefore: 4
|
||||
|
||||
footer:
|
||||
alignment: TA_RIGHT
|
||||
fontName: fontMono
|
||||
fontSize: 20
|
||||
rightIndent: 16
|
||||
spaceBefore: 0
|
||||
textColor: '#24608a'
|
||||
|
||||
heading:
|
||||
fontName: fontBold
|
||||
fontSize: 20
|
||||
spaceAfter: 16
|
||||
textColor: '#60a5fa'
|
||||
|
||||
literal:
|
||||
backColor: '#111111'
|
||||
fontName: fontMono
|
||||
|
||||
normal:
|
||||
fontSize: 24
|
||||
textColor: '#ffffff'
|
||||
|
||||
title:
|
||||
fontSize: 300%
|
||||
parent: heading
|
||||
|
||||
titleslideinfo:
|
||||
alignment: TA_CENTER
|
||||
fontSize: 140%
|
||||
parent: normal
|
||||
|
|
@ -1,16 +1,24 @@
|
|||
embeddedFonts: []
|
||||
["Inconsolata.ttf", "Inconsolata.ttf", "Inconsolata.ttf", "Inconsolata.ttf"]
|
||||
["Helvetica.ttf", "Helvetica-Bold.ttf", "Helvetica.ttf", "Helvetica-Bold.ttf"]
|
||||
embeddedFonts:
|
||||
- - Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- Inconsolata.ttf
|
||||
- - Helvetica.ttf
|
||||
- Helvetica-Bold.ttf
|
||||
- Helvetica.ttf
|
||||
- Helvetica-Bold.ttf
|
||||
|
||||
fontsAlias:
|
||||
fontFont: Helvetica
|
||||
fontBold: Helvetica-Bold
|
||||
fontFont: Helvetica
|
||||
fontItalic: Helvetica
|
||||
fontMono: Inconsolata
|
||||
fontMonoBold: Inconsolata
|
||||
fontMonoBoldItalic: Inconsolata
|
||||
fontMonoItalic: Inconsolata
|
||||
|
||||
linkColor: '#24608a'
|
||||
|
||||
pageSetup:
|
||||
firstTemplate: coverPage
|
||||
height: 18cm
|
||||
|
@ -26,94 +34,79 @@ pageSetup:
|
|||
|
||||
pageTemplates:
|
||||
coverPage:
|
||||
# background: images/title.png
|
||||
frames: []
|
||||
[12%, 10%, 76%, 75%]
|
||||
frames:
|
||||
- - 12%
|
||||
- 10%
|
||||
- 76%
|
||||
- 75%
|
||||
showFooter: false
|
||||
showHeader: false
|
||||
|
||||
titlePage:
|
||||
alignment: TA_CENTER
|
||||
frames: []
|
||||
[8%, 8%, 85%, 65%]
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
standardPage:
|
||||
frames: []
|
||||
[3%, 3%, 92%, 92%]
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
imagePage:
|
||||
alignment: TA_CENTER
|
||||
frames: []
|
||||
[3%, 3%, 92%, 92%]
|
||||
frames:
|
||||
- - 3%
|
||||
- 3%
|
||||
- 92%
|
||||
- 92%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
outputPage:
|
||||
frames: []
|
||||
[8%, 10%, 82%, 65%]
|
||||
frames:
|
||||
- - 8%
|
||||
- 10%
|
||||
- 82%
|
||||
- 65%
|
||||
showFooter: false
|
||||
showHeader: false
|
||||
|
||||
linkColor: #24608a
|
||||
standardPage:
|
||||
frames:
|
||||
- - 3%
|
||||
- 3%
|
||||
- 92%
|
||||
- 92%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
titlePage:
|
||||
alignment: TA_CENTER
|
||||
frames:
|
||||
- - 8%
|
||||
- 8%
|
||||
- 85%
|
||||
- 65%
|
||||
showFooter: true
|
||||
showHeader: false
|
||||
|
||||
styles:
|
||||
normal:
|
||||
fontSize: 24
|
||||
textColor: #383745
|
||||
|
||||
bodytext:
|
||||
alignment: TA_LEFT
|
||||
|
||||
heading:
|
||||
fontName: fontBold
|
||||
fontSize: 20
|
||||
spaceAfter: 16
|
||||
textColor: #24608a
|
||||
|
||||
title:
|
||||
fontSize: 300%
|
||||
parent: heading
|
||||
|
||||
bullet-list:
|
||||
commands: []
|
||||
[LEFTPADDING, [0, 0], [1, -1], 5]
|
||||
[RIGHTPADDING, [0, 0], [1, -1], 0]
|
||||
colWidths: ["20", null]
|
||||
textColor: #aaaaaa
|
||||
colWidths:
|
||||
- '20'
|
||||
- null
|
||||
commands:
|
||||
- - LEFTPADDING
|
||||
- - 0
|
||||
- 0
|
||||
- - 1
|
||||
- -1
|
||||
- 5
|
||||
- - RIGHTPADDING
|
||||
- - 0
|
||||
- 0
|
||||
- - 1
|
||||
- -1
|
||||
- 0
|
||||
textColor: '#aaaaaa'
|
||||
|
||||
bullet-list-item:
|
||||
spaceBefore: 18
|
||||
spaceAfter: 0
|
||||
spaceBefore: 18
|
||||
|
||||
titleslideinfo:
|
||||
alignment: TA_CENTER
|
||||
fontSize: 140%
|
||||
parent: normal
|
||||
|
||||
footer:
|
||||
alignment: TA_RIGHT
|
||||
fontName: fontMono
|
||||
fontSize: 20
|
||||
textColor: #24608a
|
||||
rightIndent: 16
|
||||
spaceBefore: 0
|
||||
|
||||
literal:
|
||||
backColor: white
|
||||
fontName: fontMono
|
||||
|
||||
code:
|
||||
backColor: white
|
||||
borderWidth: 0
|
||||
fontSize: 24
|
||||
leading: 26
|
||||
parent: literal
|
||||
spaceBefore: 0
|
||||
|
||||
centred:
|
||||
alignment: TA_CENTER
|
||||
parent: normal
|
||||
|
@ -124,3 +117,42 @@ styles:
|
|||
fontSize: 48
|
||||
leading: 64
|
||||
parent: heading
|
||||
|
||||
code:
|
||||
backColor: white
|
||||
borderWidth: 0
|
||||
fontSize: 24
|
||||
leading: 26
|
||||
parent: literal
|
||||
spaceBefore: 0
|
||||
|
||||
footer:
|
||||
alignment: TA_RIGHT
|
||||
fontName: fontMono
|
||||
fontSize: 20
|
||||
rightIndent: 16
|
||||
spaceBefore: 0
|
||||
textColor: '#24608a'
|
||||
|
||||
heading:
|
||||
fontName: fontBold
|
||||
fontSize: 20
|
||||
spaceAfter: 16
|
||||
textColor: '#24608a'
|
||||
|
||||
literal:
|
||||
backColor: white
|
||||
fontName: fontMono
|
||||
|
||||
normal:
|
||||
fontSize: 24
|
||||
textColor: '#383745'
|
||||
|
||||
title:
|
||||
fontSize: 300%
|
||||
parent: heading
|
||||
|
||||
titleslideinfo:
|
||||
alignment: TA_CENTER
|
||||
fontSize: 140%
|
||||
parent: normal
|
|
@ -1,44 +0,0 @@
|
|||
.. class:: centredtitle
|
||||
|
||||
Adding Tailwind to your CSS
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Including Tailwind
|
||||
==================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/1-adding-tailwind-directives.txt
|
||||
|
||||
Adding your own classes
|
||||
=======================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/2-adding-custom-classes.txt
|
||||
|
||||
Adding your own classes (with layers)
|
||||
=====================================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/3-layers.txt
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Automatically places your code in the right position."
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npx tailwind
|
||||
--input src/css/tailwind.pcss
|
||||
--output dist/tailwind.css``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "As well as the output file, we need to specify the input file."
|
|
@ -1,34 +0,0 @@
|
|||
.. Switch to a title page.
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Arbitrary values
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``w-[23px] md:w-[250px]``
|
||||
``text-[#abc123]``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``grid-cols-[fit-content(theme(spacing.32))]``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``lg:[&:nth-child(3)]:hover
|
||||
:underline``
|
|
@ -1,62 +0,0 @@
|
|||
|
||||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
How I deal with repetition?
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Avoid repetition by extracting components
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Does something justify becoming a component?
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Could the duplication be moved elsewhere?
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Twig partials, Vue components, WordPress template parts."
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Loops
|
||||
=====
|
||||
|
||||
.. code-block:: twig
|
||||
:linenos:
|
||||
:include: code/20-loops.txt
|
||||
|
||||
Includes
|
||||
========
|
||||
|
||||
.. code-block:: twig
|
||||
:linenos:
|
||||
:include: code/21-includes.txt
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Move the duplicate markup into a partial, so there's only one version. Pass data in."
|
||||
|
||||
Extracting CSS components
|
||||
=========================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/css-apply-before.txt
|
||||
|
||||
Extracting CSS components
|
||||
=========================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/css-apply-after.txt
|
|
@ -1,55 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Customising Tailwind
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npx tailwind init``
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
tailwind.config.js
|
||||
==================
|
||||
|
||||
.. code-block:: javascript
|
||||
:include: code/tailwind-basic-config.txt
|
||||
:linenos:
|
||||
|
||||
|
||||
Overriding configuration
|
||||
========================
|
||||
|
||||
.. code-block:: javascript
|
||||
:include: code/override-colours.txt
|
||||
:linenos:
|
||||
:hl_lines: 5 6 7
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Overrides all colours."
|
||||
|
||||
Extending configuration
|
||||
=======================
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:include: code/extending-colours.txt
|
||||
:hl_lines: 5 6 7 8 9
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Extends Tailwind's default colours."
|
||||
|
||||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npx tailwind init --full``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak titlePage
|
|
@ -1,97 +0,0 @@
|
|||
.. raw:: pdf
|
||||
|
||||
PageBreak titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Adding Tailwind CSS to an existing project
|
||||
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak standardPage
|
||||
|
||||
Disabling the reset styles
|
||||
==========================
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:hl_lines: 7 8 9
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: [],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
corePlugins: {
|
||||
preflight: false,
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
||||
Prefixing class names
|
||||
=====================
|
||||
|
||||
Turn classes like ``flex`` into ``tw-flex``.
|
||||
|
||||
|
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:hl_lines: 3
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
prefix: "tw-",
|
||||
content: [],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
||||
!important
|
||||
==========
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:hl_lines: 3
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
important: true,
|
||||
content: [],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
||||
!important
|
||||
==========
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:hl_lines: 3
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
important: "#app",
|
||||
content: [],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
||||
!important
|
||||
==========
|
||||
|
||||
|
|
||||
|
||||
|
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``!flex``
|
|
@ -1,33 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Keeping Things Small: Controlling the file size
|
||||
|
||||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Just in Time (JIT mode)
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Since the JIT mode was added and changed to be the default option, Tailwind only generates the classes that it needs to - i.e. only the classes in your HTML."
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Content
|
||||
=======
|
||||
|
||||
Tell Tailwind where it should look for utility classes.
|
||||
|
||||
|
|
||||
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:include: code/tailwind-config-content.js
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Tailwind will scan the files within the content array and "
|
|
@ -1,30 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Installation and Usage
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npm install --save-dev
|
||||
tailwindcss``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "There is a CDN version available that provides everything but you can't customise it."
|
||||
TextAnnotation "There's also the play.tailwindcss.com website that you can use."
|
||||
TextAnnotation "Adds it as a dependency to your package.json file"
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npx tailwind
|
||||
--content **/*.html
|
||||
--output build/tailwind.css``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "tailwind.config.js is optional, and an input file is optional."
|
|
@ -1,57 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Interaction states
|
||||
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``hover, focus, active, disabled, visited,
|
||||
focus-within,
|
||||
first-child, last-child``
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``[state][separator][class]``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "State = hover, focus, group focus, focus within."
|
||||
TextAnnotation "Separator = configurable"
|
||||
TextAnnotation "Colon by default"
|
||||
TextAnnotation "Class = the same utility class that you would have used normally"
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``hover:text-red-500``
|
||||
|
||||
|
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``focus:text-red-500``
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Interaction states in CSS
|
||||
=========================
|
||||
|
||||
.. code-block:: css
|
||||
:include: code/9-hover-classes.txt
|
||||
:linenos:
|
||||
|
||||
Interaction states in HTML
|
||||
==========================
|
||||
|
||||
.. code-block:: html
|
||||
:include: code/10-hover-class-example.txt
|
||||
:linenos:
|
|
@ -1,131 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
What is Tailwind CSS?
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
A utility-first CSS framework for rapidly building custom designs
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "CSS utility class generator."
|
||||
TextAnnotation "PostCSS plugin."
|
||||
TextAnnotation "Make different looking sites using the same class names."
|
||||
TextAnnotation "No 'Tailwind looking site' like there is with Bootstrap."
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Tailwind CSS is a highly customisable, low-level CSS framework
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "No components like Bootstrap or Bulma."
|
||||
TextAnnotation "Configure it per project."
|
||||
TextAnnotation "Extendable if needed via additional plugins."
|
||||
TextAnnotation "Avoids the need to name things prematurely."
|
||||
TextAnnotation "Can extract components if needed (reusability)."
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Tailwind is more than a CSS framework, it's an engine for creating design systems
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Good default values provided - colours, fonts, padding, widths"
|
||||
TextAnnotation "Designing with constraints."
|
||||
TextAnnotation "Using inline styles, every value is a magic number."
|
||||
TextAnnotation "With utilities, you're choosing styles from a predefined design system, which makes it much easier to build visually consistent UIs."
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
- Text/border/background colours
|
||||
- Font size/family/weight
|
||||
- Alignment
|
||||
- Padding/margin/negative margin
|
||||
- Flexbox
|
||||
- Positioning
|
||||
- Lists
|
||||
- z-index
|
||||
- Opacity
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Some of the 'original' things that Tailwind would generate classes for."
|
||||
|
||||
.. page::
|
||||
|
||||
- Screenreader visibility
|
||||
- Placeholder colour
|
||||
- first-child, last-child, nth-child
|
||||
- CSS Grid
|
||||
- Transition
|
||||
- Transform
|
||||
- Spacing / Divide
|
||||
- Focus ring
|
||||
- Text clamping
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak titlePage
|
||||
TextAnnotation "All generated from a single, customisable configuration file."
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``block
|
||||
inline
|
||||
flex
|
||||
grid``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
TextAnnotation "A class that toggles a single CSS property."
|
||||
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``text-sm
|
||||
text-base
|
||||
text-lg
|
||||
text-xl
|
||||
text-2xl``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak
|
||||
TextAnnotation "T-shirt size arguments."
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``text-blue-50
|
||||
text-blue-100
|
||||
text-blue-200
|
||||
text-blue-300
|
||||
text-blue-400
|
||||
text-blue-500``
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
PageBreak imagePage
|
||||
TextAnnotation "Arguments for text colour and shade."
|
||||
|
||||
.. image:: images/screenshot-laravel-nova.png
|
||||
:width: 23cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/screenshot-send-firefox.png
|
||||
:width: 23cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/screenshot-rebuilding-bartik.png
|
||||
:width: 23cm
|
|
@ -1,104 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Extending Tailwind CSS with Plugins
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``npm install --save-dev
|
||||
tailwindcss-list-reset``
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Adding a plugin
|
||||
===============
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:include: code/plugins-add-plugin.txt
|
||||
|
||||
Generated CSS
|
||||
=============
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/plugins-generated-css.txt
|
||||
|
||||
Writing plugins
|
||||
===============
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:include: code/plugins-plugin-source.txt
|
||||
|
||||
Writing plugins
|
||||
===============
|
||||
|
||||
Adding `child` and `child-hover` variants:
|
||||
|
||||
|
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
|
||||
const plugin = require('tailwindcss/plugin');
|
||||
|
||||
module.exports = plugin(({ addVariant }) => {
|
||||
addVariant('child', '& > *');
|
||||
addVariant('child-hover', '& > *:hover');
|
||||
});
|
||||
|
||||
Writing plugins
|
||||
===============
|
||||
|
||||
Adding a `hocus` variant:
|
||||
|
||||
|
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
|
||||
const plugin = require('tailwindcss/plugin');
|
||||
|
||||
module.exports = plugin(({ addVariant }) => {
|
||||
addVariant('hocus', ['&:hover', '&:focus']);
|
||||
});
|
||||
|
||||
Writing plugins
|
||||
===============
|
||||
|
||||
Creating a button component:
|
||||
|
||||
|
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
|
||||
plugin(function ({ addComponents, theme }) {
|
||||
let styles = {
|
||||
primary: {
|
||||
default: {
|
||||
backgroundColor: theme("colors.primary.DEFAULT"),
|
||||
border: `2px solid ${theme("colors.primary.dark")}`,
|
||||
borderRadius: "10px",
|
||||
color: theme("colors.white"),
|
||||
cursor: "pointer",
|
||||
padding: `${theme("padding.3")} ${theme("padding.12")}`,
|
||||
},
|
||||
|
||||
hover: {
|
||||
backgroundColor: theme("colors.white"),
|
||||
color: theme("colors.primary.DEFAULT"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
addComponents({
|
||||
"#edit-checkout.button": styles.primary.default,
|
||||
"#edit-checkout.button:hover, #edit-checkout.button:focus":
|
||||
styles.primary.hover,
|
||||
})
|
||||
})
|
|
@ -1,52 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Responsive
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "Mobile first by default"
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``[screen][separator][class]``
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Screens (aka breakpoints)
|
||||
=========================
|
||||
|
||||
.. code-block:: javascript
|
||||
:linenos:
|
||||
:include: code/12-default-screens.txt
|
||||
|
||||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``md:flex``
|
||||
|
||||
|
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
``md:hover:bg-red-500``
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Responsive classes in CSS
|
||||
=========================
|
||||
|
||||
.. code-block:: css
|
||||
:linenos:
|
||||
:include: code/13-responsive-classes.txt
|
||||
|
||||
Responsive classes in HTML
|
||||
==========================
|
||||
|
||||
.. code-block:: html
|
||||
:linenos:
|
||||
:include: code/14-responsive-class-example.txt
|
|
@ -1,74 +0,0 @@
|
|||
.. page:: titlePage
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
How do I use Tailwind?
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Style elements by applying pre-existing classes directly in your HTML
|
||||
|
||||
.. page::
|
||||
|
||||
.. class:: centredtitle
|
||||
|
||||
Using utility classes to build custom designs without writing CSS
|
||||
|
||||
.. page:: standardPage
|
||||
|
||||
Benefits
|
||||
========
|
||||
|
||||
- You don't waste time and energy inventing class names.
|
||||
- No switching between CSS and HTML files.
|
||||
- Your CSS stops growing.
|
||||
- Making changes feels (and is) safer.
|
||||
|
||||
.. raw:: pdf
|
||||
|
||||
TextAnnotation "No more adding silly class names like sidebar-inner-wrapper just to be able to style something, and no more agonizing over the perfect abstract name for something that's really just a flex container."
|
||||
TextAnnotation "Using a traditional approach, your CSS files get bigger every time you add a new feature. With utilities, everything is reusable so you rarely need to write new CSS."
|
||||
TextAnnotation "CSS is global and you never know what you're breaking when you make a change."
|
||||
TextAnnotation "Classes in your HTML are local, so you can change them without worrying about something else breaking."
|
||||
|
||||
.. page:: imagePage
|
||||
|
||||
.. image:: images/example/0.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/1.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/2.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/3.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/4.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/5.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/6.png
|
||||
:width: 18cm
|
||||
|
||||
.. page::
|
||||
|
||||
.. image:: images/example/7.png
|
||||
:width: 18cm
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue