ทำ Footer ให้อยู่ด้านล่างตลอดเวลาด้วย CSS
นักพัฒนาเว็บไซต์ทั้งมือใหม่ และมือเก๋าอาจจะต้องเคยเจอปัญหาเรื่อง footer อยู่ไม่เป็นที่เป็นทาง เพราะสิ่งที่เราคาดหวังกับ footer จริงๆ คือ “อยู่ติดกับขอบเว็บไซต์ด้านล่าง” แต่ปัญหาคือมันไม่ได้เป็นอย่างนั้น ยิ่งหน้าเว็บไซต์ไหนที่เนื้อหาของเรามีปริมาณน้อย footer ก็จะเด้งขึ้นมาอยู่กลางจอบ้าง เกือบล่างบ้าง บางครั้งก็ดูไม่งามเลย
ยิ่งกับเว็บไซต์ที่ใช้ footer เป็นสีเข้มตัดกับพื้นหลังด้วยนะ..
สำหรับการทำให้ footer อยู่ติดกับด้านล่างของหน้าเว็บไซต์ตลอดไปโดยไม่จำเป็นต้องไป hack ความสูง ของเนื้อหานั้นก็มีหลากหลายวิธี ซึ่งแต่ละวิธีก็จะยากง่ายต่างกันไป แต่าสำหรับผู้เขียนแล้วชอบอะไรที่ไม่ซับซ้อน ต้องเป็น CSS อย่างเดียวไม่ต้องใช้ Javascript เข้าช่วย และ code ก็ต้องอ่านง่ายดู make sense พอที่จะทำด้วย
และถ้าใช้กับพวก IE8 ได้ก็จะดีขึ้นไปอีก
เริ่มต้นกันด้วยการ resetCSS กันก่อน อาจจะใช้ normalize.css ก็ได้ หรือใครไม่อยากโหลด CSS อะไรจากข้างนอกหลายบรรทัดก็ให้ใช้
*{ margin: 0; padding: 0}
ตามสไตล์คนขี้เกียจ แต่สำหรับผมแล้ว.. ไม่แนะนำ
html { position: relative; min-height: 100%; } body { margin: 0 0 100px; // margin-bottom มีค่าเท่ากับความสูงของ footer } .footer { position: absolute; left: 0; bottom: 0; height: 100px; width: 100%; }
ส่วน HTML ก็ดู clean มาก เพียงแค่ใส่ element ที่มี class ชื่อว่า “footer” เข้าไปก่อนปิด body ก็เป็นอันเรียบร้อย อย่างเช่น
<div class="header"></div> <div class="content"></div> <div class="footer"></div>
อะไรทำนองนี้ครับ ส่วนคนที่ใช้ HTML5 เป็นทุนเดิมก็แค่เอา class ออก แล้วกำหนดเป็น “footer” แทน “.footer” ก็ได้ผลเช่นเดียวกัน ทางเลือกที่ 2 ด้านล่างนี้จะคล้ายๆ กันแต่จะเพิ่ม code เข้ามาสัก 3-4 บรรทัดเพื่อทำ fallback หาก code ด้านบนมีอะไรผิดพลาด
html, body { height: 100%; } .content { min-height: 100%; margin-bottom: -100px; // ค่าเท่ากับความสูงของ footer } .content:after { content: ""; display: block; } .footer, .content:after { height: 100px; } .footer { background: #333; }
code สามารถเลือกใช้งานจริงได้ทั้งคู่ครับ เลือกเอาเลย