2012-07-15 18 views
7

Lời nói đầu: Tôi đã đọc rất nhiều bài viết về hình ảnh bên trong một div có một không gian lạ xung quanh họ, vvgian Không thể giải thích ở trên NÚT bên trong DIV

Ví dụ # 1: Unwanted padding-bottom of a div
Ví dụ # 2: https://developer.mozilla.org/en/Images,_Tables,_and_Mysterious_Gaps
Ví dụ # 3: cannot eliminate space between 2 horizontal divs inside containing div

Sự cố của chúng có vẻ tương tự nhưng không giống với tôi. Trong tài liệu mẫu này, đường viền, đệm, đường viền, vv được đặt thành 0 .. nhưng cả Opera và Firefox đều tạo một pixel dự phòng ở đầu div. Thứ ba có thể lừa một cách xung quanh không gian này nhưng không ai có vẻ trả lời lý do tại sao nó có ..

Chỉnh sửa: Tôi đã đọc rất nhiều bài viết gần như trả lời câu hỏi này, nhưng tất cả dường như hơi khác với vấn đề thực tế.

Tôi đang thiếu gì? Đây là câu hỏi đầu tiên của tôi vì vậy hãy kiên nhẫn vui lòng :)

<!doctype html> 
<html> 
    <head> 
    <title>Anger</title> 
    <style> 
     *{ 
     cursor: default; 
     margin: 0; 
     outline: 0; 
     border: none; 
     padding: 0; 
     text-decoration: none; 
     } 
     body{ 
     background-color: #87cefa; 
     } 
     div{ 
     background-color: #ffffff; 
     } 
     button{ 
     border-radius: 9px; 
     padding: 1px 6px 2px 6px; 
     font: 14px monospace; 
     color: #ffffff; 
     background-color: #1e90ff; 
     } 
    </style> 
    <head> 
    <body> 
    <div> 
     <button>Sample Button</button> 
    </div> 
    </body> 
<html> 

Có một số CSS3 sẽ làm cho tất cả hoạt động không? Đây là một dự án thử nghiệm, vì vậy CSS3 mới nhất được hoan nghênh.

PS: Tôi chỉ quan tâm đến việc dựng hình Opera, mặc dù Firefox sẽ rất hay để hỗ trợ với cùng một mã tuân thủ tiêu chuẩn .. Cảm ơn!

Trả lời

5

Thay đổi chiều cao dòng trên div thành 0.

div{ 
     background-color: #ffffff; 
     line-height:0; 
    } 

jsFiddle example

+0

Cảm ơn! Điều đó hoạt động, không ai biết nơi nào trong các thông số kỹ thuật (tôi đọc chúng) hành vi này được chỉ định? – Fumbles

+1

Vâng chiều cao dòng có liên quan đến kích thước phông chữ rõ ràng có thể khác nhau trên các hệ điều hành. Bạn có thể đọc thêm tại https://developer.mozilla.org/en/CSS/line-height và thấy rằng chiều cao dòng mặc định là khoảng 1,2. Vì bạn đã không chỉ định bất kỳ quy tắc phông chữ nào trong CSS của mình, chiều cao dòng mặc định sẽ khởi động và đặt lại thành không cố định. – j08691

+1

@Fumbles - phần thông số kỹ thuật CSS 2.1 [10.6] (http://www.w3.org/TR/CSS2/visudet.html#Computing_heights_and_margins) và [10.8] (http://www.w3.org/TR/CSS2 /visudet.html#line-height). Nhưng nó không dễ đọc. – Alohci

3

Đặt vertical-align đầu vào nút. Điều đó sẽ sửa chữa nó.

+0

aha hoạt động quá, là có một số "sửa chữa" mà tôi có thể thêm vào thiết lập lại phong cách của tôi cho tất cả các yếu tố cũng sẽ chữa trị này? Nếu không, sau đó tôi sẽ chọn giữa các câu trả lời làm việc, và chỉ sử dụng nó khi tôi nhận thấy vấn đề này :) – Fumbles

+0

Tôi cho rằng điều này là tốt hơn vì bạn sẽ không mess up line-height của div (thêm một yếu tố inline để div và nó sẽ trông lạ. Tại sao? Đó là dòng chiều cao sẽ là 0. Bạn có thể ghi đè lên mặc dù nhưng nó không cần thiết làm việc, thực sự). Trên bản định kiểu thiết lập lại của tôi, tôi tin rằng tôi có một cái gì đó như nút, đầu vào, textarea {vertical-align: top; /*trong so nhung cai khac*/}. Tôi sẽ phát triển câu trả lời của tôi mặc dù để giải thích lý do tại sao dọc-align công trình hàng đầu, và tại sao bạn cần nó ở nơi đầu tiên. Hãy cho tôi 10 phút. – banzomaikaka

+0

Tuyệt vời, tôi chỉ muốn hành vi kỳ quặc như vậy đã được loại bỏ từ thông số kỹ thuật vì nó dường như không làm tốt lol – Fumbles

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