Tại sao display:block;width:auto;
trên đầu vào văn bản của tôi không hoạt động như một div và điền vào chiều rộng vùng chứa?
Tôi đã có ấn tượng rằng một div chỉ đơn giản là một yếu tố khối với chiều rộng tự động. Trong đoạn mã sau không nên div và đầu vào có kích thước giống hệt nhau?
Làm thế nào để tôi có được đầu vào để lấp đầy chiều rộng? Chiều rộng 100% sẽ không hoạt động, vì đầu vào có phần đệm và đường viền (gây ra chiều rộng cuối cùng là 1 pixel + 5 pixel + 100% + 5 pixel + 1 pixel). Độ rộng cố định không phải là một tùy chọn và tôi đang tìm kiếm thứ gì đó linh hoạt hơn.
Tôi muốn một câu trả lời trực tiếp cho một cách giải quyết. Điều này có vẻ giống như một trò chơi CSS và hiểu nó có thể hữu ích sau này.
<!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>
Tôi nên chỉ ra rằng tôi đã có thể làm điều này với cách giải quyết của trình bao bọc. Ngoài vấn đề liên quan đến ngữ nghĩa trang và bộ chọn CSS, tôi đang cố gắng tìm hiểu bản chất của vấn đề và liệu nó có thể được khắc phục hay không bằng cách thay đổi bản chất của chính INPUT.
Ok, đây là SỰ THẬT kỳ lạ! Tôi thấy rằng giải pháp đơn giản là thêmmax-width:100%
vào một đầu vào width:100%;padding:5px;
. Tuy nhiên, điều này đặt ra nhiều câu hỏi hơn (mà tôi sẽ hỏi trong một câu hỏi riêng), nhưng có vẻ như chiều rộng sử dụng mô hình hộp CSS bình thường và chiều rộng tối đa sử dụng mô hình hộp viền Internet Explorer. Làm thế nào rất kỳ quặc.
Ok, cái cuối cùng có vẻ là một lỗi trong Firefox 3. Internet Explorer 8 và Safari 4 giới hạn chiều rộng tối đa đến 100% + phần đệm + viền, đó là những gì thông số kỹ thuật nói. Cuối cùng, Internet Explorer đã có một cái gì đó đúng.
Ôi chúa ơi, điều này thật tuyệt vời! Trong quá trình chơi với điều này, và với nhiều sự giúp đỡ từ các bậc thầy đáng kính là Dean Edwards và Erik Arvidsson , tôi đã xoay sở để ghép ba giải pháp riêng biệt để tạo ra một trình duyệt chéo thực sự 100% trên các phần tử với phần đệm và đường viền tùy ý. Xem câu trả lời dưới đây. Giải pháp này không yêu cầu bất kỳ đánh dấu HTML bổ sung nào, chỉ cần một lớp (hoặc bộ chọn) và một hành vi tùy chọn cho Internet Explorer cũ.
input
yếu tố dường như không tuân theo đặc tả CSS 2.1, trong khi câu hỏi bạn liên kết với hỏi làm thế nào để ngăn chặn các hộp tràn xảy ra hoàn toàn trong giới hạn của thông số CSS 2.1. Cả hai câu hỏi và giải pháp của chúng trùng nhau nhưng gọi chúng là trùng lặp chính xác chỉ đơn giản là sai.