Slide 1

Slide 1 text

#smx @jonoalderson How to make a perfect website

Slide 2

Slide 2 text

#smx @jonoalderson Photo by Max Baskakov on Unsplash

Slide 3

Slide 3 text

#smx @jonoalderson

Slide 4

Slide 4 text

#smx @jonoalderson A sad cat

Slide 5

Slide 5 text

#smx @jonoalderson A sad cat

Slide 6

Slide 6 text

#smx @jonoalderson .app

Slide 7

Slide 7 text

#smx @jonoalderson

Slide 8

Slide 8 text

#smx @jonoalderson youtube.com/watch?v=F1kYBnY6mwg

Slide 9

Slide 9 text

#smx @jonoalderson A sad cat 500px

Slide 10

Slide 10 text

#smx @jonoalderson A sad cat 280px

Slide 11

Slide 11 text

#smx @jonoalderson A sad cat ?

Slide 12

Slide 12 text

#smx @jonoalderson A sad cat

Slide 13

Slide 13 text

#smx @jonoalderson A sad cat

Slide 14

Slide 14 text

#smx @jonoalderson A sad cat

Slide 15

Slide 15 text

#smx @jonoalderson A sad cat

Slide 16

Slide 16 text

#smx @jonoalderson [what if we want him to be responsive?]

Slide 17

Slide 17 text

#smx @jonoalderson

Slide 18

Slide 18 text

#smx @jonoalderson A sad cat

Slide 19

Slide 19 text

#smx @jonoalderson

Slide 20

Slide 20 text

#smx @jonoalderson

Slide 21

Slide 21 text

#smx @jonoalderson [what if we want him to be responsive?]

Slide 22

Slide 22 text

#smx @jonoalderson A sad cat

Slide 23

Slide 23 text

#smx @jonoalderson A sad cat

Slide 24

Slide 24 text

#smx @jonoalderson A sad cat

Slide 25

Slide 25 text

#smx @jonoalderson A sad cat

Slide 26

Slide 26 text

#smx @jonoalderson A sad cat

Slide 27

Slide 27 text

#smx @jonoalderson [what if we want him to be responsive?]

Slide 28

Slide 28 text

#smx @jonoalderson .bob { width: 100%; height: auto; max-width: 500px; }

Slide 29

Slide 29 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean semper suscipit efficitur. Cras lectus metus, tincidunt at tellus quis, eleifend ultrices urna. Jono’s fun example webpage

Slide 30

Slide 30 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage

Slide 31

Slide 31 text

#smx @jonoalderson A sad cat

Slide 32

Slide 32 text

#smx @jonoalderson A sad cat

Slide 33

Slide 33 text

#smx @jonoalderson https://css-tricks.com/aspect-ratio-boxes/

Slide 34

Slide 34 text

#smx @jonoalderson https://css-tricks.com/aspect-ratio-boxes/

Slide 35

Slide 35 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage

Slide 36

Slide 36 text

#smx @jonoalderson A sad cat

Slide 37

Slide 37 text

#smx @jonoalderson A sad cat

Slide 38

Slide 38 text

#smx @jonoalderson A sad cat

Slide 39

Slide 39 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage

Slide 40

Slide 40 text

#smx @jonoalderson https://github.com/malchata/yall.js/

Slide 41

Slide 41 text

#smx @jonoalderson A sad cat

Slide 42

Slide 42 text

#smx @jonoalderson A sad cat

Slide 43

Slide 43 text

#smx @jonoalderson A sad cat

Slide 44

Slide 44 text

#smx @jonoalderson A sad cat

Slide 45

Slide 45 text

#smx @jonoalderson A sad cat

Slide 46

Slide 46 text

#smx @jonoalderson A sad cat A sad cat

Slide 47

Slide 47 text

#smx @jonoalderson A sad cat A sad cat

Slide 48

Slide 48 text

#smx @jonoalderson document.documentElement.classList.remove("no -js") .no-js .lazy { display: none; } [...] [...]

Slide 49

Slide 49 text

#smx @jonoalderson .lazy { will-change: opacity; opacity: 0; transition: 1s opacity ease-out; } .lazy.loaded { opacity: 1; }

Slide 50

Slide 50 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage

Slide 51

Slide 51 text

#smx @jonoalderson A sad cat

Slide 52

Slide 52 text

#smx @jonoalderson A sad cat

Slide 53

Slide 53 text

#smx @jonoalderson A sad cat

Slide 54

Slide 54 text

#smx @jonoalderson

Slide 55

Slide 55 text

#smx @jonoalderson A sad cat

Slide 56

Slide 56 text

#smx @jonoalderson Jono’s fun example webpage [what if we want him to be responsive?]

Slide 57

Slide 57 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage 1200px 300px

Slide 58

Slide 58 text

#smx @jonoalderson A sad cat

Slide 59

Slide 59 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage 1200px 300px 280px

Slide 60

Slide 60 text

#smx @jonoalderson

