【问题标题】:Having trouble styling a tooltip Header to 'pull-left'将工具提示标题设置为“向左拉”时遇到问题
【发布时间】:2016-06-29 16:23:53
【问题描述】:

对于以下饼图,我有一个工具提示,它以表格格式构建并显示在悬停事件上。

var app = angular.module('plunker', ['nvd3']);

app.controller('MainCtrl', function($scope) {
  $scope.options = {
        chart: {
            type: 'pieChart',
            height: 500,
            x: function(d){return d.key;},
            y: function(d){return d.y;},
            noData: '0 incidents',
            color:['#CE1B1F', '#FFC455', '#00A6CD'],
            showLabels: false,
            duration: 500,
            labelThreshold: 0.01,
            labelSunbeamLayout: true,
            legend: {
                margin: {
                    top: 5,
                    right: 35,
                    bottom: 5,
                    left: 0
                }
            },
            tooltip: {
            contentGenerator: function (e) {
              var series = e.series[0];
              if (series.value === null) return;

              var header = 
                "<thead>" + 
                  "<tr>" +
                    "<td class='legend-color-guide'><div style='background-color: " + series.color + ";'></div></td>" +
                    "<td class='key'><strong>" + series.key + "</strong></td>" +
                  "</tr>" + 
                "</thead>";

              var rows = 
                "<tr>" +
                  "<td class='key'>" + series.key + '- #3: ' + "</td>" +
                  "<td class='x-value'>" + e.data.MyAttribute1 + "</td>" + 
                "</tr>" +
                "<tr>" +
                  "<td class='key'>" + series.key + '- #5: ' + "</td>" +
                  "<td class='x-value'>" + e.data.MyAttribute2 + "</td>" + 
                "</tr>";

              return "<table>" +
                  header +
                  "<tbody>" + 
                    rows + 
                  "</tbody>" +
                "</table>";
            } 
          }                

        }
    };

    $scope.data = [
        {
            key: "CAT I",
            y: 2,
            MyAttribute1:"DLA Avn ... CAT I",
            MyAttribute2:"DLA Energy ... CAT I"
        },
        {
            key: "CAT II",
            y: 1,
            MyAttribute1:"DLA Avn ... CAT II",
            MyAttribute2:"DLA Energy ... CAT II"
        },
        {
            key: "CAT III",
            y: 3,
            MyAttribute1:"DLA Avn ... CAT III",
            MyAttribute2:"DLA Energy ... CAT III"
        },
    ];
});

我无法使工具提示标题 (series.key) 直接与 series.color 属性的右侧对齐。现在它显示在中心。我尝试注入一个拉左和一个浮动左,但它没有改变任何东西。

这是一个向您展示该工具提示的 plunkr: http://plnkr.co/edit/2SFzP96OIRyGhtM3j5Cp?p=preview

【问题讨论】:

  • 工具提示标题位于行(tr)的第二列(td)并且它已经左对齐这就是它不移动标题位置的原因。

标签: javascript html css d3.js


【解决方案1】:

工具提示是由一个表格组成的,所以发生的事情是这样的:

----------------------
Color        | CAT 1
----------------------
CAT III- #3: |         
----------------------

尝试将&lt;strong&gt;" + series.key + "&lt;/strong&gt; 移动到 div 之后的表格行中,如下所示:

<td colspan="2" class='legend-color-guide'><div style='background-color: " + series.color + ";'></div><strong>" + series.key + "</strong></td>

然后删除&lt;td class='key'&gt;&lt;strong&gt;" + series.key + "&lt;/strong&gt;&lt;/td&gt;

这将允许您按照自己的方式设置样式。重要的部分是 colspan="2"

供参考: http://www.w3schools.com/tags/att_td_colspan.asp

              var header = 
                "<thead>" + 
                  "<tr>" +
                    "<td colspan='2' class='legend-color-guide'><div style='background-color: " + series.color + ";'><strong>" + series.key + "</strong></div></td>" +
                  "</tr>" + 
                "</thead>";

【讨论】:

  • 你能在 plunkr 中展示这个吗?我无法复制这个
  • 我尝试插入该 sn-p 但工具提示不会显示。当您在 plunkr 中尝试时,它对您有用吗?
  • 试试这个。由于已经引用了tring,我忘记更改colspan 的引号。本质上将 colspan="2" 更改为 colspan='2' 我更新了最后一个代码片段。
  • 那好一点,但现在它与 series.color 重叠。查看更新的 plunkr:plnkr.co/edit/vtKvxygdFh2WFLJ7vSbX?p=preview
  • 看起来很棒!有什么方法可以在彩色框和 series.key 之间显示一点间距?
猜你喜欢
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2021-06-11
  • 2011-04-10
  • 2013-05-06
相关资源
最近更新 更多