Skip to content


เรื่องวุ่น ๆ กับการกำหนด padding ใน CSS

ได้มีโอกาสเขียนเว็บโดยใช้ CSS เป็นหลักแล้วเจอปัญหาเกี่ยวกับการกำหนด padding ใน <div> ปัญหาที่ว่านี้ก็คือ การแสดงผล padding ในแต่ละ browser มันไม่เหมือนกัน ผมเชื่อว่าหลาย ๆ คนที่ทำเว็บก็คงเคยเจอปัญหานี้เหมือนกัน ยกตัวอย่าง web browser คู่ปรับยอดนิยม ระหว่าง IE กับ FireFox โดยตัว IE เอง จะวัดความกว้างของ content จากขอบด้านหนึ่งของ container ไปยังอีกด้านหนึ่ง ในขณะที่ Firefox จะวัดจากตัว content ด้านใน container เอง ดังนั้นทำให้เมื่อเรากำหนดความกว้างที่ 300 pixels และกำหนด padding ซ้ายและขวาข้างละ 20 pixels IE จะใช้เนื้อที่จริง 300 pixels และเนื้อที่แสดงเนื้อหาเหลือแค่ 260 pixels ส่วน FireFox จะใช้เนื้อที่จริง 340 pixels และมีเนื้อที่แสดงเนื้อหา 300 pixels

ปัญหานี้สามารถแก้ไขได้โดยการกำหนด box model ให้เหมือนกันด้วย css เพื่อให้ตัว render หน้าเว็บ ทำงานไปในทางเดียวกัน สิ่งที่ต้องเพิ่มลงไปใน style ของ object ที่เราต้องการกำหนดคือ

-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;

การกำหนดค่าแบบนี้ จะเป็นการสั่งให้ browser คำนวณความกว้างของ content จากขอบของ container เหมือนกับที่ IE ทำนั่นเอง

เพื่อให้เห็นภาพได้ชัดเจนมากขึ้น ผมว่าเราลองไปดูตัวอย่างใน LIVE DEMO กันเลยดีกว่าครับ

Share

Posted in CSS, HTML.

Tagged with , , , .


8 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Dr.Yes says

    แล้วถ้าจะสั่งให้ IE คำนวนแบบ Firefox ใช้ว่าอะไรอ่ะ

  2. chonla says

    content-box

  3. bAnk` says

    แล้ว
    -webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;
    3 อันนี้ ต้องใส่ทั้ง 3 อันเลยรึป่าวครับ ถึงจะทำให้ทุก broswer เหมือนกันอ่ะครับ

  4. chonla says

    แม่นครับ

  5. ราคา คอมพิวเตอร์ says

    ปวดหัวทุกที่เจอ Css

  6. chonla says

    แต่ก็สนุกดีนะครับ

  7. nognoomza says

    ใส่ไว้ใน css ยังไงอ่ะคับ ประมาณนี้หรือป่าวคับ

    html {
    background-attachment:
    fixed;background-image:url(images/bg-blue.jpg);
    -webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;
    }

  8. chonla says

    ใช่ครับ แต่ใส่กับ html มันจะใช้ได้กับ tag html นะครับ
    ใช้กับ tag หรือ element ที่ต้องการดีกว่าครับ



Some HTML is OK

or, reply to this post via trackback.

*