Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,620 --> 00:00:09,500
So here I've got a Code Ply again with no frameworks, so pure CSS, and we've got a h1 that has an id
2
00:00:09,560 --> 00:00:14,540
of heading as well as a class of title and it just says Hello World.
3
00:00:14,540 --> 00:00:18,770
Now over here there's many ways that I can change it's style,
4
00:00:18,770 --> 00:00:19,150
right?
5
00:00:19,250 --> 00:00:26,580
So I can say, for example, h1 color red, and if I hit run then of course it will turn red.
6
00:00:26,690 --> 00:00:31,020
But if you accidentally try to change the same property twice,
7
00:00:31,070 --> 00:00:38,420
say, for example, if I said now color is green, then the last CSS rule change will be the one that will
8
00:00:38,420 --> 00:00:39,130
be carried out.
9
00:00:39,200 --> 00:00:42,560
So if I hit run this is now going to be green instead of red.
10
00:00:42,560 --> 00:00:46,470
So basically the process is, changes it red, and then it changes it
11
00:00:46,470 --> 00:00:48,830
green. It's reading the code from top to bottom.
12
00:00:48,850 --> 00:00:49,890
It's not very clever here.
13
00:00:49,970 --> 00:00:55,070
So in this case the last CSS rule has priority over everything above it.
14
00:00:55,190 --> 00:01:02,180
Now as we said before I can either use the h1 which is an HTML element selector to change the color
15
00:01:02,630 --> 00:01:06,530
or I can use the class which is title to change the color.
16
00:01:06,560 --> 00:01:08,460
So let's change it to yellow.
17
00:01:08,690 --> 00:01:12,650
Now a class is more specific than an HTML element.
18
00:01:12,650 --> 00:01:17,900
So, think about it, on your web page you're probably going to have more HTML elements than classes.
19
00:01:17,900 --> 00:01:22,720
So, for example, if you had a whole bunch of paragraphs, they're probably all going to have different classes,
20
00:01:22,880 --> 00:01:28,320
so it makes sense to make the class selectors have higher priority, because they are more specific.
21
00:01:28,370 --> 00:01:35,030
So if I hit run now, you'll see that the Hello World is now yellow instead of red because this has a higher
22
00:01:35,030 --> 00:01:36,600
priority. Now
23
00:01:36,620 --> 00:01:45,470
finally, if I decided to change the color by using the id, so let's target that id, heading, and change the
24
00:01:45,470 --> 00:01:51,990
color to blue and I hit run you'll see that this has the highest priority of all.
25
00:01:52,220 --> 00:01:56,830
And our Hello World will display in blue rather than any other color.
26
00:01:57,050 --> 00:02:02,570
And if we take a look at the Chrome Developer Tools over here, you can see that all our colors are being
27
00:02:02,570 --> 00:02:07,880
applied but they're just being overridden by something with a higher priority.
28
00:02:07,910 --> 00:02:15,380
So that means that if this color change wasn't applied in the id, so if we deleted this line of code, then it
29
00:02:15,380 --> 00:02:18,210
would go to the next highest priority
30
00:02:18,330 --> 00:02:20,630
CSS rule, which is the class,
31
00:02:20,630 --> 00:02:23,120
and finally it would go to the h1.
32
00:02:23,120 --> 00:02:29,840
So, knowing what we know about how specific CSS rules are, for example we know that inline styles are
33
00:02:29,840 --> 00:02:34,230
more specific than say internal or external CSS styles,
34
00:02:34,280 --> 00:02:37,460
so if we change the color here to,
35
00:02:37,850 --> 00:02:42,330
I'm running out of colors here, orange, and we hit run,
36
00:02:42,440 --> 00:02:50,240
you can see that this is even higher priority than the ids and that is overriding all of our external
37
00:02:50,240 --> 00:02:50,980
stylesheet.
38
00:02:51,140 --> 00:02:54,240
So it can get pretty confusing very quickly.
39
00:02:54,260 --> 00:02:59,660
And also if you're writing a lot of CSS code, very often you're going to get into the situation where
40
00:02:59,660 --> 00:03:04,740
you start writing conflicting rules like this bunch we've got over here.
41
00:03:04,780 --> 00:03:10,630
So this ends up being a lot of code that's applied to the same thing, well applied three times basically,
42
00:03:10,640 --> 00:03:14,110
and the last one standing gets carried through in the end.
43
00:03:14,120 --> 00:03:18,460
But this is very inefficient and it's also very very bug prone.
44
00:03:18,560 --> 00:03:22,090
So how can you prevent creating conflicting rules?
45
00:03:22,160 --> 00:03:27,630
Well, the first thing to remember is, use ids very very sparingly.
46
00:03:27,740 --> 00:03:30,190
Don't try and use it when you can use a class.
47
00:03:30,230 --> 00:03:36,530
So, for example, in our case we've really only got ids for our sections, and, in part, that's because it
48
00:03:36,530 --> 00:03:38,540
helps us with our navigation.
49
00:03:38,540 --> 00:03:44,420
So just because you only have one of something isn't good enough to give it an id instead of a class.
50
00:03:44,450 --> 00:03:50,750
So, for example, if I wanted to change the style of our copyright text, then even though we're only going
51
00:03:50,750 --> 00:03:58,100
to have one copyright text on our page, it's not a good enough reason to use an id rather than using
52
00:03:58,130 --> 00:03:58,780
a class.
53
00:03:58,790 --> 00:04:01,710
A class is perfectly good enough in this case.
54
00:04:01,790 --> 00:04:08,240
So use ids really really sparingly, and I tend to recommend to only use it really for those sections
55
00:04:09,020 --> 00:04:12,240
and parts of your code that definitely need an id,
56
00:04:12,350 --> 00:04:17,570
for example, if you're working with Bootstrap carousels or Bootstrap elements, then they do need an
57
00:04:17,570 --> 00:04:25,580
id to target from the href. They need that navigational ability of the id, and that is a case where you
58
00:04:25,580 --> 00:04:31,820
might consider using it, but always first consider using class instead of going straight to an id, even
59
00:04:31,880 --> 00:04:33,340
if it only appears once.
60
00:04:33,350 --> 00:04:39,440
The other thing to remember is that, when you're applying classes to your elements, to only use one class. I
61
00:04:39,440 --> 00:04:44,570
know that it seems a little bit weird because we're using Bootstrap and Bootstrap loves it's multiple
62
00:04:44,570 --> 00:04:47,210
classes, which irks a lot of people.
63
00:04:47,240 --> 00:04:52,760
But in terms of the CSS classes that youre applying yourself, for example in this case the h1 has a
64
00:04:52,760 --> 00:05:01,490
class of big-heading, and it wasn't something like big and heading and, I don't know, white, right, where
65
00:05:01,520 --> 00:05:07,790
we have different styles for each of these classes and together they make up the big-heading.
66
00:05:07,790 --> 00:05:14,870
This is really bad practice because it's very very easy to get into conflicts that way so try to keep
67
00:05:14,870 --> 00:05:20,200
it specific and try to apply only a single custom class to each of your elements.
68
00:05:20,330 --> 00:05:24,360
And the other thing is avoid inline styles at all costs.
69
00:05:24,380 --> 00:05:28,220
This is really really bad
70
00:05:28,220 --> 00:05:30,010
CSS coding practice.
71
00:05:30,170 --> 00:05:36,760
There are no cases where your inline style can not be solved by using the external stylesheet.
72
00:05:36,770 --> 00:05:40,730
So this is just pure laziness and it's really really bad practice.
73
00:05:40,730 --> 00:05:41,900
So don't do that.
74
00:05:41,900 --> 00:05:48,620
So those are just a few bits of good practice to incorporate into your workflow so that you avoid conflicts
75
00:05:48,650 --> 00:05:51,700
and you have less problems debugging your code later on.
7806
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.