在Highcharts树形图上的标签文本中添加彩色边框(不是阴影)

时间:2015-08-05 16:21:19

标签: css internet-explorer highcharts treemap text-coloring

我希望我的Highcharts树形图上的标签文字是带有黑色边框的白色,这样它在所有颜色上都是一致且清晰可见的。这可能吗?我使用了textShadow选项,它在Chrome中看起来不错(虽然不是很好)但在Internet Explorer中看起来非常不专业。请看这里的小提琴:

https://jsfiddle.net/k1hohozg/4/

$(function () {
    $('#container').highcharts({
        title:  "",
        series: [{
            type: "treemap",            
            data: [
            {
                name: 'Name One',
                value: 20,
                color: "#FFFF00"
            }, {
                name: 'Name Two',
                value: 20,
                color: '#000099',
            }, {
                name: 'Name Three',
                value: 1,
                color: '#007799',
            }, {
                name: 'Name Four',
                value: 1,
                color: '#FFCC00',
            }
            ],

            levels: [{
                level: 1,
                dataLabels: {
                    enabled: true,
                    align: 'center',
                    style: {
                        fontSize: '20px',
                        color: '#FFFFFF',
                        textShadow: "0 0 3px #000, 0 0 3px #000",
                    }
                },
            }],
        }],
    });
})

我不想使用"对比"选项,因为我需要所有文本看起来相同,因此白色带有黑色边框。在所有标准浏览器中使这种外观更好的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为使用IE不能很好地解释 textShadow 属性是不可能的。但是,您可以在标签上添加背景以使其更加明显:



$(function() {
  $('#container').highcharts({
    title: "",
    series: [{
      type: "treemap",
      data: [{
        name: 'Name One',
        value: 1,
        color: "#FFFF00"
      }, {
        name: 'Name Two',
        value: 1,
        color: '#000099',
      }],
      levels: [{
        level: 1,
        dataLabels: {
          enabled: true,
          align: 'center',
          borderRadius: 5,
          backgroundColor: 'rgba(255, 255, 255, 1)',
          style: {
            fontSize: '20px',
            color: '#000',
          }
        },
      }],
    }],
  });
})

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/treemap.js"></script>

<div id="container"></div>
&#13;
&#13;
&#13;

您可以从文档中激发自己的灵感:

http://api.highcharts.com/highcharts#plotOptions.area.dataLabels.backgroundColor

答案 1 :(得分:1)

没有默认的Highcharts方法来处理IE渲染效果不佳的文本阴影。可以将useHTML设置为true并添加多个将模仿阴影的标签。 (在Chrome,Firefox和IE11中看起来很好)。

示例:http://jsfiddle.net/yzLavxc9/2/

....
dataLabels: {
                    useHTML: true,
                    formatter: function () {
                        return '<div class=dataLabelContainer><div style="position: absolute; top: -1px; left: 1px; color: #000;">'+this.key+'</div><div style="position: absolute; top: 1px; left: 1px; color: #000;">'+this.key+'</div><div style="position: absolute; top: 1px; left: -1px; color: #000;">'+this.key+'</div><div style="position: absolute; top: -1px; left: -1px; color: #000;">'+this.key+'</div><div style="position: absolute; color: #fff;">'+this.key+'</div></div><div style="color: #fff;">'+this.key+'</div></div>';
                    },
                    enabled: true,
                    align: 'center',
                    style: {
                        fontSize: '20px',
....