WEBVTT

1
00:00:01.590 --> 00:00:02.960
<v Instructor>The box model is one</v>

2
00:00:02.960 --> 00:00:06.310
of the most fundamental parts of CSS.

3
00:00:06.310 --> 00:00:09.470
That's because it's the main factor that defines

4
00:00:09.470 --> 00:00:12.680
how elements are displayed on a webpage

5
00:00:12.680 --> 00:00:14.823
and also how they are sized.

6
00:00:16.340 --> 00:00:18.810
So according to the box model,

7
00:00:18.810 --> 00:00:21.980
each and every element on a webpage can be seen

8
00:00:21.980 --> 00:00:26.370
as a rectangular box and each box can have a width,

9
00:00:26.370 --> 00:00:30.560
a height, padding, margins and a border.

10
00:00:30.560 --> 00:00:34.750
And we can specify all these using CSS properties,

11
00:00:34.750 --> 00:00:37.080
but note that they are all optional.

12
00:00:37.080 --> 00:00:39.680
So there can be boxes with no margins

13
00:00:39.680 --> 00:00:43.470
or no paddings or no border at all.

14
00:00:43.470 --> 00:00:47.220
Now this image here shows us how the box model works.

15
00:00:47.220 --> 00:00:51.290
And so let's break it down, first the content of a box

16
00:00:51.290 --> 00:00:53.830
is where all the text images

17
00:00:53.830 --> 00:00:56.760
and other content that we specify goes.

18
00:00:56.760 --> 00:01:00.000
We can easily define its height and with using

19
00:01:00.000 --> 00:01:02.600
the corresponding CSS properties.

20
00:01:02.600 --> 00:01:05.600
Next, the padding is a transparent area

21
00:01:05.600 --> 00:01:10.010
around the content but still inside of the box.

22
00:01:10.010 --> 00:01:13.700
And we use paddings to create white space inside of a box.

23
00:01:13.700 --> 00:01:15.070
And we can define the padding

24
00:01:15.070 --> 00:01:19.250
by specifying the padding property in CSS.

25
00:01:19.250 --> 00:01:22.910
Next, we can specify a border for any box

26
00:01:22.910 --> 00:01:24.650
and that border then goes around

27
00:01:24.650 --> 00:01:26.830
the padding and the content.

28
00:01:26.830 --> 00:01:31.140
And this actually we already did in the last lecture, right?

29
00:01:31.140 --> 00:01:34.870
Then similar to the padding, we have the margin,

30
00:01:34.870 --> 00:01:37.550
but instead of being inside the box,

31
00:01:37.550 --> 00:01:39.540
the margin is white space

32
00:01:39.540 --> 00:01:43.150
that's actually outside of the box itself.

33
00:01:43.150 --> 00:01:47.440
So we can think of margin as the space between boxes.

34
00:01:47.440 --> 00:01:48.690
So for instance,

35
00:01:48.690 --> 00:01:51.980
if we want to create some space between two elements,

36
00:01:51.980 --> 00:01:55.950
we will simply use their margin properties and CSS.

37
00:01:55.950 --> 00:02:00.020
And finally, there is something called the fill area.

38
00:02:00.020 --> 00:02:02.150
So remember how the text content

39
00:02:02.150 --> 00:02:05.630
and images go inside the content box,

40
00:02:05.630 --> 00:02:09.030
well, the same does not apply for background images

41
00:02:09.030 --> 00:02:12.030
or the background color of a box.

42
00:02:12.030 --> 00:02:14.920
These properties will actually be applied not only

43
00:02:14.920 --> 00:02:18.830
to the content box, but to the entire fill area,

44
00:02:18.830 --> 00:02:21.920
which also includes the padding and the border,

45
00:02:21.920 --> 00:02:24.450
but not the margin, okay?

46
00:02:24.450 --> 00:02:27.050
Alright, so let's go back to our code

47
00:02:27.050 --> 00:02:29.333
and implement some of these properties.

48
00:02:30.600 --> 00:02:32.950
Now, if we take a look at our page here,

49
00:02:32.950 --> 00:02:35.210
we will see that actually there's already

50
00:02:35.210 --> 00:02:37.700
a lot of space here, right?

51
00:02:37.700 --> 00:02:41.890
For example, between this heading and this paragraph,

52
00:02:41.890 --> 00:02:44.650
and here is space and here,

