ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

 

     CSS ย่อมาจาก Cascading Style Sheet มักเรียกโดยย่อว่า “สไตล์ชีท” คือ ภาษาที่ใช้เป็นส่วนของการจัดรูปแบบการแสดงผลเอกสาร htmlโดยที่ CSS กำหนดกฎเกณฑ์ในการระบุรูปแบบ หรือ “Style” ของเนื้อหาในเอกสาร โดยบทความนี้จะกล่าวถึง การฟิคแถบ Navbar (เมนูบาร์ ซึ่งเป็นส่วนประกอบสำคัญบนเว็บไซด์ ในปัจจุบันอาจจะมีทั้ง jQuery หรือ JAVASCRIPT ที่มาช่วยให้เราสร้างเมนูบาร์ได้ง่ายขึ้น) โดยใช้ JavaScriptเข้ามาช่วย

     โดยในบทความนี้จะกล่าวถึงการฟิค Navbar ที่เคยฟิคไปแล้ว แต่ในโหมดมือถือจะเลือกให้ฟิคในส่วนที่ต้องการเท่านั้น

 

รูปแบบโค้ด CSS

.sticky {
  position: fixed;
  top: 0;
  width: 100%;
}

@media (width:320px){   // ขนาดที่กำหนดไว้
.sticky_1 {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 2000;
}
.notst{
    position: relative; 
}

 

รูปแบบโค้ด JavaScript

 <script>
        window.onscroll = function() {myFunction()};
        var navbar = document.getElementById("navbar");
        var navbar_1 = document.getElementById("navbar_1");
        var navbar_2 = document.getElementById("navbar");
        var sticky_1 = navbar_1.offsetTop;
        var sticky = navbar.offsetTop;

        function myFunction() {
          if (window.pageYOffset >= sticky) {
            navbar.classList.add("sticky")
          }
          if (window.pageYOffset >= sticky_1) {
            navbar_1.classList.add("sticky_1")
            navbar_2.classList.add("notst")
          }
          else {
            navbar_1.classList.remove("sticky_1");
            navbar.classList.remove("sticky");
            navbar_2.classList.remove("notst")
          }
          
        }
          
    </script>

 

ตัวอย่างโค้ด

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
  margin: 0;
  font-size: 28px;
}

.header {
  background-color: #f1f1f1;
  padding: 30px;
  text-align: center;
}

#navbar {
  overflow: hidden;
  background-color: red;
}

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}

#navbar a:hover {
  background-color: #ddd;
  color: black;
}

#navbar a.active {
  background-color: #4CAF50;
  color: white;
}



#navbar_1 {
  overflow: hidden;
  background-color: red;
}

#navbar_1 a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}

#navbar_1 a:hover {
  background-color: #ddd;
  color: black;
}

#navbar_1 a.active {
  background-color: #4CAF50;
  color: white;
}

.sticky {
  position: fixed;
  top: 0;
  width: 100%;
}

.sticky + .content {
  padding-top: 60px;
}


@media (width:320px){
.sticky_1 {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 2000;
}
.notst{
    position: static; 
}
}


</style>
</head>
<body>

<div class="header">
  <h2>Scroll Down</h2>
</div>

<div id="navbar">
  <a class="active">Home</a>
  <a>News</a>
  <a>Contact</a>
</div>
    
<div id="navbar_1">
  <a class="active">Home_1</a>
  <a>News</a>
  <a>Contact</a>
</div>

<div class="content">
  <h3>Sticky Navigation</h3>
  <p>Hello, I am mindphp.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
  <p>I love you.</p>
</div>

<script>
 window.onscroll = function() {myFunction()};
        var navbar = document.getElementById("navbar");
        var navbar_1 = document.getElementById("navbar_1");
        var navbar_2 = document.getElementById("navbar");
        var sticky_1 = navbar_1.offsetTop;
        var sticky = navbar.offsetTop;

        function myFunction() {
          if (window.pageYOffset >= sticky) {
            navbar.classList.add("sticky")
          }
          if (window.pageYOffset >= sticky_1) {
            navbar_1.classList.add("sticky_1")
            navbar_2.classList.add("notst")
          }
          else {
            navbar_1.classList.remove("sticky_1");
            navbar.classList.remove("sticky");
            navbar_2.classList.remove("notst")
          }
          
        }
</script>

</body>
</html>

 

ผลลัพธ์

 

เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า desktop

เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า Desktop
เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า Desktop

 

เมื่อเลื่อนเมาส์ Scroll Down  ในหน้า desktop

เมื่อเลื่อนเมาส์ Scroll Down  ในหน้า desktop
เมื่อเลื่อนเมาส์ Scroll Down ในหน้า desktop

 

เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า Mobile

เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า Mobile
เมื่อยังไม่ได้เลื่อน Scroll Down ในหน้า Mobile

 

เมื่อเลื่อนเมาส์ Scroll Down  ในหน้า Mobile

