2012-03-14 36 views
9

Hãy xem xét các mã HTML sau đây:nút với display: block không kéo dài

<!DOCTYPE html> 
<html> 
<head> 
    <title>TEST</title> 
    <style> 
     button { 
      display: block; 
      margin: 10px; 
     } 
    </style> 
</head> 
<body> 
    <div style="width: 100px; border: 1px solid black"> 
     <button>hello</button> 
     <button>hi</button> 
    </div> 
</body> 
</html> 

Câu hỏi của tôi là lý do tại sao các nút không kéo dài đến 100% chiều rộng vì display của họ là block. Làm thế nào để đạt được điều này? Tôi không thể đặt kiểu nút thành width: 100% vì chúng sẽ làm tràn khối cha của chúng vì lề.

+0

bạn đã thêm vị trí: tương đối; và sau đó thêm chiều rộng: 100%? –

+1

bản sao có thể có của [đầu vào có hiển thị: khối không phải là một khối, tại sao không?] (Http://stackoverflow.com/questions/1030793/input-with-displayblock-is-not-a-block-why-not) – Qtax

+0

Qtax: 'hộp kích thước: border-box' đã không làm việc cho tôi. Không biết tại sao. –

Trả lời

7

Bạn có thể thêm đệm vào div vùng chứa và xóa lề ngang khỏi các nút. Sau đó, bạn có thể áp dụng rộng 100% đối với họ:

<!DOCTYPE> 
<html> 
<head> 
    <title>TEST</title> 
    <style> 
     button { 
      display: block; 
      width:100%; 
      margin: 10px 0; 
     } 
    </style> 
</head> 
<body> 
    <div style="width: 100px; border: 1px solid black; padding:0 10px;"> 
     <button>hello</button> 
     <button>hi</button> 
    </div> 
</body> 
</html>​ 

Demo: http://jsfiddle.net/xwt9T/1/

+0

Đó là một loại "hack" đối với tôi, nhưng nó hoạt động. Cảm ơn! –

+0

Nhưng, các yếu tố khối không nhất thiết phải rộng 100% ... – Greg

+0

Tôi sẽ đề xuất sử dụng kích thước hộp: hộp biên giới, để giữ nút đệm bên trong 100% đó – FrancescoMM

0

Hãy thử với điều này,

<div style="width: 100px; border: 1px solid black"> 
    <button style="width:100%; float: left;margin-left:0px;">hello</button> 
    <button>hi</button> 
</div> 
1

flex-grow: 1 sẽ tạo ra hành vi dự kiến.

Các vấn đề liên quan