53
00:02:44.650 --> 00:02:46.820
and there's also a lot of space

54
00:02:46.820 --> 00:02:49.250
around this h2 element here.

55
00:02:49.250 --> 00:02:50.940
And that's because by default,

56
00:02:50.940 --> 00:02:53.730
some elements get some margin automatically

57
00:02:53.730 --> 00:02:56.470
if we don't define them, okay.

58
00:02:56.470 --> 00:02:58.160
Now that can create some problems

59
00:02:58.160 --> 00:03:00.320
when we're trying to style our page.

60
00:03:00.320 --> 00:03:02.670
And so usually what we do is that

61
00:03:02.670 --> 00:03:05.960
we reset all of the margins and all of the paddings

62
00:03:05.960 --> 00:03:09.300
on all elements before doing anything else.

63
00:03:09.300 --> 00:03:12.460
So this is called a global reset.

64
00:03:12.460 --> 00:03:16.080
And so to do that, we need to select all the elements.

65
00:03:16.080 --> 00:03:18.700
And for that, we have a special selector

66
00:03:18.700 --> 00:03:23.640
and that is a star selector, okay?

67
00:03:23.640 --> 00:03:24.670
So again, with this,

68
00:03:24.670 --> 00:03:29.140
we can select all the elements on the page.

69
00:03:29.140 --> 00:03:33.723
So what we do then is to set the margin to zero pixels.

70
00:03:34.570 --> 00:03:35.720
And when we use zero,

71
00:03:35.720 --> 00:03:38.300
we don't even need to specify the unit.

72
00:03:38.300 --> 00:03:40.963
So just a zero like this,

73
00:03:43.040 --> 00:03:48.040
and the same for padding set to zero as well.

74
00:03:48.730 --> 00:03:52.950
If I give it a save now, it looks like this.

75
00:03:52.950 --> 00:03:55.630
So all the paddings and all the margins

76
00:03:55.630 --> 00:03:57.120
are effectively gone.

77
00:03:57.120 --> 00:03:59.810
And that's exactly what we wanted.

78
00:03:59.810 --> 00:04:03.013
Now, we also need to add another property here.

79
00:04:04.220 --> 00:04:07.750
I mean, we do not have to, but we usually always do,

80
00:04:07.750 --> 00:04:12.750
which is the box sizing property set to border box, okay.

81
00:04:13.530 --> 00:04:15.480
Now this will not change anything here,

82
00:04:15.480 --> 00:04:18.870
and I'm not gonna go into detail what this does.

83
00:04:18.870 --> 00:04:20.503
I'm just putting it here so that you know,

84
00:04:20.503 --> 00:04:23.650
that we always use it, okay.

85
00:04:23.650 --> 00:04:25.490
So essentially what this does is that

86
00:04:25.490 --> 00:04:28.870
it will include paddings and borders into the width

87
00:04:28.870 --> 00:04:32.270
or the height that we specify for an element.

88
00:04:32.270 --> 00:04:34.950
So for example, if we specify the width of an element

89
00:04:34.950 --> 00:04:38.870
to 100 pixels, and then add a padding of 20 pixels

90
00:04:38.870 --> 00:04:42.130
on each side, then 100 plus 20 plus 20

91
00:04:42.130 --> 00:04:45.710
would be a total width of 140 pixels,

92
00:04:45.710 --> 00:04:47.110
which could create problems,

93
00:04:47.110 --> 00:04:50.420
if all we wanted was a width of 100 pixels.

94
00:04:50.420 --> 00:04:54.460
And so to fix this, we use box sizing set to border box.

95
00:04:54.460 --> 00:04:58.260
And so in this case, if we specify the width to 100 pixels,

96
00:04:58.260 --> 00:05:00.430
it will always be 100 pixels,

97
00:05:00.430 --> 00:05:03.210
no matter how much the padding, okay.

98
00:05:03.210 --> 00:05:05.140
And if that doesn't make a lot of sense

99
00:05:05.140 --> 00:05:08.460
to you at this point, then you can always Google around

100
00:05:08.460 --> 00:05:11.250
how it works, if you want to go into more detail.

101
00:05:11.250 --> 00:05:13.580
But since this is just a crash course,

102
00:05:13.580 --> 00:05:16.540
I'm not gonna go into a lot more detail.

103
00:05:16.540 --> 00:05:19.310
So now what I want to do is to add back some margins

