css - 词缀破坏了 bootstrap 的嵌套网格

标签 css twitter-bootstrap twitter-bootstrap-3

我正在尝试在右侧创建一个粘性侧边栏。

听起来在 bootstrap 中实现此行为的正确方法是使用 affix 类。我正在从事的元素正在使用 bootstrap 3。

有问题的侧边栏将驻留在 Bootstrap 中 tabbed layout . 应该显示粘性侧边栏的选项卡分为 col-8 : col-4 网格。侧边栏应位于 col-4 列内。

如果我不分配 affix 类,布局看起来不错:bootply

但是,如果我分配 affix 类,侧边栏的大小会缩小:bootply-layout-broken

我要改变的是:

<div class="panel panel-default">

<div class="affix panel panel-default">

如有任何帮助或指点,我们将不胜感激 - 非常感谢您:-)

我不确定如何在 bootply 上格式化代码 - 抱歉弄乱了代码缩进

最佳答案

这是一种方法:

由于 .affix.panel div 是 col-xs-4 的一部分(暗示其父级的 33.33333% 宽度)是 .container div 的一部分,如果您看到,它在 bootstrap.css 中具有响应宽度(基于屏幕宽度)。

因此,考虑到这一点,您必须在上下文(词缀面板)中为 div 设置一个 width。这是我的做法:

$(function() {
  $('div#someID .affix').width(0.33333333 * $('div.container').width());
});

window.onresize = function () {
  $('div#someID .affix').width(0.33333333 * $('div.container').width());
};

以上代码在文档准备就绪和每次窗口调整大小事件时设置宽度。希望这是有道理的。使用这个的代码片段:

$(function() {
	$('div#someID .affix').width(0.33333333 * $('div.container').width());
});

window.onresize = function () {
	$('div#someID .affix').width(0.33333333 * $('div.container').width());
};
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>



<div class="container">
    <div role="tabpanel" class="tab-pane active" id="someUniqueId">
                    <div id="someUniqueId">

<div class="row">
    <div class="col-xs-8">
        <div id="someUniqueId">
<div class="row">
    <div class="col-xs-12">
        <div class="panel panel-default">
            <div class="panel-heading">
                <span class="panel-title">Left Side</span>
            </div>
            <div class="panel-body">
                <div>
                    <table class="table table-bordered">
                        <tbody>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                    <tr class="warning">
                                        <td>
                                            Test Data
                                        </td>
                                    </tr>
                                
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div></div>
    </div>
    <div class="col-xs-4">
        <div id="someID">
          <div class="row">
    <div class="col-xs-12">
        <div class="affix panel panel-default">
            <div class="panel-heading">
                <div class="row">
                    <div class="col-xs-12">
                        <span class="panel-title">Right Side</span>
                    </div>
                </div>
            </div>
            <div class="panel-body">
                <div class="table-responsive">
                    <table class="table table-bordered">
                        <tbody>

                                <tr>
                                    <td class="col-xs-12">
                                        <div class="row">
                                            <div class="col-xs-12">
                                                test
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div></div>
    </div>
</div>
      </div>
                </div>
</div>
<!--/.fluid-container-->

尝试调整浏览器的大小,您会看到宽度的差异(检查元素的值)。希望这会有所帮助。

关于css - 词缀破坏了 bootstrap 的嵌套网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51640158/

相关文章:

html - 单击后链接颜色保持蓝色,直到单击视口(viewport)上的其他地方

javascript - Flash 对象在重新设计其容器样式时重新启动或消失

javascript - 如何根据元素的高度更改元素的上边距?

html - Bootstrap 3 复选框标签

html - 使用 CSS 将多个彼此相邻的对象居中

css - 垂直居中跨度( Bootstrap 标签)与其他元素一起

javascript - Bootstrap 按钮组可动态更改文本、HREF 和图标 - JQuery

javascript - float 图像弄乱了 Bootstrap Scrollspy

css - Bootstrap 3 容器向左移动

css - 设置响应式背景图片