当前位置: 首页 > 面试题库 >

为什么在使用highcharts时,引导程序选项卡显示宽度不正确的选项卡窗格div?

郎魁
2023-03-14
问题内容

因此,我正在使用Twitter的Bootstrap创建一个带有选项卡式内容的页面,但是起始活动div的内容始终与其他选项卡的内容不同。例如,我在不同的选项卡中使用highcharts.js插入图表,但活动的一个始终正确显示,而其他的宽度不正确。

查看以下示例:

        <div class = "row-fluid">
        <div class = "span9">
            <div class = "row-fluid">
                <h3>Test</h3>

                    <ul class="nav nav-tabs">
                        <li class = "active">
                            <a data-toggle = "tab" href = "#one">One</a>
                        </li>
                        <li><a data-toggle = "tab" href = "#two">Two</a></li>
                        <li><a data-toggle = "tab" href = "#three">Three</a></li>
                    </ul>

                    <div class="tab-content">

                        <div class="tab-pane active" id="one" >
                            <h4>One</h4>
                            <div id = "container1"></div>
                            <script type = "text/javascript">
                                $(function () {
                                    $('#container1').highcharts({
                                        chart: {
                                        },
                                        xAxis: {
                                            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
                                        },
                                        series: [{
                                            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
                                        }]
                                    });
                                });
                            </script>
                        </div>

                        <div class="tab-pane" id="two" >
                        <h4>Two</h4>
                        <div id = "container2"></div>
                        <script type = "text/javascript">
                            $(function () {
                                $('#container2').highcharts({
                                    chart: {
                                    },
                                    xAxis: {
                                        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
                                    },
                                    series: [{
                                        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
                                    }]
                                });
                            });
                            </script>
                        </div>

                        <div class="tab-pane" id="three" >
                        <h4>Three</h4>
                        <div id = "container3"></div>
                        <script type = "text/javascript">
                            $(function () {
                                $('#container3').highcharts({
                                    chart: {
                                    },
                                    xAxis: {
                                        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
                                    },
                                    series: [{
                                        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
                                    }]
                                });
                            });
                            </script>
                        </div>

                    </div> 
            </div>
        </div>
        <div class = "span3">
            <p>Here is the content on my sidebar</p>
        </div>
    </div>

在这种情况下,在页面加载时切换活动选项卡会使该图表对我来说是正确的,但其余部分始终一直延伸到边缘(就我的数据而言,我只想填充跨度的空间9)
div。在这种情况下,我只是使用了虚拟图表,但这是相同的想法。

这是一个JSFiddle:http :
//jsfiddle.net/dw9tn/

我对大家的问题是:

1.)这就是我吗?

2)当选项卡被激活时,到底发生了什么?看着引导CSS,这似乎与display:none和display:块有关,但是在这种情况下,我对它的工作原理没有很好的了解。

3.)这是高图问题还是引导问题?我注意到这种情况发生在非Highchart元素上(例如在侧栏中显示推文),因此我倾向于自举。

4.)有什么解决方案可以使所有内容保持一致?

谢谢你们!


问题答案:

原因

这不是Highcharts问题,至少不是一个问题本身,该问题是由Bootstrap用于display:none隐藏不活动的选项卡的事实引起的:

.tab-content > .tab-pane, .pill-content > .pill-pane {
    display: none;      /* this is the problem */
}

这将导致Highcharts无法获得预期的宽度来初始化图表,因此默认为600px。使用相同方法隐藏内容的其他工具也会发生这种情况。

纯CSS解决方案

无需使用额外的重绘或延迟的初始化来解决该问题,我们可以使用来实现隐藏效果height: 0; overflow-y: hidden,这样,隐藏的选项卡窗格仍然存在并且有效width

/* bootstrap hack: fix content width inside hidden tabs */
.tab-content > .tab-pane:not(.active),
.pill-content > .pill-pane:not(.active) {
    display: block;
    height: 0;
    overflow-y: hidden;
} 
/* bootstrap hack end */

更新 :现在,我们直接通过定位非活动标签页:not(.active),以避免可能产生的副作用。

该解决方案是无缝的,因此您不必担心图表是否在选项卡窗格中。而且它非常有效,因为它首先解决了宽度问题,因此以后无需通过使用javascript进行大小调整/重绘/重排来解决宽度问题。

关于级联顺序的注意事项

由于CSS级联顺序规则,因此需要 在引导CSS 之后 加载此补丁,简而言之, 后一个规则将获胜

演示版

提示:切换到“ 配置文件” 选项卡以查看区别。



 类似资料:
  • 我有一个左向的Tabview。 我想减少选项卡标题的数量,它们太大了。我该怎么做?

  • 我正在建立一个基于JS的选项卡导航,但不知怎么选项卡内容没有正确显示。其思想是只显示活动状态的选项卡内容。 我只想让选项卡内容显示属于该选项卡的内容。 代码如下所示: null null 我找不到错误。非常感谢任何帮助。 预先默许 a

  • 我正在学习本教程中的示例。根据教程,我想在两个选项卡之间拖动选项卡。到目前为止,我设法创建了这段代码,但我需要一些帮助才能完成代码。 来源 将选项卡的内容作为对象插入的正确方法是什么?简单的文本被转移到教程中。我必须如何修改这行< code>content.put(DataFormat。PLAIN_TEXT,tab pane);? 拖动选项卡后插入选项卡的正确方法是什么: 目的地 我想这个转移可以

  • 我正在用JavaFX和RichTextFX库编写一个文本编辑器,当我编写一个选项卡时,它的宽度是8。如何在不使用例如4个空格替换选项卡的情况下更改此选项? 这就是我目前所拥有的: 它将一个选项卡替换为4个空格,但如何使一个选项卡以4个空格的宽度显示? 感谢您的回答!

  • 我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识) 代码如下: 不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任

  • 我的web客户端应用程序正在通过FetchAPI设置HTTP POST请求。 我看到选项飞行前请求是通过调试代理(Charles proxy)发送的,但它们不会显示在Google Chrome Developer Tools\Network选项卡中。 我没有在“网络”选项卡上设置任何过滤器。我记得选项请求在那里是可见的,但不再是了。我怎么把它们带回来?