104
00:05:19.310 --> 00:05:23.650
and some paddings so that you can see how exactly they work.

105
00:05:23.650 --> 00:05:25.940
And let's actually add with the body

106
00:05:25.940 --> 00:05:29.060
and here we will set some padding, okay.

107
00:05:29.060 --> 00:05:30.533
And why do we use padding?

108
00:05:31.370 --> 00:05:34.390
Well, it's because we want to add some space

109
00:05:34.390 --> 00:05:37.270
inside of this body element.

110
00:05:37.270 --> 00:05:38.900
So basically to create some space

111
00:05:38.900 --> 00:05:41.280
between the border of the browser,

112
00:05:41.280 --> 00:05:43.853
so of this view part and the content.

113
00:05:44.910 --> 00:05:47.560
So let's set it to 75 pixels.

114
00:05:47.560 --> 00:05:50.780
And by the way, there are also other units in CSS.

115
00:05:50.780 --> 00:05:52.800
We don't always have to use pixels.

116
00:05:52.800 --> 00:05:57.480
We can use percentages or other more weird units like em

117
00:05:57.480 --> 00:06:01.150
or rem or points or anything like that.

118
00:06:01.150 --> 00:06:02.620
But to start out it's easier

119
00:06:02.620 --> 00:06:05.770
to just understand with pixels, okay.

120
00:06:05.770 --> 00:06:07.090
So give it a save.

121
00:06:07.090 --> 00:06:10.460
And so now you see that it added this nice space

122
00:06:10.460 --> 00:06:13.000
between the sides, okay.

123
00:06:13.000 --> 00:06:17.920
It's maybe a bit too much, put it back to a 50, okay.

124
00:06:17.920 --> 00:06:20.000
And now let's move on and add some space

125
00:06:20.000 --> 00:06:23.400
between this heading here and this paragraph.

126
00:06:23.400 --> 00:06:25.570
And to do that, we can simply add some margin

127
00:06:25.570 --> 00:06:29.630
to the bottom of this h1, okay.

128
00:06:29.630 --> 00:06:33.806
So we can specify paddings and margins like this.

129
00:06:33.806 --> 00:06:35.680
Or as we did here margin and padding

130
00:06:35.680 --> 00:06:37.240
and that will then apply them

131
00:06:37.240 --> 00:06:39.840
to the four sides of the element,

132
00:06:39.840 --> 00:06:42.090
but we can also do that selectively

133
00:06:42.090 --> 00:06:44.260
to only the left side or the right side

134
00:06:44.260 --> 00:06:47.800
or the top side or the bottom side.

135
00:06:47.800 --> 00:06:51.840
And so let's now add margin to the bottom of each one.

136
00:06:51.840 --> 00:06:56.840
So margin and then bottom, and I'd say 25 pixels,

137
00:06:57.150 --> 00:06:58.120
give it a save.

138
00:06:58.120 --> 00:07:00.930
And here we have, okay.

139
00:07:00.930 --> 00:07:02.690
Now, if we did padding here,

140
00:07:02.690 --> 00:07:05.053
it would actually look the exact same way.

141
00:07:06.110 --> 00:07:08.000
Let me show that to you.

142
00:07:08.000 --> 00:07:10.040
And indeed it works the same way,

143
00:07:10.040 --> 00:07:13.860
but now this space is inside of the h1.

144
00:07:13.860 --> 00:07:16.623
Let me show that to you using the inspector.

145
00:07:20.950 --> 00:07:24.343
So this is the h1 and two green part is the padding.

146
00:07:25.349 --> 00:07:27.360
You can also see that here.

147
00:07:27.360 --> 00:07:29.390
So this is the content,

148
00:07:29.390 --> 00:07:32.100
and then we have 25 of padding

149
00:07:32.100 --> 00:07:33.850
and here you also have to border

150
00:07:33.850 --> 00:07:36.480
and then the margin outside of the border.

151
00:07:36.480 --> 00:07:38.200
So outside of the element.

152
00:07:38.200 --> 00:07:39.600
And essentially this is what we learned

153
00:07:39.600 --> 00:07:42.600
at the beginning of this video, right?

154
00:07:42.600 --> 00:07:45.030
But it makes more sense for this space actually

155
00:07:45.030 --> 00:07:47.400
to be outside of the element.

156
00:07:47.400 --> 00:07:51.380
And so a margin in this case makes more sense.

