使用CSS的条形图,如何从下到上填充,而不是从上到下?

时间:2012-01-25 19:26:52

标签: html css bar-chart

我有一个使用html和css的条形图,我使用高度来显示填充条的数量。现在它可以工作,但它的工作方式与我想要的相反。当高度:0%时,条形填充100%。我尝试将CS​​S更改为“bottom”而不是“top”但是没有做任何事情。如何改变这一点,“身高:100%”会使其100%填充?

HTML:

        <div class="bars">
            <div><span style="height:0%;"></span></div>
            <div><span style="height:10%;"></span></div>
            <div><span style="height:20%;"></span></div>
            <div><span style="height:30%;"></span></div>
            <div><span style="height:40%;"></span></div>
            <div><span style="height:50%;"></span></div>
            <div><span style="height:60%;"></span></div>
            <div><span style="height:70%;"></span></div>
            <div><span style="height:80%;"></span></div>
            <div><span style="height:90%;"></span></div>
            <div><span style="height:100%;"></span></div>
            <div><span style="height:100%;"></span></div>
            <div><span style="height:90%;"></span></div>
            <div><span style="height:80%;"></span></div>
            <div><span style="height:70%;"></span></div>
            <div><span style="height:60%;"></span></div>
            <div><span style="height:50%;"></span></div>
            <div><span style="height:40%;"></span></div>
            <div><span style="height:30%;"></span></div>
            <div><span style="height:20%;"></span></div>
            <div><span style="height:10%;"></span></div>
            <div><span style="height:0%;"></span></div>
        </div>

CSS:

.bars{
    height: 48px;
    display: block;
    overflow: hidden;
    margin: 0 3px;
}

.bars div{
    background: rgb(12,88,160); /* Old browsers */
    background: -moz-linear-gradient(top,  rgba(12,88,160,1) 0%, rgba(10,52,91,1) 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(12,88,160,1)), color-stop(100%,rgba(10,52,91,1))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* IE10+ */
    background: linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0c58a0', endColorstr='#0a345b',GradientType=0 ); /* IE6-9 */
    float: left;
    height: 100%;
    width: 8px;
    margin-right: 2px;
}

.bars div span {
    background: #233243;
    height: 0%;
    width: 100%;
    display: block;
    position: relative;
    top: 0;
}

2 个答案:

答案 0 :(得分:1)

只需给.bars div class“position:absolute;”并将.bars div span CSS更改为“position:relative; bottom:0px;”。

示例here

<div class="bars">
        <div><span style="height:0%;"></span></div>
        <div><span style="height:10%;"></span></div>
        <div><span style="height:20%;"></span></div>
        <div><span style="height:30%;"></span></div>
        <div><span style="height:40%;"></span></div>
        <div><span style="height:50%;"></span></div>
        <div><span style="height:60%;"></span></div>
        <div><span style="height:70%;"></span></div>
        <div><span style="height:80%;"></span></div>
        <div><span style="height:90%;"></span></div>
        <div><span style="height:100%;"></span></div>
        <div><span style="height:100%;"></span></div>
        <div><span style="height:90%;"></span></div>
        <div><span style="height:80%;"></span></div>
        <div><span style="height:70%;"></span></div>
        <div><span style="height:60%;"></span></div>
        <div><span style="height:50%;"></span></div>
        <div><span style="height:40%;"></span></div>
        <div><span style="height:30%;"></span></div>
        <div><span style="height:20%;"></span></div>
        <div><span style="height:10%;"></span></div>
        <div><span style="height:0%;"></span></div>
    </div>

CSS:

.bars{
height: 100px;
display: block;
overflow: hidden;
margin: 0 3px;
vertical-align:bottom;
}

.bars div{
background: rgb(12,88,160); /* Old browsers */
background: -moz-linear-gradient(top,  rgba(12,88,160,1) 0%, rgba(10,52,91,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(12,88,160,1)), color-stop(100%,rgba(10,52,91,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* IE10+ */
background: linear-gradient(top,  rgba(12,88,160,1) 0%,rgba(10,52,91,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0c58a0', endColorstr='#0a345b',GradientType=0 ); /* IE6-9 */
float: left;
height: 100%;
width: 8px;
margin-right: 2px;
position:relative
}

.bars div span {
background: #233243;
height: 0%;
width: 100%;
display: block;
position: absolute;
bottom: 0;
}

答案 1 :(得分:0)

我能想到的快速修复不是指定跨度中的高度,而是指定负顶部位置

<div class="bars">
        <div><span style="top:-0%;"></span></div>
        <div><span style="top:-10%;"></span></div>
        <div><span style="top:-20%;"></span></div>
        <div><span style="top:-30%;"></span></div>
        <div><span style="top:-40%;"></span></div>
        <div><span style="top:-50%;"></span></div>
        <div><span style="top:-60%;"></span></div>
        <div><span style="top:-70%;"></span></div>
        <div><span style="top:-80%;"></span></div>
        <div><span style="top:-90%;"></span></div>
        <div><span style="top:-100%;"></span></div>
        <div><span style="top:-100%;"></span></div>
        <div><span style="top:-90%;"></span></div>
        <div><span style="top:-80%;"></span></div>
        <div><span style="top:-70%;"></span></div>
        <div><span style="top:-60%;"></span></div>
        <div><span style="top:-50%;"></span></div>
        <div><span style="top:-40%;"></span></div>
        <div><span style="top:-30%;"></span></div>
        <div><span style="top:-20%;"></span></div>
        <div><span style="top:-10%;"></span></div>
        <div><span style="top:-0%;"></span></div>
    </div>

并将所有跨度的css高度设置为100%。

.bars div span {
    background: #233243;
    height: 100%;
    width: 100%;
    display: block;
    position: relative;
    top: 0;
}

结果可见here