ดูเหมือนว่าใน IE ความกว้างจะรวมถึงขนาดของช่องว่างภายใน ในขณะที่อยู่ใน FF ความกว้างไม่ได้ ฉันจะทำให้ทั้งสองประพฤติเหมือนกันได้อย่างไร
ขอบคุณ
ดูเหมือนว่าใน IE ความกว้างจะรวมถึงขนาดของช่องว่างภายใน ในขณะที่อยู่ใน FF ความกว้างไม่ได้ ฉันจะทำให้ทั้งสองประพฤติเหมือนกันได้อย่างไร
ขอบคุณ
คำตอบ:
IE เคยใช้โมเดลกล่องแบบ"border-box" ที่สะดวกกว่า แต่ไม่ได้มาตรฐาน ในรุ่นนี้ความกว้างขององค์ประกอบรวมถึงการขยายและขอบ ตัวอย่างเช่น
#foo { width: 10em; padding: 2em; border: 1em; }
จะ10em
กว้าง
ในทางตรงกันข้ามทุกมาตรฐานกลัวเบราว์เซอร์เริ่มต้นไปยังเนื้อหา "กล่อง"รูปแบบกล่อง ในรุ่นนี้ความกว้างขององค์ประกอบไม่รวมการขยายหรือขอบ ตัวอย่างเช่น:
#foo { width: 10em; padding: 2em; border: 1em; }
จะ16em
กว้างจริง: 10em
+ 2em
padding สำหรับแต่ละด้าน + 1em
ชายแดนสำหรับแต่ละขอบ
ถ้าคุณใช้รุ่นที่ทันสมัยของ IE กับมาร์กอัปที่ถูกต้องเป็นประเภทเอกสารที่ดีและส่วนหัวที่เหมาะสมก็จะเป็นไปตามมาตรฐาน มิฉะนั้นคุณสามารถบังคับให้เบราว์เซอร์ที่ได้มาตรฐานที่ทันสมัยใช้ "กล่องเส้นขอบ" ผ่าน:
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
การประกาศครั้งแรกนั้นจำเป็นสำหรับ Opera ส่วนที่สองคือสำหรับ Firefox ส่วนที่สามใช้สำหรับ Webkit และ Chrome
นี่คือการทดสอบง่ายๆที่ฉันทำเมื่อหลายปีมาแล้วเพื่อทดสอบว่ากล่องขนาดใดที่เบราว์เซอร์ของคุณรองรับ: http://phrogz.net/CSS/boxsizing.html
โปรดทราบว่า Webkit (Safari และ Chrome) ไม่สนับสนุนpadding-box
รูปแบบกล่องผ่านการประกาศใด ๆ
กฎง่าย ๆ คือพยายามหลีกเลี่ยงการใช้คุณสมบัติการใส่ / ระยะขอบและความกว้างสำหรับองค์ประกอบเดียวกัน ie ใช้สิ่งที่คล้ายกับสิ่งนี้
<div class="width-div">
<div class="padding-div">
...........
...........
</div>
</div>
ฉันชนกับคำถามนี้และแม้ว่าจะเป็นสองสามปีที่ผ่านมาฉันคิดว่าฉันอาจเพิ่มในกรณีที่ทุกคนกระแทกเข้ากับหัวข้อนี้
ตอนนี้ CSS3 มีคุณสมบัติการปรับขนาดกล่อง ถ้าคุณตั้งค่าพูด
.bigbox {
box-sizing: border-box;
width: 1000px;
border: 5px solid #333;
padding: 10px;
}
คลาสของคุณจะกว้าง 1,000px แทนที่จะเป็น 1030px แน่นอนว่านี่มีประโยชน์อย่างเหลือเชื่อสำหรับทุกคนที่ใช้เส้นขอบพิกเซลกับตัวหารเหลวเพราะมันแก้ปัญหาที่ไม่ละลายน้ำได้
ยิ่งไปกว่านั้นการปรับขนาดกล่องรองรับโดยเบราว์เซอร์หลักทั้งหมดยกเว้น IE7 และด้านล่าง หากต้องการรวมรายการทั้งหมดภายในมิติความกว้างหรือความสูงให้ตั้งขนาดกล่องเป็นกล่องขอบ หากต้องการรวมรายการอื่น ๆ เข้ากับความกว้างและ / หรือความสูงซึ่งเป็นค่าเริ่มต้นคุณสามารถตั้งค่าขนาดกล่องเป็น "กล่องเนื้อหา"
ฉันไม่แน่ใจเกี่ยวกับสถานะปัจจุบันของไวยากรณ์เบราว์เซอร์ แต่ฉันยังคงมีคำนำหน้า -moz และ -webkit:
.bigbox{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
คุณมีการประกาศ doctype หรือไม่? เมื่อฉันเริ่มเขียนโค้ด html ฉันพบปัญหานี้และเป็นเพราะไม่มีการประกาศประเภทเอกสาร สิ่งที่ฉันชอบคือ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...
</html>
สำหรับผู้ที่ยังคงมีปัญหาjQueryได้จัดเตรียมสองคุณสมบัติouterWidth ()
และinnerWitdh ()
เพื่อทราบความกว้างของวัตถุที่มีหรือไม่มีเส้นขอบ ...