157
00:07:51.380 --> 00:07:53.040
And so you see that now this 25

158
00:07:53.040 --> 00:07:56.430
is here painted in red, right?

159
00:07:56.430 --> 00:08:00.040
And so it's now outside of the element, okay.

160
00:08:00.040 --> 00:08:03.310
So this elements tab here in the developer tools

161
00:08:03.310 --> 00:08:07.530
is pretty useful to inspect the styles

162
00:08:07.530 --> 00:08:10.710
of all the elements and also to check out the markup.

163
00:08:10.710 --> 00:08:12.620
So the HTML in here.

164
00:08:12.620 --> 00:08:17.390
We can turn on and off these different properties.

165
00:08:17.390 --> 00:08:21.490
And in general, this is really helpful to work

166
00:08:21.490 --> 00:08:24.003
with HTML and CSS in the browser.

167
00:08:25.530 --> 00:08:28.280
Next up, we should probably also add some spacing

168
00:08:28.280 --> 00:08:30.163
after the h2 elements.

169
00:08:35.080 --> 00:08:39.553
So let's say margin bottom 20 pixel, okay.

170
00:08:40.530 --> 00:08:41.910
And we can also do another thing

171
00:08:41.910 --> 00:08:43.440
that I didn't show you before,

172
00:08:43.440 --> 00:08:46.440
which is to set the text-align property.

173
00:08:46.440 --> 00:08:48.140
So text-align,

174
00:08:48.140 --> 00:08:51.490
and now we can set it to a left right or center.

175
00:08:51.490 --> 00:08:53.193
And I wanna set it to center here.

176
00:08:54.367 --> 00:08:58.650
And then as you expect the text will get centered here.

177
00:08:58.650 --> 00:09:01.993
So basically centered inside this whole box.

178
00:09:03.280 --> 00:09:05.200
So the h2 box, and again,

179
00:09:05.200 --> 00:09:08.900
we can see the box using the inspector, okay.

180
00:09:08.900 --> 00:09:11.950
So the box itself is this whole blue space

181
00:09:11.950 --> 00:09:13.610
that we can see up there.

182
00:09:13.610 --> 00:09:16.550
And so the text of the h2 is then centered

183
00:09:16.550 --> 00:09:19.250
inside the h2 box, okay.

184
00:09:19.250 --> 00:09:21.480
And remember that this is a block element.

185
00:09:21.480 --> 00:09:24.490
And so that's why it creates a box basically.

186
00:09:24.490 --> 00:09:26.300
So block elements are the elements

187
00:09:26.300 --> 00:09:29.130
that create their own line and inline elements.

188
00:09:29.130 --> 00:09:31.303
Remember, it's like the link here.

189
00:09:32.240 --> 00:09:34.230
So if we inspect this one,

190
00:09:34.230 --> 00:09:37.110
you see that the box only occupies the space

191
00:09:37.110 --> 00:09:39.320
of the text itself, right?

192
00:09:39.320 --> 00:09:41.903
It doesn't create a whole box on a whole line.

193
00:09:42.940 --> 00:09:45.090
So that's the big difference between inline

194
00:09:45.090 --> 00:09:47.463
and block elements now, right?

195
00:09:49.090 --> 00:09:50.390
Okay.

196
00:09:50.390 --> 00:09:54.060
So this form here, of course is also a block element.

197
00:09:54.060 --> 00:09:57.590
And so let's make it a little bit more narrow.

198
00:09:57.590 --> 00:10:00.600
And so, as we learned, by the beginning of the lecture,

199
00:10:00.600 --> 00:10:03.003
we can do that using the width property.

200
00:10:04.670 --> 00:10:07.790
So let's set it to 400 pixels

201
00:10:08.700 --> 00:10:12.840
and that looks a lot nicer, okay.

202
00:10:12.840 --> 00:10:14.610
Now we also want to create some space

203
00:10:14.610 --> 00:10:17.310
between all this content and the border.

204
00:10:17.310 --> 00:10:19.610
And so how do we do that?

205
00:10:19.610 --> 00:10:21.200
Well, that's right.

206
00:10:21.200 --> 00:10:24.590
We have to use padding because padding creates space

207
00:10:24.590 --> 00:10:29.590
inside of the box and yes, indeed it does.

208
00:10:30.870 --> 00:10:33.720
And now let's also create some space between the image

209
00:10:33.720 --> 00:10:36.640
and this form here, okay.