Slide 61

Slide 61 text

#smx @jonoalderson

Slide 62

Slide 62 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage 1200px 300px 280px

Slide 63

Slide 63 text

#smx @jonoalderson click for cats

Slide 64

Slide 64 text

#smx @jonoalderson click for cats .cat-icon::after { --icon: url(data:image/svg+xml,[SVG_GOES_HERE]); line-height: 1.25rem; display: inline-block; width: 1.25rem; height: 1.25rem; content: ""; background: currentColor; -webkit-mask-image: var(--icon); -webkit-mask-size: 1.25rem 1.25rem; -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; background-size: 100% 100%; }

Slide 65

Slide 65 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage 1200px 300px 280px click for cats

Slide 66

Slide 66 text

#smx @jonoalderson A sad cat, linking to a page about cats

Slide 67

Slide 67 text

#smx @jonoalderson A
sad cat A sad cat. Photo by Max Baskakov A sad cat. Photo by Max Baskakov

Slide 68

Slide 68 text

#smx @jonoalderson <figure> <figcaption>A sad cat. Photo by Max Baskakovfigcaption> figure> A sad cat. Photo by Max Baskakov

Slide 69

Slide 69 text

#smx @jonoalderson youtube.com/watch?v=flf2vS0IoRs

Slide 70

Slide 70 text

#smx @jonoalderson cloudinary.com/blog/evolution_of_img_gif_without_the_gif

Slide 71

Slide 71 text

#smx @jonoalderson Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit ante ultrices, gravida dolor ac, aliquet quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per... Jono’s fun example webpage 300px click for cats A sad cat. Photo by Max Baskakov A sad cat. Photo by Max Baskakov

Slide 72

Slide 72 text

#smx @jonoalderson Take a breath.

Slide 73

Slide 73 text

#smx @jonoalderson My point isn’t, “images are complex”

Slide 74

Slide 74 text

#smx @jonoalderson developers.google.com/web/fundamentals/design-and-ux/responsive/images

Slide 75

Slide 75 text

#smx @jonoalderson My point isn’t, “go learn all of this” or “make your images perfect”

Slide 76

Slide 76 text

#smx @jonoalderson How to make a perfect load a font

Slide 77

Slide 77 text

#smx @jonoalderson Hello world

Slide 78

Slide 78 text

#smx @jonoalderson @font-face { font-family:'Rubik'; src: url('/fonts/rubik.ttf’); } Hello world

Slide 79

Slide 79 text

#smx @jonoalderson @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:swap; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-700.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-ext-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-ext-700.woff2?ver=1606167081') format('woff2'); }

Slide 80

Slide 80 text

#smx @jonoalderson @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:fallback; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-700.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-ext-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-ext-700.woff2?ver=1606167081') format('woff2'); }

Slide 81

Slide 81 text

#smx @jonoalderson body, input, button, select, textarea { font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; } @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:optional; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-700.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:400; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik'), local('Rubik-Regular'), url('/fonts/rubik-latin-ext-400.woff2?ver=1606167081') format('woff2'); } @font-face { font-family:'Rubik'; font-style:normal; font-weight:700; font-display:swap; unicode-range:U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; src:local('Rubik Bold'), local('Rubik-Bold'), url('/fonts/rubik-latin-ext-700.woff2?ver=1606167081') format('woff2'); }

Slide 82

Slide 82 text

#smx @jonoalderson @font-face { font-family: "Rubik-fallback-Arial"; size-adjust: 97.38%; ascent-override: 99%; letter-spacing: -0.0135em; src: local("Arial"); } body, input, button, select, textarea { font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, Rubik-fallback-Arial, sans-serif; }

Slide 83

Slide 83 text

#smx @jonoalderson My point isn’t, “fonts are complex”

Slide 84

Slide 84 text

#smx @jonoalderson

Slide 85

Slide 85 text

#smx @jonoalderson My point isn’t, “go learn all of this” or “make your fonts perfect”

Slide 86

Slide 86 text

#smx @jonoalderson Deja vu?

Slide 87

Slide 87 text

#smx @jonoalderson Publishing & optimization suite Telco infrastructure (fibre, security, analytics) App store Operating system

Slide 88

Slide 88 text

#smx @jonoalderson Anticlimactic, eh?

Slide 89

Slide 89 text

#smx @jonoalderson “We can do this ourselves”

Slide 90

Slide 90 text

#smx @jonoalderson Stop trying to make a perfect website

Slide 91

Slide 91 text

#smx @jonoalderson Stop accepting that it’s normal for your website to be crappy

Slide 92

Slide 92 text

#smx @jonoalderson Get other people to make your website perfect for you

Slide 93

Slide 93 text

#smx @jonoalderson Telco infrastructure (fibre, security, analytics) Publishing & optimization suite App store Operating system

Slide 94

Slide 94 text

#smx @jonoalderson Get help Win

Slide 95

Slide 95 text

#smx @jonoalderson Thanks!