เมื่อเลื่อนเมาส์ Scroll Down  ในหน้า Mobile
เมื่อเลื่อนเมาส์ Scroll Down ในหน้า Mobile

 

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : HTML css CodeIgniter Framework

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ท่านตลกหรอพระเจ้า?
โดย noppadonsk พ 05 ก.พ. 2020 10:53 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
59
พ 05 ก.พ. 2020 10:53 am โดย noppadonsk
อยากทราบวิธีการแก้ไข้ ปํญหาเนื่องจากการติดตั้ง ตาราง โดย phpbb ที่มีจำนวนคอลัมมากๆๆ
โดย Ittichai_chupol อ 04 ก.พ. 2020 2:21 pm บอร์ด Programming - PHP
2
91
อ 04 ก.พ. 2020 2:32 pm โดย Ittichai_chupol
ถึงกับไปไม่เป็น
โดย noppadonsk อ 04 ก.พ. 2020 11:04 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
79
ศ 07 ก.พ. 2020 11:40 am โดย LEG
B - บอร์ด Odoojob เข้าไม่ได้ครับ
โดย jamepiyawat อ 04 ก.พ. 2020 10:39 am บอร์ด Odoojob.com - Tester
0
4
อ 04 ก.พ. 2020 10:39 am โดย jamepiyawat
สอบถามครับ ต้องการตัดค่าที่ซ้ำกันออกต้องทำไงครับ
โดย chatee supasand จ 03 ก.พ. 2020 2:19 pm บอร์ด Programming - C/C++ & java & Python
2
263
จ 03 ก.พ. 2020 2:41 pm โดย chatee supasand
กดsaveแล้วerrorครับ(สอนเขียน PHP ติดต่อฐานข้อมูล MySQL อัพโหลดภาพ เพิ่ม ลบ แก้ไข Database)
โดย jutikul1012 จ 03 ก.พ. 2020 11:02 am บอร์ด Programming - PHP
0
1708
จ 03 ก.พ. 2020 11:02 am โดย jutikul1012
อย่าลืมเซฟงานนะ
โดย noppadonsk จ 03 ก.พ. 2020 10:45 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
143
จ 03 ก.พ. 2020 11:01 am โดย thatsawan
ขอคำแนะนำเทคนิคพแดี พอดีผมกำลังหัดทำเว็บด้วย wordpress
โดย Anonymous จ 03 ก.พ. 2020 7:47 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
164
จ 03 ก.พ. 2020 11:24 am โดย mindphp
ทำความเข้าใจกับคีย์ลัด google Sheetsl เพื่อให้การทำงานง่ายขึ้น
โดย nutchasn ส 01 ก.พ. 2020 6:37 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
69
ส 01 ก.พ. 2020 6:37 pm โดย nutchasn
เพิ่มทักษะการใช้โปรแกรม Microsoft Excel ให้คำนวณและวิเคราะห์ได้ง่ายขึ้น
โดย nutchasn ส 01 ก.พ. 2020 5:53 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
67
ส 01 ก.พ. 2020 5:53 pm โดย nutchasn
ความแตกต่างของ google Slides กับ powerpoint เพื่อเลือกใช้ในการนำเสนอ
โดย nutchasn ส 01 ก.พ. 2020 5:02 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
65
ส 01 ก.พ. 2020 5:02 pm โดย nutchasn
เรียนรู้การขอStatement เพื่อใช้เป็นหลักฐานยืนยันการเคลื่อนไหวทางการเงิน
โดย nutchasn ส 01 ก.พ. 2020 2:53 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
46
ส 01 ก.พ. 2020 2:53 pm โดย nutchasn
ทำความเข้าใจภาษีมูลค่าเพิ่ม เพื่อให้เข้าใจว่าทำไมต้องจดทะเบียน
โดย nutchasn ส 01 ก.พ. 2020 12:27 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
49
ส 01 ก.พ. 2020 12:27 pm โดย nutchasn
อยากทราบวิธีการ แสดง icon logo ในหน้า favorite ของ safiri มีการแสดง icon ที่กำหนด
โดย Ittichai_chupol ศ 31 ม.ค. 2020 7:23 pm บอร์ด Programming - PHP
1
181
ศ 31 ม.ค. 2020 7:25 pm โดย mindphp
ขอสอบถามเกี่ยวกับการดึงข้อมูลภายในหน้าเดียวกันครับ
โดย benzas00123 ศ 31 ม.ค. 2020 7:08 pm บอร์ด HTML CSS
1
174
ศ 31 ม.ค. 2020 7:30 pm โดย benzas00123
Q-อยากทราบว่าต้องการย่อขยายรูปต้องทำยังไงค่ะ
โดย nutchasn ศ 31 ม.ค. 2020 6:29 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
180
ศ 31 ม.ค. 2020 6:33 pm โดย Ittichai_chupol
วิธีการปรับเปลี่ยน css เมือจอแสดงผมมีขนาดที่แตกตางกัน โดยการ override template เพื่อลดจำนวน โคด css
โดย Ittichai_chupol ศ 31 ม.ค. 2020 6:03 pm บอร์ด CSS Knowledge
0
143
ศ 31 ม.ค. 2020 6:03 pm โดย Ittichai_chupol
Flask dropzone กับคำสั่งในการตั้งค่าตัว โมดูลต่างๆ
โดย benzas00123 ศ 31 ม.ค. 2020 6:02 pm บอร์ด Python Knowledge
0
80
ศ 31 ม.ค. 2020 6:02 pm โดย benzas00123
การจัดซื้อใน โปรแกรมOpen erp ให้มีประสิทธิภาพ
โดย nutchasn ศ 31 ม.ค. 2020 5:56 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
49
ศ 31 ม.ค. 2020 5:56 pm โดย nutchasn
Flask dropzone โมดูลสำหรับการสร้าง Drop file อย่างง่าย
โดย benzas00123 ศ 31 ม.ค. 2020 5:21 pm บอร์ด Python Knowledge
0
120
ศ 31 ม.ค. 2020 5:21 pm โดย benzas00123