Skip to content

Commit 1a532b9

Browse files
committed
Implementing Smooth Scrolling
1 parent f3964a5 commit 1a532b9

File tree

3 files changed

+51
-12
lines changed

3 files changed

+51
-12
lines changed

starter/09-Omnifood-Optimizations/css/general.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ html {
7070
/* Percentage of user's browser font-size setting */
7171
font-size: 62.5%;
7272
overflow-x: hidden;
73+
74+
/* Does NOT work on Safari */
75+
/* scroll-behavior: smooth; */
7376
}
7477

7578
body {

starter/09-Omnifood-Optimizations/index.html

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
src="https://unpkg.com/ionicons@5.4.0/dist/ionicons/ionicons.js"
2727
></script>
2828

29+
<script
30+
defer
31+
src="https://unpkg.com/smoothscroll-polyfill@0.4.4/dist/smoothscroll.min.js"
32+
></script>
2933
<script defer src="js/script.js"></script>
3034

3135
<title>Omnifood</title>
@@ -38,11 +42,13 @@
3842

3943
<nav class="main-nav">
4044
<ul class="main-nav-list">
41-
<li><a class="main-nav-link" href="#">How it works</a></li>
42-
<li><a class="main-nav-link" href="#">Meals</a></li>
43-
<li><a class="main-nav-link" href="#">Testimonials</a></li>
44-
<li><a class="main-nav-link" href="#">Pricing</a></li>
45-
<li><a class="main-nav-link nav-cta" href="#">Try for free</a></li>
45+
<li><a class="main-nav-link" href="#how">How it works</a></li>
46+
<li><a class="main-nav-link" href="#meals">Meals</a></li>
47+
<li>
48+
<a class="main-nav-link" href="#testimonials">Testimonials</a>
49+
</li>
50+
<li><a class="main-nav-link" href="#pricing">Pricing</a></li>
51+
<li><a class="main-nav-link nav-cta" href="#cta">Try for free</a></li>
4652
</ul>
4753
</nav>
4854

@@ -64,10 +70,10 @@ <h1 class="heading-primary">
6470
eat healthy again. Tailored to your personal tastes and
6571
nutritional needs.
6672
</p>
67-
<a href="#" class="btn btn--full margin-right-sm"
73+
<a href="#cta" class="btn btn--full margin-right-sm"
6874
>Start eating well</a
6975
>
70-
<a href="#" class="btn btn--outline">Learn more &darr;</a>
76+
<a href="#how" class="btn btn--outline">Learn more &darr;</a>
7177
<div class="delivered-meals">
7278
<div class="delivered-imgs">
7379
<img src="img/customers/customer-1.jpg" alt="Customer photo" />
@@ -111,7 +117,7 @@ <h2 class="heading-featured-in">As featured in</h2>
111117
</div>
112118
</section>
113119

114-
<section class="section-how">
120+
<section class="section-how" id="how">
115121
<div class="container">
116122
<span class="subheading">How it works</span>
117123
<h2 class="heading-secondary">
@@ -183,7 +189,7 @@ <h3 class="heading-tertiary">Receive meals at convenient time</h3>
183189
</div>
184190
</section>
185191

186-
<section class="section-meals">
192+
<section class="section-meals" id="meals">
187193
<div class="container center-text">
188194
<span class="subheading">Meals</span>
189195
<h2 class="heading-secondary">
@@ -303,7 +309,7 @@ <h3 class="heading-tertiary">Works with any diet:</h3>
303309
</div>
304310
</section>
305311

306-
<section class="section-testimonials">
312+
<section class="section-testimonials" id="testimonials">
307313
<div class="testimonials-container">
308314
<span class="subheading">Testimonials</span>
309315
<h2 class="heading-secondary">Once you try it, you can't go back</h2>
@@ -452,7 +458,7 @@ <h2 class="heading-secondary">Once you try it, you can't go back</h2>
452458
</div>
453459
</section>
454460

455-
<section class="section-pricing">
461+
<section class="section-pricing" id="pricing">
456462
<div class="container">
457463
<span class="subheading">Pricing</span>
458464
<h2 class="heading-secondary">
@@ -562,7 +568,7 @@ <h2 class="heading-secondary">
562568
</div>
563569
</section>
564570

565-
<section class="section-cta">
571+
<section class="section-cta" id="cta">
566572
<div class="container">
567573
<div class="cta">
568574
<div class="cta-text-box">

starter/09-Omnifood-Optimizations/js/script.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,36 @@ btnNavEl.addEventListener("click", function () {
99
headerEl.classList.toggle("nav-open");
1010
});
1111

12+
///////////////////////////////////////////////////////////
13+
// Smooth scrolling animation
14+
15+
const allLinks = document.querySelectorAll("a:link");
16+
allLinks.forEach(function (link) {
17+
link.addEventListener("click", function (e) {
18+
e.preventDefault();
19+
const href = link.getAttribute("href");
20+
21+
//scroll back to top
22+
if (href === "#")
23+
window.scrollTo({
24+
top: 0,
25+
behavior: "smooth",
26+
});
27+
28+
// scroll to other links
29+
if (href !== "#" && href.startsWith("#")) {
30+
const sectionEl = document.querySelector(href);
31+
sectionEl.scrollIntoView({
32+
behavior: "smooth",
33+
});
34+
}
35+
36+
// close mobile navigatioon
37+
if (link.classList.contains("main-nav-link"))
38+
headerEl.classList.toggle("nav-open");
39+
});
40+
});
41+
1242
///////////////////////////////////////////////////////////
1343
// Fixing flexbox gap property missing in some Safari versions
1444
function checkFlexGap() {

0 commit comments

Comments
 (0)