2016-10-28 55 views
1

In this plunk我在Angular UI模式窗口中有一個Highcharts圖表。模態窗口具有在類中聲明的高度和寬度,並且圖表應該伸展到寬度/高度,但是它在底部溢出(可能是因爲它有兩個頂部帶有文本的div)。如何使它適合?Highchart溢出模式窗口

注意:圖表必須低於文本div,而不是背景。

HTML:

<script type="text/ng-template" id="myModalContent.html"> 
    <div>some text</div> 
    <div>more text</div> 
    <div id="container" style="min-width: 300px; width:100%; height:100%;"> </div> 
</script> 
<button type="button" class="btn btn-default" ng-click="open()">Open me!</button> 

使用Javascript:

var app = angular.module("app", ['ui.bootstrap']); 
app.controller("ctl", function($scope,$uibModal,$timeout) { 

     var modalInstance; 
     $scope.open = function() { 
     modalInstance = $uibModal.open({ 
       animation: false, 
       windowClass: 'the-modal', 
       templateUrl: 'myModalContent.html' 
      }); 

      $timeout(function(){ 
       plotChart(); 
      }); 

     }; 

     var plotChart = function(){ 

       $('#container').highcharts({ 
      title: { 
       text: 'Monthly Average Temperature', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: 'Source: WorldClimate.com', 
       x: -20 
      }, 
      xAxis: { 
       categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
      }, 
      yAxis: { 
       title: { 
        text: 'Temperature (°C)' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       valueSuffix: '°C' 
      }, 
      legend: { 
       layout: 'vertical', 
       align: 'right', 
       verticalAlign: 'middle', 
       borderWidth: 0 
      }, 
      series: [{ 
       name: 'Tokyo', 
       data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 
      }, { 
       name: 'New York', 
       data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 
      }, { 
       name: 'Berlin', 
       data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
      }, { 
       name: 'London', 
       data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 
      }] 
     }); 

     }; 

    }); 

回答

1

這是正確的,子div元素的存在和用於圖表容器原因溢出父容器設置height:100%;。解決此問題的一個選項是使用CSS3's Flexible Box Layout Module,另一個選項列在this answer中。

使用CSS3's Flexible Box Layout Module

啓用父容器Flexbox Layout(模態對話框)

.the-modal .modal-content{ display: flex; flex-direction: column; } 

,然後設置圖表容器通過flex-grow佔據剩餘空間,在你的情況下更換:

<div id="container" style="min-width: 300px; width:100%; height:100%;"></div> 

<div id="container" style="min-width: 300px; width:100%; flex-grow: 1;"></div> 

更新plunker

+0

圖表是在底邊框的頂部,可以將圖表是DIV內?另外,爲什麼添加'reflow()'函數? – ps0604

+0

當然,請參閱[設計和風格](http://www.highcharts.com/docs/chart-design-and-style/design-and-style)瞭解更多細節(邊距和間距選項) –

+0

@ ps0604,迴流功能在這裏可以省略,我只是忘了刪除它 –