Đặt cấp lớp bên trong outerContainer div và tạo kiểu cho khoảng cách bên trong lớp mức tương đối. Trong JavaScript, để tính toán mức độ, chia cho 10 thay vì 100 cho hiệu ứng di chuột tròn hoàn hảo.
Đây là fiddle.
HTML
<div class="outerContainer">
<div class="innerContainer">
<p>Circle 3</p>
<span class="progressBar"></span>
</div>
<div class="level"><span>75</span>
</div>
</div>
CSS
body {
background: blue;
}
#circles {
text-align: center;
margin: 100px 0;
}
li {
display: inline-block;
margin: 0 10px;
position: relative;
}
.outerContainer {
position: relative;
display: block;
height: 96px;
width: 96px;
overflow: hidden;
background: #fff;
border: 2px solid #fff;
-webkit-border-radius: 50px;
border-radius: 50px;
}
.innerContainer {
display: table-cell;
vertical-align: middle;
width: 100%;
margin: 0 auto;
text-align: center;
}
p {
color: #000;
width: 96px;
position: relative;
z-index: 2;
}
.progressBar {
display: block;
width: 100%;
height: 0;
position: absolute;
bottom: 0;
left: 0;
background: #ec6730;
}
.level span{
position:relative;
}
JS
$(function() {
$("#circles li").hover(function(){
var thisElement = $(this);
var level = $(this).find(".level").text();
var elementHeight = $(this).find(".outerContainer").height();
level = (level/10)*elementHeight;
$(thisElement).find(".progressBar").stop().animate({
height: level
}, 300);
}, function() {
var thisElement = $(this);
$(".progressBar").stop().animate({
height: 0
}, 300);
});
});
Nguồn
2013-09-09 05:13:19
hoạt động tốt trên Chrome, nhưng Firefox không tôn trọng bán kính đường viền khi được lấp đầy ... Bạn đang sử dụng trình duyệt nào? – gustavohenke
Đã thử nghiệm cả trong Chrome và Firefox và lỗi có trên cả hai. – halliewuud
Tôi đã sử dụng nó trong Firefox một chút, và có vẻ như 'position: absolute' lấy thanh tiến trình ra khỏi container cho mục đích' overflow: hidden'. – user1618143