210
00:10:36.640 --> 00:10:39.203
And so here we can add some margin to the top.

211
00:10:41.280 --> 00:10:46.280
So margin top, and let's say, well, 50 pixels.

212
00:10:47.870 --> 00:10:51.550
Might be a bit too much now let's just edit to a 30,

213
00:10:51.550 --> 00:10:53.300
so we can see it.

214
00:10:53.300 --> 00:10:55.770
And now let me actually just show you what happens

215
00:10:55.770 --> 00:11:00.310
if we take out this property here, okay.

216
00:11:00.310 --> 00:11:01.740
So we comment it out,

217
00:11:01.740 --> 00:11:04.630
just like we comment out code in JavaScript.

218
00:11:04.630 --> 00:11:06.910
So let's hit Comment slash.

219
00:11:06.910 --> 00:11:11.760
And so you see in CSS, the comments are like this.

220
00:11:11.760 --> 00:11:16.460
So slash star star slash and not slash slash, okay.

221
00:11:16.460 --> 00:11:17.390
And so as I save now,

222
00:11:17.390 --> 00:11:19.310
take a close look here at this form

223
00:11:20.710 --> 00:11:23.623
and you see that it now get wider.

224
00:11:24.970 --> 00:11:26.373
So let's inspected here.

225
00:11:29.270 --> 00:11:31.607
So the form, we need to select the form here

226
00:11:31.607 --> 00:11:32.943
and then scroll down.

227
00:11:34.020 --> 00:11:37.090
And so now you see what I explained earlier.

228
00:11:37.090 --> 00:11:39.830
So we define the width as 400,

229
00:11:39.830 --> 00:11:43.580
but then we have a padding of 25 here, right?

230
00:11:43.580 --> 00:11:45.820
And so that gets added

231
00:11:45.820 --> 00:11:48.170
to the total width of the element.

232
00:11:48.170 --> 00:11:51.800
So we have 400 plus 25 plus here 25 here,

233
00:11:51.800 --> 00:11:54.890
and then also five pixels border on each side.

234
00:11:54.890 --> 00:11:56.897
So five here and five here.

235
00:11:56.897 --> 00:11:59.830
And so that makes it then that the whole element,

236
00:11:59.830 --> 00:12:03.223
adds up to 460 pixels, I would guess.

237
00:12:04.230 --> 00:12:06.390
So you can see that here on the screen.

238
00:12:06.390 --> 00:12:09.600
So up here that it says that the width

239
00:12:09.600 --> 00:12:12.120
is actually 460, okay.

240
00:12:12.120 --> 00:12:14.740
And so again, that's because it adds up all the borders

241
00:12:14.740 --> 00:12:16.793
and the paddings to the width.

242
00:12:17.710 --> 00:12:20.700
And that's what happens without box sizing to border box.

243
00:12:20.700 --> 00:12:25.700
But as I put it back on, so again, comment slash.

244
00:12:25.870 --> 00:12:27.050
If I save it now,

245
00:12:27.050 --> 00:12:29.700
now we are back to what we expected.

246
00:12:29.700 --> 00:12:33.360
So 400, so we set it here to 400.

247
00:12:33.360 --> 00:12:35.903
And so we wanted it to be exactly 400

248
00:12:35.903 --> 00:12:39.090
and not for all the other stuff to be added.

249
00:12:39.090 --> 00:12:41.533
And so now, as you see here, it says 400.

250
00:12:42.410 --> 00:12:45.640
And so automatically CSS then changed the width

251
00:12:45.640 --> 00:12:48.830
of the content here to just 340

252
00:12:48.830 --> 00:12:52.290
to accommodate the rest of the width.

253
00:12:52.290 --> 00:12:54.310
Basically that's needed for the padding

254
00:12:54.310 --> 00:12:57.410
and the border, okay.

255
00:12:57.410 --> 00:12:59.793
So I said, I wouldn't go into a lot of detail,

256
00:12:59.793 --> 00:13:00.626
(instructor laughs)

257
00:13:00.626 --> 00:13:02.133
but I guess I just did anyway.

258
00:13:04.460 --> 00:13:07.200
But anyway, let's now also add some margin

259
00:13:07.200 --> 00:13:09.573
to these paragraphs here.

260
00:13:11.250 --> 00:13:15.070
So I used the first class to select

