Ignacio Alorre
Ignacio Alorre

Reputation: 7605

HTML vertical bar of two different colors

I want to make in HTML some statistic bar charts, to represent in the same bar two different values using two different colours, for example: from an exam of 10 questions, 6 question were correctly answered and 4 wrong. In the bar should appear the 60% green and the other 40% red.

I have been thinking in display the red one first, and the green one over it, so it covers the the lower part, something like this:

Style

.bar1{
    width:40px;
    background-color:#A55541;
    position:left;
}
.bar2{
    width:40px;
    background-color:#CA804F;
    position:left;
}

HTML

<div style="height:<?=$max ?>px; margin-top:10px;" class="bar1"</div>
<div style="height:<?=$max-($mistakes*$scale) ?>px; margin-top:10px;" class="bar2"</div>    

But it doesn't work. Does anyone know how to solve it?? I have been looking for a similar question on here but I couldn't find it.

Upvotes: 0

Views: 1370

Answers (3)

Bineesh
Bineesh

Reputation: 326

To make this code work properly, Make another class like:

.container {
       width : 40px;
       height: 100px;
       position: relative
 }

And make bar1 position relative and bar2 position absolute, bottom: 0px and z-index: 100. Now add your two divs inside the container class and set bar2 'top' instead of height in php.

Upvotes: 1

lostphilosopher
lostphilosopher

Reputation: 4511

Does this match what you're looking for?

<?php
$max = 100;
$mistakes = 40;
$scale = 1;
?>
<html>
<style>
.bar1{
    width:40px;
    background-color:green;
    float:left;
        z-index:1;
        position: absolute;
}
.bar2{
    width:40px;
    background-color:red;
    float:left;
    z-index:2;
        position: absolute;
}
</style>
<div style="height:<?php echo $max ?>px;" class="bar1"></div>
<div style="height:<?php echo $max -($mistakes*$scale) ?>px;" class="bar2"></div>
</html>

I added an echo and got rid of the margin-top because it messes up the layout I think you're going for.

Upvotes: 0

Tiago
Tiago

Reputation: 383

You could try to do this:

PHP

<?php
$max = 300;
$mistakes = 100;
$scale = 1;
?>

HTML

<div style="height:<?=$max ?>px;" class="bar1"></div>
<div style="height:<?=$max-(mistakes*scale) ?>px;" class="bar2"></div>  

CSS

.bar1{
    width:40px;
    background-color:red;
    position: absolute;
}
.bar2{
    width:40px;
    background-color:green;
    position: fixed;
}

http://jsfiddle.net/BDNXS/

Upvotes: 1

Related Questions