All language subtitles for 198 Revealing Elements on Scroll.en_US1

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
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
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian Download
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,480 --> 00:00:03,443 Let's implement another really cool 2 00:00:03,443 --> 00:00:08,443 and modern feature using the intersection observer API. 3 00:00:08,520 --> 00:00:09,353 And this time, 4 00:00:09,353 --> 00:00:13,180 we're gonna reveal elements as we scroll close to them. 5 00:00:13,180 --> 00:00:17,090 And this effect can give your pages a very nice touch. 6 00:00:17,090 --> 00:00:18,420 And you can, in fact, 7 00:00:18,420 --> 00:00:21,813 easily implement it without any external library. 8 00:00:23,200 --> 00:00:25,560 So the effect that I mean is this one 9 00:00:25,560 --> 00:00:27,270 here with the sections. 10 00:00:27,270 --> 00:00:28,793 So watch what happens here. 11 00:00:30,210 --> 00:00:33,750 So you see that we basically reveal each section 12 00:00:33,750 --> 00:00:34,963 as we approach it. 13 00:00:36,190 --> 00:00:39,973 Alright, so I'm not talking about these images here yet. 14 00:00:40,820 --> 00:00:43,140 So I'm just talking about the sections. 15 00:00:43,140 --> 00:00:46,103 So see how it basically slides in like this. 16 00:00:47,640 --> 00:00:50,410 Now, right, and so that's what we're gonna do now, 17 00:00:50,410 --> 00:00:52,147 with all these four sections. 18 00:00:52,147 --> 00:00:56,550 Now, the animation itself actually comes from CSS. 19 00:00:56,550 --> 00:00:57,950 And so once more, 20 00:00:57,950 --> 00:01:01,510 we will actually achieve this by simply adding a class 21 00:01:01,510 --> 00:01:04,720 to each of these sections as we approach them. 22 00:01:04,720 --> 00:01:07,580 And so we will do that using the intersection 23 00:01:07,580 --> 00:01:09,930 observer API once again, 24 00:01:09,930 --> 00:01:13,313 because that's really the perfect job for this tool. 25 00:01:14,530 --> 00:01:19,530 Okay, so let's actually take a look at our CSS here. 26 00:01:22,330 --> 00:01:23,480 So I'm gonna write 27 00:01:23,480 --> 00:01:27,940 or to search for a section hidden. 28 00:01:27,940 --> 00:01:30,460 So this is the class here. 29 00:01:30,460 --> 00:01:31,890 And so basically, 30 00:01:31,890 --> 00:01:34,743 all the sections by default have this class. 31 00:01:36,120 --> 00:01:37,793 So let me show that to you also. 32 00:01:38,930 --> 00:01:41,050 Well, actually, they don't. 33 00:01:41,050 --> 00:01:42,000 And of course, they don't, 34 00:01:42,000 --> 00:01:44,250 because then we could not see them right now. 35 00:01:45,260 --> 00:01:48,880 Okay, so we have to add them now as we build this, 36 00:01:48,880 --> 00:01:52,300 and so this will basically give them an opacity of zero, 37 00:01:52,300 --> 00:01:54,490 and it will move them a little bit down. 38 00:01:54,490 --> 00:01:57,350 And so then when we remove this here, 39 00:01:57,350 --> 00:02:00,670 it will then move them back up to a translate 40 00:02:00,670 --> 00:02:03,760 of zero rem, basically. 41 00:02:03,760 --> 00:02:07,350 Okay, so what I'm gonna do is to start 42 00:02:07,350 --> 00:02:09,100 by adding this section, 43 00:02:09,100 --> 00:02:11,230 or this class, actually, 44 00:02:11,230 --> 00:02:14,110 to all the four sections that we want to apply 45 00:02:14,110 --> 00:02:16,043 this effect to. 46 00:02:17,270 --> 00:02:21,380 So this one here, then, the next one, 47 00:02:29,330 --> 00:02:34,330 number three, and number four, yeah. 48 00:02:36,720 --> 00:02:38,653 And so now all of them will disappear. 49 00:02:39,870 --> 00:02:42,040 Okay, they are simply invisible, 50 00:02:42,040 --> 00:02:43,040 they're still there. 51 00:02:43,040 --> 00:02:45,650 So we are still like displaying them. 52 00:02:45,650 --> 00:02:49,030 And so they preserve their height, basically. 53 00:02:49,030 --> 00:02:50,990 But they are now invisible. 54 00:02:50,990 --> 00:02:54,130 And so our job is now to remove this class 55 00:02:54,130 --> 00:02:57,853 as we approach each of these sections. 56 00:03:03,050 --> 00:03:04,923 So reveal sections. 57 00:03:07,250 --> 00:03:08,783 So let's say a section, 58 00:03:10,170 --> 00:03:15,170 observer, new intersection observer, 59 00:03:16,320 --> 00:03:17,890 and then here, the callback, 60 00:03:17,890 --> 00:03:19,513 and that's already created here. 61 00:03:21,210 --> 00:03:26,210 Let's call it reveal section, like this entries. 62 00:03:32,110 --> 00:03:34,723 And this time, we will need the observer. 63 00:03:35,620 --> 00:03:37,990 And you will see in a minute why that is, 64 00:03:37,990 --> 00:03:39,370 so observer. 65 00:03:39,370 --> 00:03:40,550 And of course, 66 00:03:40,550 --> 00:03:42,970 these parameters here, as always, 67 00:03:42,970 --> 00:03:45,870 can have any name that we want, right. 68 00:03:45,870 --> 00:03:48,020 So just like in the callback functions 69 00:03:48,020 --> 00:03:49,600 of the array methods, 70 00:03:49,600 --> 00:03:51,860 where we can also give them any name. 71 00:03:51,860 --> 00:03:53,350 And here, it's the same, 72 00:03:53,350 --> 00:03:55,490 but this is kind of the standard. 73 00:03:55,490 --> 00:03:58,163 And so that's why I keep doing it like this. 74 00:03:59,200 --> 00:04:01,270 So reveal section, 75 00:04:01,270 --> 00:04:03,603 and then the object of options. 76 00:04:04,650 --> 00:04:08,770 So we want to observe all the four sections actually 77 00:04:08,770 --> 00:04:10,250 in this case. 78 00:04:10,250 --> 00:04:12,070 And it is indeed possible 79 00:04:12,070 --> 00:04:15,800 to observe them all using the same observer. 80 00:04:15,800 --> 00:04:18,040 So let's select all the sections. 81 00:04:18,040 --> 00:04:21,450 And then we will observe these as multiple targets, 82 00:04:21,450 --> 00:04:24,153 all using this observer that we just created here. 83 00:04:26,920 --> 00:04:31,920 So all sections is document dot query selector all 84 00:04:37,850 --> 00:04:40,610 and so that's simply the class section. 85 00:04:40,610 --> 00:04:42,940 And now we can loop over this node list 86 00:04:45,860 --> 00:04:46,893 with for each. 87 00:04:48,110 --> 00:04:50,530 So we use for each whenever we want to do 88 00:04:50,530 --> 00:04:54,693 something which does not involve creating a new array. 89 00:04:56,810 --> 00:04:59,230 And so here the callback function, 90 00:04:59,230 --> 00:05:02,430 I will call it section and then just like before, 91 00:05:02,430 --> 00:05:06,510 we will use our observer to observe section. 92 00:05:09,350 --> 00:05:12,730 And actually, since we're already looping over all 93 00:05:12,730 --> 00:05:17,030 these sections, it would probably be a better idea to add 94 00:05:17,030 --> 00:05:18,650 this class here. 95 00:05:18,650 --> 00:05:22,320 So this section hidden, also using JavaScript, 96 00:05:22,320 --> 00:05:26,250 so not do it manually here in the HTML, and instead, 97 00:05:26,250 --> 00:05:27,680 do it in JavaScript. 98 00:05:27,680 --> 00:05:30,120 Because some people actually disable JavaScript 99 00:05:30,120 --> 00:05:31,420 in their browser. 100 00:05:31,420 --> 00:05:33,090 And then for those users, 101 00:05:33,090 --> 00:05:35,430 the page wouldn't really be visible. 102 00:05:35,430 --> 00:05:39,620 Right, they would then have no way of removing this class. 103 00:05:39,620 --> 00:05:42,400 And so this is probably not a good idea. 104 00:05:42,400 --> 00:05:44,330 So I will copy it now. 105 00:05:44,330 --> 00:05:47,163 And then I will just undo everything we did. 106 00:05:49,970 --> 00:05:54,970 So yeah, so now it should be back to normal. 107 00:05:56,020 --> 00:05:57,130 And it is. 108 00:05:57,130 --> 00:06:00,780 And now I will do that programmatically, here. 109 00:06:00,780 --> 00:06:02,033 So that's a lot better. 110 00:06:03,235 --> 00:06:05,833 I don't know why I didn't think of that right away. 111 00:06:06,750 --> 00:06:08,910 So classlist add, 112 00:06:08,910 --> 00:06:11,940 and so this is nothing new at this point. 113 00:06:11,940 --> 00:06:13,160 Let's see. 114 00:06:13,160 --> 00:06:15,573 And now they are back to being hidden. 115 00:06:17,410 --> 00:06:22,410 So let's start by taking care of here of this options. 116 00:06:22,410 --> 00:06:26,340 And as always, the route is gonna be the viewport. 117 00:06:26,340 --> 00:06:29,830 So now, and then the threshold, 118 00:06:29,830 --> 00:06:33,280 we will set it to something greater than zero. 119 00:06:33,280 --> 00:06:34,580 And that's because we don't want 120 00:06:34,580 --> 00:06:36,030 to show the section right 121 00:06:36,030 --> 00:06:39,400 as it enters the viewport, but a little bit later. 122 00:06:39,400 --> 00:06:44,400 So let's say 15%, for example, for now, 123 00:06:44,660 --> 00:06:47,930 so this will make it so that the section is only revealed 124 00:06:47,930 --> 00:06:51,260 when it is 15% visible. 125 00:06:51,260 --> 00:06:52,540 All right. 126 00:06:52,540 --> 00:06:54,970 So this is all of the setup. 127 00:06:54,970 --> 00:06:57,660 And now let's create basically the logic. 128 00:06:57,660 --> 00:06:59,850 So in here, and once again, 129 00:06:59,850 --> 00:07:01,800 we have only one threshold. 130 00:07:01,800 --> 00:07:03,620 And so let's get that entry 131 00:07:03,620 --> 00:07:06,553 from the entries using destructuring. 132 00:07:13,630 --> 00:07:15,810 And, as always, 133 00:07:15,810 --> 00:07:17,773 let's start by logging the entry here. 134 00:07:21,780 --> 00:07:25,330 Give us some more space, this 90 is coming 135 00:07:25,330 --> 00:07:26,583 from up here. 136 00:07:28,890 --> 00:07:30,613 So we don't need that anymore. 137 00:07:32,040 --> 00:07:35,740 Now, okay, and so now we see that some section here 138 00:07:35,740 --> 00:07:39,810 is already being intersected at zero percent. 139 00:07:39,810 --> 00:07:41,940 And so now actually this target element 140 00:07:41,940 --> 00:07:43,123 will become important. 141 00:07:44,130 --> 00:07:46,360 And well, right now there is no target. 142 00:07:46,360 --> 00:07:50,100 Because this first, so to say event 143 00:07:50,100 --> 00:07:52,393 is always triggered no matter what. 144 00:07:53,360 --> 00:07:56,650 So let's go a little bit until 15% 145 00:07:56,650 --> 00:07:59,193 of the first row is intersected. 146 00:08:00,250 --> 00:08:02,410 And of course, that intersection happens, 147 00:08:02,410 --> 00:08:04,350 even though we cannot see it. 148 00:08:04,350 --> 00:08:05,740 So we don't see the row. 149 00:08:05,740 --> 00:08:08,543 But still it is now 15% intersecting, 150 00:08:11,225 --> 00:08:13,623 and now the target here is actually important. 151 00:08:15,830 --> 00:08:18,573 And so here, we actually have the classname, 152 00:08:19,750 --> 00:08:21,870 so section and section hidden, 153 00:08:21,870 --> 00:08:25,620 and so this means that actually a certain section did now 154 00:08:25,620 --> 00:08:27,093 intersect the viewport. 155 00:08:28,990 --> 00:08:30,710 Maybe we can see the ID. 156 00:08:30,710 --> 00:08:32,360 Oh, yeah, here it is. 157 00:08:32,360 --> 00:08:34,820 So it was the section one indeed. 158 00:08:34,820 --> 00:08:36,623 So the one with the ID of one. 159 00:08:39,770 --> 00:08:42,680 And this target will now actually be important, 160 00:08:42,680 --> 00:08:45,040 because now we want to make exactly 161 00:08:45,040 --> 00:08:46,540 this section visible, 162 00:08:46,540 --> 00:08:49,290 not all of the sections, right. 163 00:08:49,290 --> 00:08:51,390 But we are observing all of the sections 164 00:08:51,390 --> 00:08:56,390 here with this same observer here, right. 165 00:08:56,730 --> 00:08:58,810 And so now we need a way of knowing, 166 00:08:58,810 --> 00:09:00,660 which is the section that actually 167 00:09:00,660 --> 00:09:02,690 intersected the viewport. 168 00:09:02,690 --> 00:09:05,283 And so that's what we can use the target for. 169 00:09:06,550 --> 00:09:08,403 And so let's do that. 170 00:09:09,320 --> 00:09:12,373 So that's at entry dot target. 171 00:09:13,210 --> 00:09:14,670 And now we can, 172 00:09:14,670 --> 00:09:16,880 as always manipulate that class list 173 00:09:17,960 --> 00:09:22,960 and remove this section, 174 00:09:23,720 --> 00:09:26,193 or this class that hides it. 175 00:09:28,690 --> 00:09:31,023 And you'll see that it's already working. 176 00:09:32,400 --> 00:09:36,040 Well, it actually happens a bit too soon, it appears. 177 00:09:36,040 --> 00:09:37,743 But on this one, it was perfect. 178 00:09:38,620 --> 00:09:40,580 Let's see the next one. 179 00:09:40,580 --> 00:09:43,103 And again, it worked just fine. 180 00:09:44,057 --> 00:09:46,770 And the last one as well. 181 00:09:46,770 --> 00:09:48,810 Let's try again, this one here, 182 00:09:48,810 --> 00:09:50,510 and for some reason, 183 00:09:50,510 --> 00:09:52,360 it's already there. 184 00:09:52,360 --> 00:09:56,320 And I guess the reason for that is this first entry 185 00:09:56,320 --> 00:09:59,093 here that always gets printed in the beginning. 186 00:10:00,060 --> 00:10:02,960 So yeah, you see that the target here is actually 187 00:10:02,960 --> 00:10:04,530 this first section. 188 00:10:04,530 --> 00:10:06,580 Now it is not intersecting. 189 00:10:06,580 --> 00:10:09,890 And so let's now use that to our advantage. 190 00:10:09,890 --> 00:10:13,180 So we only want to trigger this removing here, 191 00:10:13,180 --> 00:10:14,720 when the section, 192 00:10:14,720 --> 00:10:17,403 so when the target is actually intersecting. 193 00:10:18,530 --> 00:10:22,970 So if entry.isIntersecting, then do this. 194 00:10:27,030 --> 00:10:30,410 And actually, I'm gonna use another guard clause here. 195 00:10:30,410 --> 00:10:31,970 So I will do the opposite. 196 00:10:31,970 --> 00:10:34,423 So I say, if it's not intersecting, 197 00:10:35,420 --> 00:10:37,163 then return right away. 198 00:10:38,380 --> 00:10:40,930 Okay, but if it is intersecting, 199 00:10:40,930 --> 00:10:42,830 then the function will not return, 200 00:10:42,830 --> 00:10:46,223 and simply the rest of our code is gonna be executed. 201 00:10:47,330 --> 00:10:49,136 So let's try that one more time, 202 00:10:49,136 --> 00:10:51,700 and now you see it's not yet visible, 203 00:10:51,700 --> 00:10:53,423 but it will become visible soon. 204 00:10:54,720 --> 00:10:55,763 And there it is. 205 00:10:58,410 --> 00:11:00,733 Beautiful, and it still works. 206 00:11:04,210 --> 00:11:05,043 Now, right. 207 00:11:06,170 --> 00:11:08,823 So that's a really nice effect, right? 208 00:11:09,660 --> 00:11:12,320 We can just do one more small improvement, 209 00:11:12,320 --> 00:11:15,930 which is to now unobserve these sections, 210 00:11:15,930 --> 00:11:17,933 because you see, as we keep scrolling, 211 00:11:19,000 --> 00:11:21,880 the observer keeps observing the sections. 212 00:11:21,880 --> 00:11:24,210 So you see, as we keep scrolling here, 213 00:11:24,210 --> 00:11:27,200 more and more of these events, 214 00:11:27,200 --> 00:11:28,640 keep getting added. 215 00:11:28,640 --> 00:11:31,940 But in fact, they are actually no longer necessary, 216 00:11:31,940 --> 00:11:34,200 because we already did all the work 217 00:11:34,200 --> 00:11:35,639 that we wanted. 218 00:11:35,639 --> 00:11:38,330 And so we can now unobserve. 219 00:11:38,330 --> 00:11:43,330 And so there is again by doing observer, dot unobserve, 220 00:11:44,930 --> 00:11:46,917 so the opposite of observe. 221 00:11:46,917 --> 00:11:50,090 And then again, we need to pass in which element 222 00:11:50,090 --> 00:11:51,920 should be unobserved. 223 00:11:51,920 --> 00:11:53,400 And so in this case, 224 00:11:53,400 --> 00:11:57,023 that comes from entry dot target. 225 00:11:58,610 --> 00:12:00,223 So let's see what happens now. 226 00:12:01,190 --> 00:12:05,390 So the first time, of course, we get these logs here, 227 00:12:05,390 --> 00:12:07,720 because of course, work is being done, 228 00:12:07,720 --> 00:12:10,110 but right after that, each of the section 229 00:12:10,110 --> 00:12:12,240 is being unobserved. 230 00:12:12,240 --> 00:12:13,933 So let's go to the end here. 231 00:12:14,830 --> 00:12:17,810 And when we clear this now and keep scrolling, 232 00:12:17,810 --> 00:12:20,760 you see that we get no more events here. 233 00:12:20,760 --> 00:12:23,100 And so that means that none of this section 234 00:12:23,100 --> 00:12:24,785 is being observed anymore. 235 00:12:24,785 --> 00:12:26,930 And so that's gonna be even a little bit 236 00:12:26,930 --> 00:12:28,853 better for our performance. 237 00:12:30,240 --> 00:12:32,820 Now, right, and that's actually it. 238 00:12:32,820 --> 00:12:34,260 So another really cool use 239 00:12:34,260 --> 00:12:37,053 case of the intersection observer API. 16809

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