261
00:13:15.070 --> 00:13:17.860
this paragraph and this paragraph,

262
00:13:17.860 --> 00:13:20.450
but now we want to select all three paragraphs.

263
00:13:20.450 --> 00:13:23.780
And so for that, we can simply use the P selector

264
00:13:23.780 --> 00:13:26.220
and that will then select all of them,

265
00:13:26.220 --> 00:13:30.800
regardless of any class names, okay.

266
00:13:30.800 --> 00:13:35.750
So margin bottom, and let's set it to 10 pixels or 20,

267
00:13:35.750 --> 00:13:37.653
so we can see it a little bit better.

268
00:13:38.620 --> 00:13:40.340
And so you'll see that, in fact,

269
00:13:40.340 --> 00:13:41.910
the margin now got applied

270
00:13:41.910 --> 00:13:45.393
to all three of these paragraphs, just as we wanted.

271
00:13:46.380 --> 00:13:50.063
Next up, we can also select the input and the button.

272
00:13:51.350 --> 00:13:53.730
So here we have to input and button elements

273
00:13:53.730 --> 00:13:56.850
and we can also style them a little bit too.

274
00:13:56.850 --> 00:13:59.653
So let me actually show you another cool thing.

275
00:14:00.700 --> 00:14:02.393
So we have the input selector,

276
00:14:03.280 --> 00:14:06.210
but now we want these rules that we're gonna write here

277
00:14:06.210 --> 00:14:09.020
to apply to both the input and the button.

278
00:14:09.020 --> 00:14:13.310
And so we can write input, comma, button.

279
00:14:13.310 --> 00:14:15.160
And so this rule here will then apply

280
00:14:15.160 --> 00:14:17.493
to both of these selectors.

281
00:14:19.150 --> 00:14:22.070
So let's add a padding of 10 pixels

282
00:14:22.070 --> 00:14:24.190
and increase the font size.

283
00:14:24.190 --> 00:14:26.690
Let's say two 16 pixels.

284
00:14:26.690 --> 00:14:28.173
So look at them now.

285
00:14:29.460 --> 00:14:31.080
And indeed they got bigger

286
00:14:31.080 --> 00:14:33.803
and they got this nice padding in there now.

287
00:14:34.780 --> 00:14:38.320
And once more, you can see it that these two elements,

288
00:14:38.320 --> 00:14:41.450
so input and button are inline elements.

289
00:14:41.450 --> 00:14:43.070
So this one and this one,

290
00:14:43.070 --> 00:14:46.900
they both don't create a box that occupies the whole line.

291
00:14:46.900 --> 00:14:49.010
So again, just like the link

292
00:14:49.010 --> 00:14:52.040
and I can actually show that to you

293
00:14:52.040 --> 00:14:55.340
by styling just this link.

294
00:14:55.340 --> 00:15:00.083
So let's say, a background color,

295
00:15:01.970 --> 00:15:04.063
and set it to yellow.

296
00:15:04.960 --> 00:15:08.193
And then here you see, and at least I hope you can see it.

297
00:15:09.539 --> 00:15:10.950
Or let's actually set it to yellow green,

298
00:15:10.950 --> 00:15:12.163
I think that's another.

299
00:15:13.480 --> 00:15:14.680
Yes.

300
00:15:14.680 --> 00:15:16.210
And so now you can see it.

301
00:15:16.210 --> 00:15:19.860
And so the box now is only this element itself,

302
00:15:19.860 --> 00:15:22.703
but not the whole width of the screen, okay.

303
00:15:24.040 --> 00:15:26.780
So actually, yeah, let's leave it like this.

304
00:15:26.780 --> 00:15:30.250
So you can have this as a reference and now to finish,

305
00:15:30.250 --> 00:15:32.210
I just want to show you one final,

306
00:15:32.210 --> 00:15:34.830
but very important selector.

307
00:15:34.830 --> 00:15:37.420
And this one is actually pretty important for you to know,

308
00:15:37.420 --> 00:15:40.210
because we're also gonna use this all the time

309
00:15:40.210 --> 00:15:42.430
in JavaScript to select elements

310
00:15:42.430 --> 00:15:44.460
when we do DOM manipulation,

311
00:15:44.460 --> 00:15:46.490
because in fact, all the selectors,

312
00:15:46.490 --> 00:15:48.920
the way they work in CSS, for example,

313
00:15:48.920 --> 00:15:52.250
the dot first or here, the ID selector,

