-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
executable file
·353 lines (247 loc) · 11.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=1024"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<title>Stop writing CSS</title>
<meta name="description"
content="impress.js is a presentation tool based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com."/>
<meta name="author" content="Bartek Szopka"/>
<link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic"
rel="stylesheet"/>
<link rel="stylesheet" href="css/main.css"/>
<link rel="stylesheet" href="libs/highlight/styles/tomorrow-night-bright.css"/>
<script src="libs/highlight/highlight.pack.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
<link rel="shortcut icon" href="favicon.ico"/>
</head>
<div id="impress">
<div id="intro" class="step" data-x="-10000" data-y="0" data-z="10000">
<h1>Stop writing CSS</h1>
</div>
<div class="step" data-x="-10000" data-y="1000" data-z="10000">
<p><cite>"Along with JavaScript and HTML, CSS is a core technology for creating websites. Unfortunately,
the language itself lacks key features, which leads to a high level of duplication and a lack of
meaningful abstractions. While CSS3 aims to rectify some of these issues,
it will be years before the modules that make up CSS3 will be properly
supported in most browsers. Fortunately, there is a solution today using CSS preprocessors
like SASS and LESS. Due to their quality and support, we believe that the days of handwritten CSS,
for anything apart from trivial work, are over."</cite></p>
</div>
<div class="step" data-x="-10000" data-y="5000" data-z="0">
<h1>What is a CSS Preprocessors?</h1>
</div>
<div class="step" data-x="-10000" data-y="5140" data-z="0">
<p>A scripting language thats extends CSS and gets <br/>
compiled into regular CSS syntax</p>
</div>
<div class="step" data-x="0" data-y="0" data-z="0">
<h1>CSS Preprocessors</h1>
</div>
<div class="step li" data-x="20" data-y="80" data-z="0">
<p>LESS</p>
</div>
<div class="step li" data-x="20" data-y="130" data-z="0">
<p>Stulys</p>
</div>
<div id="sass-li" class="step li" data-x="20" data-y="180" data-z="0">
<p>SASS</p>
</div>
<div class="step" data-x="2500" data-y="620" data-z="0">
<h1>What do we get?</h1>
</div>
<div class="step" data-x="2500" data-y="1620" data-z="0">
<small>Variables</small>
<pre><code class="scss">
$primary-color: #333;
.my-class {
color: $primary-color;
}
</code></pre>
</div>
<div class="step" data-x="2500" data-y="2620" data-z="0">
<small>Nesting</small>
<pre><code class="scss">
.my-class span {
color: red;
}
.my-class p {
color: blue;
}
</code></pre>
</div>
<div class="step" data-x="2500" data-y="2620" data-z="0" data-rotate-y="90">
<pre><code class="scss">
.my-class {
span {
color: red;
}
p {
color: blue;
}
}
</code></pre>
</div>
<div class="step" data-x="2500" data-y="3620" data-z="0">
<small>Mixins</small>
<pre><code class="scss">
@mixin my-border($color, $width) {
border-color: $color;
border-width: $width;
border-style: dashed;
}
p { @include my-border(red, 3px); }
</code></pre>
</div>
<div class="step" data-x="2500" data-y="3620" data-z="0" data-rotate-y="90">
<pre><code class="scss">
p {
border-color: red;
border-width: 3px;
border-style: dashed;
}
</code></pre>
</div>
<div class="step" data-x="2500" data-y="4620" data-z="0">
<small>Control Directives & Expressions</small>
<pre><code class="scss">
@mixin myMixin($var) {
@if $var == xyz {
color: green;
} @else {
color: black;
}
}
</code></pre>
</div>
<div class="step" data-x="4500" data-y="0" data-z="0">
<h1>Compass</h1>
<p>Compass is an open-source CSS authoring framework which uses the SASS language.</p>
<ul>
<li>Feild tested mixins</li>
<li>Sprite chart generation</li>
</ul>
</div>
<div class="step" data-x="4500" data-y="1000" data-z="0">
<h1>Will these technologies bloat my CSS?</h1>
</div>
<div class="step" data-x="6000" data-y="1000" data-z="0">
<h1>They could...</h1>
</div>
<div class="step" data-x="8000" data-y="1000" data-z="0">
<h1>Thanks!</h1>
</div>
<!--
The `id` attribute of the step element is used to identify it in the URL, but it's optional.
If it is not defined, it will get a default value of `step-N` where N is a number of slide.
So in the example below it'll be `step-2`.
The hash part of the url when this step is active will be `#/step-2`.
You can also use `#step-2` in a link, to point directly to this particular step.
Please note, that while `#/step-2` (with slash) would also work in a link it's not recommended.
Using classic `id`-based links like `#step-2` makes these links usable also in fallback mode.
-->
<!--
And the last one shows full power and flexibility of impress.js.
You can not only position element in 3D, but also rotate it around any axis.
So this one here will get rotated by -40 degrees (40 degrees anticlockwise) around X axis and
10 degrees (clockwise) around Y axis.
You can of course rotate it around Z axis with `data-rotate-z` - it has exactly the same effect
as `data-rotate` (these two are basically aliases).
-->
<!--
So to summarize of all the possible attributes used to position presentation steps, we have:
* `data-x`, `data-y`, `data-z` - they define the position of **the center** of step element on
the canvas in pixels; their default value is 0;
* `data-rotate-x`, `data-rotate-y`, 'data-rotate-z`, `data-rotate` - they define the rotation of
the element around given axis in degrees; their default value is 0; `data-rotate` and `data-rotate-z`
are exactly the same;
* `data-scale` - defines the scale of step element; default value is 1
These values are used by impress.js in CSS transformation functions, so for more information consult
CSS transfrom docs: https://developer.mozilla.org/en/CSS/transform
-->
<div id="overview" class="step" data-x="3000" data-y="1500" data-scale="10">
</div>
</div>
<!--
Hint is not related to impress.js in any way.
But it can show you how to use impress.js features in creative way.
When the presentation step is shown (selected) its element gets the class of "active" and the body element
gets the class based on active step id `impress-on-ID` (where ID is the step's id)... It may not be
so clear because of all these "ids" in previous sentence, so for example when the first step (the one with
the id of `bored`) is active, body element gets a class of `impress-on-bored`.
This class is used by this hint below. Check CSS file to see how it's shown with delayed CSS animation when
the first step of presentation is visible for a couple of seconds.
...
And when it comes to this piece of JavaScript below ... kids, don't do this at home ;)
It's just a quick and dirty workaround to get different hint text for touch devices.
In a real world it should be at least placed in separate JS file ... and the touch content should be
probably just hidden somewhere in HTML - not hard-coded in the script.
Just sayin' ;)
-->
<div class="hint">
<p>Use a spacebar or arrow keys to navigate</p>
</div>
<script>
if ("ontouchstart" in document.documentElement) {
document.querySelector(".hint").innerHTML = "<p>Tap on the left or right to navigate</p>";
}
</script>
<!--
Last, but not least.
To make all described above really work, you need to include impress.js in the page.
I strongly encourage to minify it first.
In here I just include full source of the script to make it more readable.
You also need to call a `impress().init()` function to initialize impress.js presentation.
And you should do it in the end of your document. Not only because it's a good practice, but also
because it should be done when the whole document is ready.
Of course you can wrap it in any kind of "DOM ready" event, but I was too lazy to do so ;)
-->
<script src="js/impress.js"></script>
<script>impress().init();</script>
<!--
The `impress()` function also gives you access to the API that controls the presentation.
Just store the result of the call:
var api = impress();
and you will get three functions you can call:
`api.init()` - initializes the presentation,
`api.next()` - moves to next step of the presentation,
`api.prev()` - moves to previous step of the presentation,
`api.goto( idx | id | element, [duration] )` - moves the presentation to the step given by its index number
id or the DOM element; second parameter can be used to define duration of the transition in ms,
but it's optional - if not provided default transition duration for the presentation will be used.
You can also simply call `impress()` again to get the API, so `impress().next()` is also allowed.
Don't worry, it wont initialize the presentation again.
For some example uses of this API check the last part of the source of impress.js where the API
is used in event handlers.
-->
</body>
</html>
<!--
Now you know more or less everything you need to build your first impress.js presentation, but before
you start...
Oh, you've already cloned the code from GitHub?
You have it open in text editor?
Stop right there!
That's not how you create awesome presentations. This is only a code. Implementation of the idea that
first needs to grow in your mind.
So if you want to build great presentation take a pencil and piece of paper. And turn off the computer.
Sketch, draw and write. Brainstorm your ideas on a paper. Try to build a mind-map of what you'd like
to present. It will get you closer and closer to the layout you'll build later with impress.js.
Get back to the code only when you have your presentation ready on a paper. It doesn't make sense to do
it earlier, because you'll only waste your time fighting with positioning of useless points.
If you think I'm crazy, please put your hands on a book called "Presentation Zen". It's all about
creating awesome and engaging presentations.
Think about it. 'Cause impress.js may not help you, if you have nothing interesting to say.
-->
<!--
Are you still reading this?
For real?
I'm impressed! Feel free to let me know that you got that far (I'm @bartaz on Twitter), 'cause I'd like
to congratulate you personally :)
But you don't have to do it now. Take my advice and take some time off. Make yourself a cup of coffee, tea,
or anything you like to drink. And raise a glass for me ;)
Cheers!
-->