설문 작업을 하면서 설문에 참여한 고객의 응답 현황을 수평 막대 그래프로 구현하는 작업이 있었다.

하기처럼 css와 javascript만으로 쉽게 구현이 가능하다.

 

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>

<style type="text/css">
ul, li, p { margin: 0; padding: 0; }
.graph  { width: 90%; list-style: none; }
.graph li   { position: relative; padding: 1px 0; white-space:nowrap; }
.graph li span  { display: inline-block; position: relative; height: 20px; line-height: 20px; background: #eee; }
.graph li em    { position: absolute; top: 0; right: -45px; font-family: arial; color: #000; }
</style>

 


 </head>
 <body>

 <ul id="g1" class="graph">
        <li>1 : <span style="width: 10%"><em>10%</em></span></li>
        <li>2 : <span style="width: 20%"><em>20%</em></span></li>
        <li>3 : <span style="width: 30%"><em>30%</em></span></li>
        <li>4 : <span style="width: 40%"><em>40%</em></span></li>
        <li>5 : <span style="width: 100%"><em>100%</em></span></li>
    </ul>

    <hr />

    <ul id="g2" class="graph">
        <li><span style="width: 50%"><em>50%</em></span></li>
        <li><span style="width: 5%"><em>5%</em></span></li>
        <li><span style="width: 60%"><em>60%</em></span></li>
        <li><span style="width: 70%"><em>70%</em></span></li>
        <li><span style="width: 99%"><em>99%</em></span></li>
    </ul>


 </body>
</html>

<script type="text/javascript">
drawGraph(document.getElementById("g1"));
drawGraph(document.getElementById("g2"));

function drawGraph(obj) {
    this.gages = obj.getElementsByTagName("span");
    this.values = obj.getElementsByTagName("em");

    for(var i = 0; i < this.gages.length; i ++) {
        (function(idx) {
            var current_value = 0;
            var gage_object = this.gages[idx];
            var gage_value = this.values[idx];
            var gage_width = parseInt(gage_object.style.width);
            var timer = null;

            timer = setInterval(function() {
                if(current_value < gage_width) {
                    current_value += Math.ceil((gage_width - current_value) / 15);
                    gage_object.style.width = current_value + "%";
                    gage_value.innerHTML = current_value + "%";
                } else {
                    clearInterval(timer);
                }
            }, 10);
        })(i);
    }
}
</script>

 

인터넷 검색을 통해서 찾은 결과물인데 출처를 적으려고 하려니 어디서 찾은지 잊어버렸다...ㅠ

만드신분에게 박수와 감사를~~~^^

'IT > HTML' 카테고리의 다른 글

마우스 오버 풍선 도움말  (0) 2015.05.22
막대 그래프  (0) 2015.05.22

+ Recent posts

 

설문 작업을 하면서 설문에 참여한 고객의 응답 현황을 수평 막대 그래프로 구현하는 작업이 있었다.

하기처럼 css와 javascript만으로 쉽게 구현이 가능하다.

 

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>

<style type="text/css">
ul, li, p { margin: 0; padding: 0; }
.graph  { width: 90%; list-style: none; }
.graph li   { position: relative; padding: 1px 0; white-space:nowrap; }
.graph li span  { display: inline-block; position: relative; height: 20px; line-height: 20px; background: #eee; }
.graph li em    { position: absolute; top: 0; right: -45px; font-family: arial; color: #000; }
</style>

 


 </head>
 <body>

 <ul id="g1" class="graph">
        <li>1 : <span style="width: 10%"><em>10%</em></span></li>
        <li>2 : <span style="width: 20%"><em>20%</em></span></li>
        <li>3 : <span style="width: 30%"><em>30%</em></span></li>
        <li>4 : <span style="width: 40%"><em>40%</em></span></li>
        <li>5 : <span style="width: 100%"><em>100%</em></span></li>
    </ul>

    <hr />

    <ul id="g2" class="graph">
        <li><span style="width: 50%"><em>50%</em></span></li>
        <li><span style="width: 5%"><em>5%</em></span></li>
        <li><span style="width: 60%"><em>60%</em></span></li>
        <li><span style="width: 70%"><em>70%</em></span></li>
        <li><span style="width: 99%"><em>99%</em></span></li>
    </ul>


 </body>
</html>

<script type="text/javascript">
drawGraph(document.getElementById("g1"));
drawGraph(document.getElementById("g2"));

function drawGraph(obj) {
    this.gages = obj.getElementsByTagName("span");
    this.values = obj.getElementsByTagName("em");

    for(var i = 0; i < this.gages.length; i ++) {
        (function(idx) {
            var current_value = 0;
            var gage_object = this.gages[idx];
            var gage_value = this.values[idx];
            var gage_width = parseInt(gage_object.style.width);
            var timer = null;

            timer = setInterval(function() {
                if(current_value < gage_width) {
                    current_value += Math.ceil((gage_width - current_value) / 15);
                    gage_object.style.width = current_value + "%";
                    gage_value.innerHTML = current_value + "%";
                } else {
                    clearInterval(timer);
                }
            }, 10);
        })(i);
    }
}
</script>

 

인터넷 검색을 통해서 찾은 결과물인데 출처를 적으려고 하려니 어디서 찾은지 잊어버렸다...ㅠ

만드신분에게 박수와 감사를~~~^^

'IT > HTML' 카테고리의 다른 글

마우스 오버 풍선 도움말  (0) 2015.05.22
막대 그래프  (0) 2015.05.22

+ Recent posts