314
00:15:52.250 --> 00:15:53.550
they're gonna work just the same

315
00:15:53.550 --> 00:15:55.820
to select elements in JavaScript.

316
00:15:55.820 --> 00:15:58.830
And so that's one of the reasons why it's very important

317
00:15:58.830 --> 00:16:00.913
to learn how these selectors work.

318
00:16:02.100 --> 00:16:04.500
So anyway, the selector that I wanted to show you

319
00:16:04.500 --> 00:16:06.470
is the child selector.

320
00:16:06.470 --> 00:16:08.770
So the example I have here

321
00:16:08.770 --> 00:16:12.120
is that we have these two h2 headings.

322
00:16:12.120 --> 00:16:14.820
So this one and this one.

323
00:16:14.820 --> 00:16:18.310
But let's say I only wanted to select the h2 elements

324
00:16:18.310 --> 00:16:22.960
that are inside of this form here, okay.

325
00:16:22.960 --> 00:16:25.790
So of course I could go ahead and add an ID

326
00:16:25.790 --> 00:16:27.363
or a class to this one.

327
00:16:28.290 --> 00:16:31.860
So here I could add an ID or a class,

328
00:16:31.860 --> 00:16:36.050
but I could also tell CSS to simply select this h1

329
00:16:36.050 --> 00:16:40.133
that is inside of the element with the ID of your name.

330
00:16:41.160 --> 00:16:42.723
And so this is how it works.

331
00:16:43.560 --> 00:16:46.043
So again, we use the ID, your name,

332
00:16:47.380 --> 00:16:51.053
so in just what we have here, and then a simple space,

333
00:16:51.950 --> 00:16:54.090
and then another selector.

334
00:16:54.090 --> 00:16:57.210
So in this case, that's simply the h2 selector,

335
00:16:57.210 --> 00:16:59.540
but it could be any other selector.

336
00:16:59.540 --> 00:17:01.880
So this here could also be a class selector

337
00:17:01.880 --> 00:17:04.720
or another ID selector, alright?

338
00:17:04.720 --> 00:17:07.910
But in this case, I just want to select the h2.

339
00:17:07.910 --> 00:17:10.250
And so let's change the color of this one

340
00:17:10.250 --> 00:17:14.420
and let's change it to, I think there's one called olive

341
00:17:15.260 --> 00:17:17.420
or let's use this one, olive drab

342
00:17:18.440 --> 00:17:20.840
and yeah, indeed.

343
00:17:20.840 --> 00:17:23.830
Now this one is green and this one is not

344
00:17:23.830 --> 00:17:26.550
because this one is not inside the element

345
00:17:26.550 --> 00:17:29.497
with the ID of your name, right?

346
00:17:29.497 --> 00:17:32.580
And so this one here is very useful

347
00:17:32.580 --> 00:17:35.770
and we use it all the time in CSS.

348
00:17:35.770 --> 00:17:37.640
And so that's why I wanted to show you

349
00:17:37.640 --> 00:17:39.390
this one here as well.

350
00:17:39.390 --> 00:17:44.390
Finally, just to make this a little bit smaller,

351
00:17:44.530 --> 00:17:46.720
let's also change the size of the image

352
00:17:46.720 --> 00:17:49.420
because that's also something very important.

353
00:17:49.420 --> 00:17:52.910
So if we do not specify any sizes on the image,

354
00:17:52.910 --> 00:17:56.780
it will simply be as large as it can, okay.

355
00:17:56.780 --> 00:18:00.200
Or as large as the source image really is.

356
00:18:00.200 --> 00:18:01.690
But usually we don't want that.

357
00:18:01.690 --> 00:18:04.750
So on the image, it's pretty common to always set

358
00:18:04.750 --> 00:18:07.610
either a height or a width attribute.

359
00:18:07.610 --> 00:18:09.203
So let's do that here.

360
00:18:11.356 --> 00:18:15.130
So this one doesn't have, or maybe it does have a class.

361
00:18:15.130 --> 00:18:18.630
So, or actually, it has an ID, okay.

362
00:18:18.630 --> 00:18:21.680
So we can of course use the image selector,

363
00:18:21.680 --> 00:18:24.980
like I was just writing, but we can also use the ID.

364
00:18:24.980 --> 00:18:27.490
So the difference is that with the ID,

365
00:18:27.490 --> 00:18:28.930
if we add multiple images

