2013-08-07 14 views
9

Trong ví dụ đơn giản này, tôi có 4 vòng tròn, mỗi vòng có chiều rộng đường viền khác nhau và tôi cố gắng duy trì chiều cao đường bằng nhau để giữ chúng theo chiều ngang.Chiều cao đường thẳng với chiều rộng đường viền khác nhau (border-box)

Tuy nhiên độ rộng biên giới dường như ảnh hưởng đến chiều cao dòng (mặc dù là về mặt kỹ thuật ngoài vòng cấm địa?)

Liệu có cách nào để giải quyết này mà không tự điều chỉnh mỗi line-height?

width: 50px; 
height: 50px; 
border-radius: 50px; 
border: 1px solid #1daeec; 
line-height: 50px; 

Ví dụ: http://jsfiddle.net/vcJ3G/

+1

đẹp câu hỏi, tôi nghĩ chúng ta nên sử dụng jquery để làm, bởi vì ngay cả đặt như% giá trị, chúng tôi luôn có một bù đắp, sẽ có thể tránh được biên giới và tôi thấy rằng jQuery để làm điều đó http://jsfiddle.net/vcJ3G/1/ hoặc thêm lớp để thay đổi chiều cao dòng – artSx

+2

Khi bạn đặt 'hộp-sizing: border-box' t ông biên giới không còn kỹ thuật bên ngoài hộp. Sau đó nó được bao gồm bên trong chiều rộng được xác định cho hộp. Xem https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing –

+0

Tất cả điều này có thể tránh được nếu 'box-shadow' được sử dụng thay thế: D –

Trả lời

3

Bạn có thể loại bỏ các line-height, sử dụng display:table-cell thay vào đó, và thêm vertical-align:middle; đến lớp stat của bạn.

jsFiddle example

.stat { 
    display: table-cell; 
    width: 50px; 
    height: 50px; 
    border-radius: 50px; 
    border: 1px solid #1daeec; 
    text-align: center; 
    margin: 10px; 
    font-size: 16px; 
    color: #1daeec; 
    text-transform: uppercase; 
    vertical-align:middle; 
} 
+1

Tôi đã học được điều gì đó ngày hôm nay, cảm ơn bạn! – artSx

+0

Rất cảm ơn bạn, tôi có xu hướng tránh các ô bảng vì IE7 nhưng tôi có thể chọn bỏ qua điều đó cho dự án này. – Titan

1

css của bạn hoạt động tốt tất cả các bạn phải làm là loại bỏ một số từ phần đầu

* { 
    margin: 0px; 
    padding: 0px; 

} 

http://jsfiddle.net/techsin/vcJ3G/15/

+0

Tôi đã không đề cập đến rằng tôi đã giữ cùng một chiều cao trên tất cả các vòng tròn do đó việc sử dụng các hộp biên giới. Bạn là chính xác mà không có lời giải thích mặc dù cảm ơn bạn. – Titan

0

đi qua này và nghĩ rằng bản thân mình thế nào là nó có thể làm điều đó mà không cần sử dụng ô bảng, giải pháp của tôi có lẽ không phải là tốt nhất, nhưng tôi chỉ quyết định để chia sẻ nó. http://codepen.io/svdovichenko/pen/rObzqM?editors=110

thêm <span>1</span> (có thể sử dụng lớp bên trong thư rác không sử dụng trong ví dụ này)

.stat{ 
    position: relative; 
} 

span { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    margin-right: -50%; 
    transform: translate(-50%, -50%); 
}