ทำไมการdisplay:block;width:auto;
ป้อนข้อความของฉันไม่ทำงานเหมือน div และเติมความกว้างของคอนเทนเนอร์
ฉันรู้สึกว่า div เป็นเพียงองค์ประกอบของบล็อกที่มีความกว้างอัตโนมัติ ในรหัสต่อไปนี้ div และอินพุทไม่ควรมีขนาดเท่ากัน?
ฉันจะรับอินพุตเพื่อเติมความกว้างได้อย่างไร ความกว้าง 100% จะไม่ทำงานเนื่องจากอินพุตมีช่องว่างภายในและเส้นขอบ (ทำให้เกิดความกว้างสุดท้ายของ 1 พิกเซล + 5 พิกเซล + 100% + 5 พิกเซล + 1 พิกเซล) ความกว้างคงที่ไม่ใช่ตัวเลือกและฉันกำลังมองหาบางอย่างที่ยืดหยุ่นกว่า
ฉันต้องการคำตอบโดยตรงกับวิธีแก้ปัญหาโดยตรง ดูเหมือนว่าจะเป็นเรื่องแปลก ๆ และเข้าใจว่ามันอาจจะมีประโยชน์ในภายหลัง
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
ฉันควรชี้ให้เห็นว่าฉันสามารถทำเช่นนี้กับการแก้ปัญหาเสื้อคลุม นอกเหนือจากการคาดคั้นกับความหมายของหน้าและความสัมพันธ์ตัวเลือก CSS ฉันพยายามที่จะเข้าใจลักษณะของปัญหาและไม่ว่าจะสามารถเอาชนะได้โดยการเปลี่ยนลักษณะของการป้อนข้อมูลตัวเอง
โอเคนี่มันแปลกจริง ๆ ! ฉันได้พบว่าการแก้ปัญหาก็คือการเพิ่มการป้อนข้อมูลที่มีmax-width:100%
width:100%;padding:5px;
อย่างไรก็ตามสิ่งนี้ทำให้เกิดคำถามมากขึ้น (ซึ่งฉันจะถามในคำถามที่แยกต่างหาก) แต่ดูเหมือนว่าความกว้างจะใช้รูปแบบกล่อง CSS ปกติและความกว้างสูงสุดใช้โมเดลกล่องชายแดนของ Internet Explorer ช่างแปลกเหลือเกิน
ตกลงว่าอันสุดท้ายดูเหมือนจะเป็นข้อบกพร่องใน Firefox 3 Internet Explorer 8 และ Safari 4 จำกัด ความกว้างสูงสุดไว้ที่ 100% + ช่องว่างภายใน + ขอบซึ่งเป็นสิ่งที่ข้อมูลจำเพาะบอก ในที่สุด Internet Explorer ก็มีบางอย่างที่ถูกต้อง
โอ้พระเจ้านี่ช่างยอดเยี่ยม! ในกระบวนการของการเล่นกับสิ่งนี้และด้วยความช่วยเหลือจากปรมาจารย์ผู้น่ายกย่องDean EdwardsและErik Arvidssonฉันได้รวมกันสามโซลูชันแยกกันเพื่อสร้าง cross-browser ความกว้าง 100% ที่แท้จริงด้วยองค์ประกอบที่มีช่องว่างภายในและขอบ ดูคำตอบด้านล่าง วิธีนี้ไม่ต้องใช้มาร์กอัป HTML พิเศษใด ๆ เพียงแค่คลาส (หรือตัวเลือก) และพฤติกรรมที่เป็นตัวเลือกสำหรับ Internet Explorer รุ่นเก่า
input
องค์ประกอบที่เห็นได้ชัดว่าไม่สอดคล้องกับข้อกำหนดของ CSS 2.1 ในขณะที่คำถามที่คุณเชื่อมโยงเพื่อถามถึงวิธีการป้องกันกล่องที่ล้นซึ่งเกิดขึ้นอย่างสมบูรณ์ภายในขอบเขตของข้อกำหนดเฉพาะของ CSS 2.1 ทั้งคำถามและวิธีแก้ปัญหาของพวกเขาทับซ้อนกัน แต่การเรียกซ้ำซ้อนกันนั้นผิด