All language subtitles for 10. Advanced CSS - Combining Selectors

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French Download
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 0 1 00:00:00,660 --> 00:00:01,010 All right. 1 2 00:00:01,010 --> 00:00:07,660 So as promised we're going to talk about how you can pick and mix your CSS selectors. 2 3 00:00:07,680 --> 00:00:13,910 So one of my favorite childhood pastimes, picking and mixing sweets, until the dentist told me to stop, 3 4 00:00:13,950 --> 00:00:16,320 otherwise he's going to pull out all my teeth. 4 5 00:00:16,440 --> 00:00:22,560 So, dental horrors aside, let's talk about how you can combine different CSS selectors in order to apply 5 6 00:00:22,560 --> 00:00:24,980 styles more specifically. 6 7 00:00:25,290 --> 00:00:31,320 Now the first type is the easiest to understand and we've seen this when we combined all of our different 7 8 00:00:31,320 --> 00:00:37,710 heading types, h1 through to h6, and applied the font-family Montserrat-Bold to all of these HTML 8 9 00:00:38,160 --> 00:00:39,840 elements on our web page. 9 10 00:00:39,840 --> 00:00:46,030 So the idea here is that you write one selector, you add a comma and then a space, and then the next selector. 10 11 00:00:46,110 --> 00:00:51,270 So the space in this case is actually optional but it's quite nice to space it up just so that you can 11 12 00:00:51,270 --> 00:00:52,910 see it more clearly. 12 13 00:00:52,980 --> 00:00:58,200 But, later on, as we'll see in other cases, the spacing is really important, but when you're combining multiple 13 14 00:00:58,200 --> 00:00:59,690 selectors it's not a big deal. 14 15 00:00:59,700 --> 00:01:03,180 So selector1, selector2. 15 16 00:01:03,300 --> 00:01:05,870 That's a good style to follow. 16 17 00:01:05,970 --> 00:01:12,900 Now, the way that it works is, say that we have an h1 and a paragraph, and we want to apply the same color 17 18 00:01:13,500 --> 00:01:15,660 to the text in both cases. 18 19 00:01:15,750 --> 00:01:22,470 Then we can either write out you know this long winded approach of h1 color red, p color red, or we 19 20 00:01:22,470 --> 00:01:26,910 can simply combine it by writing h1, p. 20 21 00:01:27,090 --> 00:01:31,150 And in this case we're applying the color red to both of these elements. 21 22 00:01:31,320 --> 00:01:36,110 And this is just a way of shortening your code and grouping similar things together. 22 23 00:01:36,360 --> 00:01:42,150 You're going to see this most commonly at the HTML element level, and it's mostly for things like h1 through 23 24 00:01:42,150 --> 00:01:43,000 to h6. 24 25 00:01:43,050 --> 00:01:44,730 But this is very very simple. 25 26 00:01:44,790 --> 00:01:49,320 Now it gets a little bit more complicated when we start talking about hierarchical selectors, and that's 26 27 00:01:49,320 --> 00:01:53,480 because in order to use this properly we have to understand how the HTML is structured. 27 28 00:01:53,730 --> 00:02:01,740 So in our case we wrote this code that targeted the container-fluid class that is inside something that 28 29 00:02:01,740 --> 00:02:06,050 has the id of title, and we gave it a different padding. 29 30 00:02:06,180 --> 00:02:08,580 The syntax here looks like this. 30 31 00:02:08,580 --> 00:02:12,820 So you have selector1, then you have a space then you have selector2. 31 32 00:02:12,900 --> 00:02:15,410 And this is what I was talking about earlier on. Spacing 32 33 00:02:15,420 --> 00:02:17,670 in this case is crucial. 33 34 00:02:17,670 --> 00:02:22,740 You should have one space and the order is that the first selector is from the parent and the second selector 34 35 00:02:23,070 --> 00:02:24,580 is from the child. 35 36 00:02:24,750 --> 00:02:28,910 So let's take a look at this in more detail so that we can really get to grips with it. 36 37 00:02:29,100 --> 00:02:33,520 So in this case I've got a div that has a class of container-fluid, 37 38 00:02:33,700 --> 00:02:38,480 and I also have an h1 that has the id of title. 38 39 00:02:38,490 --> 00:02:44,770 So if we had some code that was written like this then this is a hierarchical combination of selectors. 39 40 00:02:44,790 --> 00:02:47,470 So you would read this from right to left. 40 41 00:02:47,490 --> 00:02:48,690 And so does the browser. 41 42 00:02:48,840 --> 00:02:54,750 So it's good to look for all of the h1s that are contained inside a div. 42 43 00:02:54,750 --> 00:03:00,480 So in this case it would work and it would change the text color to red because our h1 is indeed 43 44 00:03:00,480 --> 00:03:02,460 contained inside a div. 44 45 00:03:02,460 --> 00:03:05,460 But you might realize that this is very very broad. 45 46 00:03:05,520 --> 00:03:10,610 All of your h1s that are inside a div is going to be colored red. 46 47 00:03:10,710 --> 00:03:13,250 So you might want to make it a little bit more specific. 47 48 00:03:13,290 --> 00:03:21,570 Say in this case we're saying that the element that has an id of title that is contained inside a parent 48 49 00:03:21,660 --> 00:03:26,990 with the class container-fluid should have the text color of red. 49 50 00:03:27,000 --> 00:03:32,250 Now this is a lot more specific because firstly you're only going to have one id that is going to be 50 51 00:03:32,250 --> 00:03:34,590 title on your whole page. 51 52 00:03:34,590 --> 00:03:39,260 And by using the class of the parent you're also getting very very specific. 52 53 00:03:39,480 --> 00:03:44,850 Now in this case this is actually kind of redundant code because if you wanted to apply this style to 53 54 00:03:44,850 --> 00:03:51,420 an element with an id of title, as we said before, ids have to be unique across the page, so there can only 54 55 00:03:51,420 --> 00:03:54,660 be one thing with the id that is title. 55 56 00:03:54,660 --> 00:03:58,470 So you would never write this code, you would simply just target the id title, 56 57 00:03:58,470 --> 00:04:02,810 right? But this is probably the most legitimate code that you will see. 57 58 00:04:02,970 --> 00:04:09,630 So in this case we're saying that all the h1s on the web page that is the child of an element with 58 59 00:04:09,630 --> 00:04:18,060 the class container-fluid should be colored red. And this is a very specific way of applying styles to 59 60 00:04:18,120 --> 00:04:20,760 a particular element inside your web page. 60 61 00:04:20,820 --> 00:04:25,800 And this allows you to really drill down your CSS, because you're not applying your styles to all the 61 62 00:04:25,800 --> 00:04:33,750 h1, but instead you're saying that only the h1s that are inside a parent that has the class container- 62 63 00:04:33,750 --> 00:04:35,830 fluid should have this style. 63 64 00:04:35,850 --> 00:04:42,870 Now it's really important to remember that you should read the hierarchy from the right to the left. 64 65 00:04:42,900 --> 00:04:51,330 So in this case it's the element that has a class of title that is inside a parent that is a div that 65 66 00:04:51,330 --> 00:04:56,560 should have the color red. The one on the right is the child, the one on the left is the parent. 66 67 00:04:56,700 --> 00:05:04,730 And this syntax will only work in a parent child situation. You can't have, for example, a div that has 67 68 00:05:04,730 --> 00:05:07,850 the class of title and you're trying to use this syntax. 68 69 00:05:07,850 --> 00:05:09,440 It just simply won't work. 69 70 00:05:09,440 --> 00:05:13,950 Something has to be contained in something else. Something has to be a child of something else 70 71 00:05:14,000 --> 00:05:17,390 for this type of hierarchical syntax to work. 71 72 00:05:17,390 --> 00:05:24,530 Now the last type of combination I'm going to talk about are when you simply combine selectors, and in this 72 73 00:05:24,530 --> 00:05:26,830 case that space is gone. 73 74 00:05:26,840 --> 00:05:32,750 There is no space between your two selectors that you're combining and you can see something like this 74 75 00:05:32,750 --> 00:05:39,780 so an HTML element combined with a class, or it could be an HTML element combined with a id, 75 76 00:05:39,800 --> 00:05:41,280 it doesn't really matter. 76 77 00:05:41,510 --> 00:05:45,980 But they have to all occur in the same element. 77 78 00:05:45,980 --> 00:05:52,580 So in this case if I tried to change the color of the Hello World and I wanted to combine my selectors, 78 79 00:05:52,880 --> 00:05:59,390 I would say something like the h1 that has an id of title should have the color red, and this is how 79 80 00:05:59,390 --> 00:06:04,690 you should read the syntax. When there is no space you're reading from left to right. When there is space 80 81 00:06:04,700 --> 00:06:07,350 then it's hierarchical and you're reading from right to left. 81 82 00:06:07,610 --> 00:06:12,600 So it's a little bit confusing but you'll get used to it once you start applying it and using it yourself. 82 83 00:06:12,680 --> 00:06:18,350 So it doesn't matter if it's an id or if it's a class that's being combined with an HTML element, that 83 84 00:06:18,350 --> 00:06:19,970 doesn't matter at all. 84 85 00:06:20,030 --> 00:06:25,010 And as long as there's no space between your two selectors it will work just fine. 85 86 00:06:25,010 --> 00:06:30,800 So in this case we're saying that the div that has a class of container-fluid should have the text color 86 87 00:06:30,830 --> 00:06:33,480 of red being applied to all of its content. 87 88 00:06:33,560 --> 00:06:41,920 But this doesn't work if you're saying that the div with an id of title should have the text color red. 88 89 00:06:41,930 --> 00:06:49,610 This is not valid code because currently on screen we don't have a single div that has the id of title. 89 90 00:06:49,610 --> 00:06:54,490 We only have a div that has a child with the id of title and this doesn't work. 90 91 00:06:54,490 --> 00:06:58,370 We're going to have to use a hierarchical selector if you want to do something like this. 91 92 00:06:58,370 --> 00:07:04,820 So at this point a lot of students will ask, well what exactly is the difference between the one where 92 93 00:07:04,820 --> 00:07:09,350 you have a space between two selectors and the one where there is no space? 93 94 00:07:09,350 --> 00:07:15,990 So I've got this bit of HTML here that I've pre written to save you the boredom of having to watch me type. 94 95 00:07:16,010 --> 00:07:22,910 But essentially we've got a div that has a class of container and it contains an h1 that has the class 95 96 00:07:22,910 --> 00:07:25,030 of title and it says Hello World. 96 97 00:07:25,070 --> 00:07:29,950 Then we have another div that has the class of container-fluid and it has an h1 97 98 00:07:29,960 --> 00:07:32,220 with the class title as well. 98 99 00:07:32,220 --> 00:07:39,220 Now I've removed all traces of Bootstrap from this Code Ply because it's not important. 99 100 00:07:39,440 --> 00:07:41,500 I want to show you that what we're doing here, 100 101 00:07:41,690 --> 00:07:43,570 this is just pure CSS. 101 102 00:07:43,580 --> 00:07:47,780 It's not related to the Bootstrap classes or the framework at all. 102 103 00:07:47,780 --> 00:07:50,910 This is just CSS knowledge that we're learning here. 103 104 00:07:51,020 --> 00:07:59,540 So what if I wanted to apply some CSS styles in order to color the Hello World in red? What would I 104 105 00:07:59,540 --> 00:08:00,260 need to do? 105 106 00:08:00,380 --> 00:08:08,300 Well, unless I was willing to change the HTML, there is no way of applying a style selectively to this 106 107 00:08:08,330 --> 00:08:15,050 Hello World and not the Good Bye World without combining our, selectors because, for example, if I said, let's 107 108 00:08:15,050 --> 00:08:21,770 target the h1s and change the text color to red, then it's going to change both of the h1s. 108 109 00:08:21,790 --> 00:08:26,820 And this is the same if I try to use their class which is title as well, 109 110 00:08:26,900 --> 00:08:27,350 right? 110 111 00:08:27,350 --> 00:08:34,940 So I would need to combine my selectors and in this case the difference between these two titles is 111 112 00:08:34,940 --> 00:08:40,680 just that they're contained in different divs or divs with different classes rather. 112 113 00:08:40,790 --> 00:08:48,710 So I can use that fact to structure my CSS code. So I can say, for example, the text that has a class 113 114 00:08:48,710 --> 00:08:58,880 of title that's inside an element that has the class container should have this color red applied 114 115 00:08:58,970 --> 00:08:59,890 to it. 115 116 00:08:59,900 --> 00:09:03,310 So remember we're reading always from right to left. 116 117 00:09:03,320 --> 00:09:09,740 So we're saying that an element with a class called title that's inside an element with a class called 117 118 00:09:09,740 --> 00:09:13,340 container should have this style applied. 118 119 00:09:13,340 --> 00:09:20,090 So let's hit run and you can see that we've managed to isolate the Hello World from the Good Bye World 119 120 00:09:20,330 --> 00:09:23,880 simply by using hierarchical selectors. 120 121 00:09:23,880 --> 00:09:32,990 Now if I delete that space there, this code will no longer work, because what this now reads is, look for 121 122 00:09:32,990 --> 00:09:40,250 an element inside the HTML that has a class of container but also a class of title. 122 123 00:09:40,250 --> 00:09:45,920 So essentially what you're saying here is you're saying that it is an h1 that has two classes and 123 124 00:09:45,920 --> 00:09:47,080 it looks like this. 124 125 00:09:47,090 --> 00:09:53,090 So that is what this code is saying. When you're combining code together with no spaces, 125 126 00:09:53,120 --> 00:09:57,690 all of the selectors have to be within the same HTML element. 126 127 00:09:57,890 --> 00:10:05,400 So, you could say, an h1 that has a class of container and also a class of title should have this 127 128 00:10:05,400 --> 00:10:05,780 style. 128 129 00:10:05,790 --> 00:10:09,080 And when I run the code you can see this still works exactly the same. 129 130 00:10:09,180 --> 00:10:13,360 But this has no parent or child relationship at all. 130 131 00:10:13,410 --> 00:10:16,870 And you would be targeting two classes in the same element. 131 132 00:10:16,920 --> 00:10:22,500 But when you do combine selectors like this it doesn't really matter if you're combining classes with 132 133 00:10:22,500 --> 00:10:25,540 ids or ids with HTML elements. 133 134 00:10:25,560 --> 00:10:26,880 So let's give this an id. 134 135 00:10:26,880 --> 00:10:34,060 Let's call this heading, and let's change our class back to title and hit run. 135 136 00:10:34,080 --> 00:10:44,400 And now I'm able to change the h1 by saying h1#heading. This will target an h1 that 136 137 00:10:44,400 --> 00:10:48,670 has an id of heading and that is of course our Hello World. 137 138 00:10:48,690 --> 00:10:57,840 I can also say h1.title, but this now targets all the h1s that have a class of title, and that 138 139 00:10:57,870 --> 00:11:00,280 is both Hello and Good Bye. 139 140 00:11:00,390 --> 00:11:06,760 So I hope that illustrates a common confusion point which is space versus no space, 140 141 00:11:06,810 --> 00:11:11,720 and what is the difference between a hierarchical and a simple combo. 141 142 00:11:11,730 --> 00:11:14,800 So this takes a little bit of time to really sink in, 142 143 00:11:14,850 --> 00:11:22,500 and I really urge you to build your own code playground and mess with your code to try and target specific 143 144 00:11:22,500 --> 00:11:28,070 things without having to add in more custom classes into your HTML, 144 145 00:11:28,170 --> 00:11:33,180 so try to use combinations instead of adding new classes that you can target. 145 146 00:11:33,330 --> 00:11:38,130 So have a play around with that and in the next lesson we're going to get back to refactoring our code 146 147 00:11:38,370 --> 00:11:40,310 so that we can finish off our web site. 147 148 00:11:40,320 --> 00:11:43,310 So for all of that and more, I'll see you on the next lesson. 16792

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.