366
00:18:28.930 --> 00:18:31.240
then we would only select this one.

367
00:18:31.240 --> 00:18:33.823
So let's actually copy this one and use this.

368
00:18:35.600 --> 00:18:39.380
So ID, and then the name of the ID.

369
00:18:39.380 --> 00:18:43.723
And let's set the width here to 200 pixels.

370
00:18:44.690 --> 00:18:47.800
So what do you think will happen then to the height?

371
00:18:47.800 --> 00:18:52.060
Well, it scaled proportionally, okay.

372
00:18:52.060 --> 00:18:53.500
So that's very nice.

373
00:18:53.500 --> 00:18:56.760
Let's make it a bit bigger 300 pixels.

374
00:18:56.760 --> 00:18:59.090
And so we don't have to worry about the height.

375
00:18:59.090 --> 00:19:01.680
We can still set it, but with that,

376
00:19:01.680 --> 00:19:04.520
we will then change the aspect ratio.

377
00:19:04.520 --> 00:19:07.590
So if we set the height to also 300 pixels,

378
00:19:07.590 --> 00:19:09.320
it would then become a square (laughs).

379
00:19:09.320 --> 00:19:10.333
Yeah, that's right.

380
00:19:11.610 --> 00:19:12.550
Okay?

381
00:19:12.550 --> 00:19:15.200
And if we now turned off the width,

382
00:19:15.200 --> 00:19:16.820
so let's comment it out

383
00:19:16.820 --> 00:19:19.880
then it will again scale proportionately.

384
00:19:19.880 --> 00:19:21.610
So the height is now 300

385
00:19:21.610 --> 00:19:24.273
and then the width is calculated automatically.

386
00:19:25.470 --> 00:19:26.620
Let's set it back.

387
00:19:26.620 --> 00:19:30.563
And usually it's easier to simply specify the width, okay.

388
00:19:32.520 --> 00:19:33.440
That looks nice.

389
00:19:33.440 --> 00:19:36.640
Let's change the h1 a little bit to 35

390
00:19:38.540 --> 00:19:40.473
to make it fit all in one line.

391
00:19:43.440 --> 00:19:47.490
And yeah, we have a nice little page here.

392
00:19:47.490 --> 00:19:49.260
It's not the best looking,

393
00:19:49.260 --> 00:19:53.170
but I think it taught you some things about HTML and CSS,

394
00:19:53.170 --> 00:19:55.230
at least to the very fundamentals.

395
00:19:55.230 --> 00:19:58.210
So of course we only scratched the surface here.

396
00:19:58.210 --> 00:20:02.030
So probably this is less than like 5%

397
00:20:02.030 --> 00:20:05.830
of everything that there is to learn about CSS.

398
00:20:05.830 --> 00:20:08.800
So we didn't really talk about positioning.

399
00:20:08.800 --> 00:20:11.850
We didn't talk about flexbox or CSS grid

400
00:20:11.850 --> 00:20:14.210
or many other important topics,

401
00:20:14.210 --> 00:20:16.250
but it wasn't also really the goal here.

402
00:20:16.250 --> 00:20:17.910
I just wanted to get you up to speed

403
00:20:17.910 --> 00:20:20.730
with the fundamentals of HTML and CSS

404
00:20:20.730 --> 00:20:23.510
so that you can understand a little bit of the code

405
00:20:23.510 --> 00:20:25.707
of projects that are included here in the course,

406
00:20:25.707 --> 00:20:29.370
and also so that you can learn how these selectors work,

407
00:20:29.370 --> 00:20:30.720
because as I mentioned,

408
00:20:30.720 --> 00:20:35.070
we will use them in JavaScript to select elements as well.

409
00:20:35.070 --> 00:20:37.710
So I hope you liked this small crash course.

410
00:20:37.710 --> 00:20:41.750
And I also hope I got you interested in HTML and CSS

411
00:20:41.750 --> 00:20:43.780
so that you now go ahead and research

412
00:20:43.780 --> 00:20:46.160
maybe a little bit more about it.

413
00:20:46.160 --> 00:20:48.050
Anyway, and with that being said,

414
00:20:48.050 --> 00:20:50.820
let's now go straight into DOM manipulation

415
00:20:50.820 --> 00:20:52.240
in the next section,

416
00:20:52.240 --> 00:20:55.253
because that's really exciting and really cool.

