2016-02-02 23 views
22

Có thể làm cho màu của đường viền giống như màu nền không? Trong ví dụ của tôi, nó phải có cùng màu nhưng màu đường viền luôn tối hơn màu nền.Đường viền và nền hiển thị dưới dạng các màu khác nhau ngay cả khi các giá trị màu giống nhau trong CSS

.box { 
 
    min-width: 50px; 
 
    background: rgba(0, 0, 0, .2); 
 
    border: 10px solid rgba(0, 0, 0, .2); 
 
}
<div class="box">foo</div>

+8

Đó là cùng một colo r, nó chỉ chồng lên nhau. – Goombah

+0

Hoặc sử dụng một padding thay vì một biên giới. –

Trả lời

36

Bạn nên xác định background-clip: padding-box; (hoặc content-box) bởi vì, theo mặc định, tài sản này được thiết lập để border-box do đó nền cũng bao gồm các diện tích dưới đường biên giới. Hiệu ứng bạn đang có được thực sự là do sự chồng chéo trong suốt (với một màu đồng nhất, bạn sẽ không nhận thấy vấn đề), vì vậy đó là lý do bạn nhìn thấy đường viền tối hơn một chút so với màu nền

.box { 
 
    min-width: 50px; 
 
    background: rgba(0, 0, 0, .2); 
 
    background-clip: padding-box; 
 
    border: 10px solid rgba(0, 0, 0, .2); 
 
}
<div class="box">foo</div>

+0

Cảm ơn, tôi sẽ chấp nhận nó ngay sau khi tôi có thể. – Peter

11

Ngoài fcalderan của câu trả lời, bạn cũng có thể làm cho border-color minh bạch để màu nền của div đơn giản là đi qua:

.box { 
 
    min-width: 50px; 
 
    background: rgba(0, 0, 0, .2); 
 
    border: 10px solid transparent; 
 
}
<div class="box">foo</div>

+0

Không phải là '10px' dư thừa khi trong suốt? – Peter

+1

Không, nếu bạn kiểm tra phần tử bạn sẽ thấy đường viền vẫn còn ở đó, nó chỉ theo nghĩa đen trasnparent :-) –

+0

Vâng, đó là ý của tôi. Nhưng bên phải của bạn, ranh giới vật lý vẫn còn đó. :) – Peter

3

bạn không cần phải viết thêm bất kỳ dòng

.box { 
 
    min-width: 50px; 
 
    background: rgba(0, 0, 0, .2); 
 
    border:10px solid rgba(0, 0, 0, .0); 
 
}
<div class="box">foo</div>

5

Hoặc nó có thể là một quyết định - chỉ cần bắt chước biên giới của bạn bằng hộp bóng

.box { 
    min-width: 50px; 
    background: rgba(0, 0, 0, .2); 
    box-shadow:0 0 0 10px rgba(0, 0, 0, .2) 
} 
Các vấn đề liên quan