【问题标题】:Bootstrap minimum width gridBootstrap 最小宽度网格
【发布时间】:2012-08-03 21:17:56
【问题描述】:

使用 twitter bootstrap 使用我拥有的流动行设置

<div class="row-fluid">
    <div class="span4">...</div>
    <div class="span8">...</div>
</div>

我想要的是给第一个 div(类 span4)一个 275px 的最小宽度,而不会打乱第二个的布局。我试过只添加 min-width: 275px 但这会使第二个 div 移到下一行。有没有办法正确地做到这一点?

【问题讨论】:

    标签: css twitter-bootstrap


    【解决方案1】:
    <div class="row-fluid">
        <div class="span4" style="min-width: 275px">...</div>
        <div class="span8">...</div>
    </div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    

    为我工作。只有当第二个 div 的屏幕空间小于 ~66% 时,它才会将第二个 div 移动到新行。

    http://jsfiddle.net/daniilr/DAw6p/embedded/result/ (get the code)

    【讨论】:

    • 是的,当我将屏幕移动到更小的尺寸时,就是这种情况导致了问题(但仍有足够的空间容纳第二个 div)
    • div 在这个 (jsfiddle.net/daniilr/DAw6p/embedded/result) 示例中,仅当它的屏幕小于 66% 时才会移动到新行。你期待另一种行为吗?
    • @Daniil :我在这里寻找相同的东西。实际上,我希望左边的 275px 和右边的永远不会向下移动。有什么明显的方法可以做到这一点吗?
    • @Ronnie Kilsbo 溢出:auto + 不要在任何地方使用百分比宽度可能会有帮助
    • @Daniil 我在两列上都有overflow: auto,我设置的唯一宽度(除了使用spanX 属性)在min-width: 250px 的左列上。尽管如此,当窗口水平缩小时,第二(右)列会弹出到第一(左)列下方。如果我删除左列上的min-width: 250px,右列将保持在它应该在的位置并随窗口调整大小。无论如何,有没有办法强制保留右列?
    【解决方案2】:

    我也有类似的问题。我尝试用 css 和 bootstrap 解决这个问题。但我找不到解决方案。所以我用 jQuery 解决了这个问题。

    我的情况

    <div id="text" class="col-sm-3 col-sm-offset-2" style="min-width: 320px"></div>
    <div id="image" class="col-sm-7" ></div>
    

    当窗口宽度变窄时,#image 将移动到下一行。因为#text 宽度不能再从 320px 松动了。所以#image不能占据它的宽度,必须移动下一行。

    我是如何解决的

    计算#image宽度每个窗口大小。而 CSS 不适合这项工作。所以我应该使用 jQuery。

    $(window).ready(function() {
        resizeImageWidth();
    });
    
    $(document).ready(function() {
        $(window).resize(function() {
            resizeImageWidth();
        });
    });
    
    var resizeImageWidth = function() {
        var text_minwidth = parseInt($('#text').css('width'));
        var text_marginLeft = parseInt($('#text').css('margin-left'));
        var image_marginLeft = parseInt($('#image').css('margin-left'));
    
        if ($(window).width() > 768) {
            var image_width = $(window).width() - (text_marginLeft + text_minwidth + image_marginLeft + 32);
            $('#image').width(image_width);
            console.log(image_width);
        } else {
            $('#image').width('');
        }
    }
    

    resizeImageWidth 函数将获得#text 宽度、左侧边距、#image 左侧边距等等。当然它不适合你的代码。我应该减去这些东西。请检查我减去了什么。

    渲染后div 仍然可以移动到下一行。也许缺少一些元素。所以我几乎不减去30px。但是这个计算还是有误差的。所以div 可以在window 宽度中移动下一行。所以我应该再减去一个 2px 来防止它。理想情况下,我应该进行更精确的计算。

    在小显示中,不需要这种计算。所以需要if ($(window).width() &gt; 768)。这个函数应该在$(window).ready 中加载。如果在$(document).ready 中加载,则 CSS 属性不完整。所以计算误差更大。

    【讨论】:

    • 方法太长太复杂了,当只有 CSS 就足够了。
    【解决方案3】:

    引导列是弹性项目。您必须决定一列在其他列达到最小宽度时应该缩小。这可以防止元素移动到下一行。

    这是我制作的漂亮代码笔:https://codepen.io/timar/pen/VQWmQq/

    在这种情况下,我们采用另一个跨度,将其缩减为跨度1。给它 flex-grow,我们必须覆盖 bootstraps 的 max-width 属性。

    <div class="row-fluid">
        <div class="span4 style="min-width: 275px;">...</div>
        <div class="span1 style=" flex-grow: 1; max-width:100%; "">...</div>
    </div>
    

    为了安全起见,您可以根据需要减少第二个跨度。即 span6 。将最大宽度调整为正常跨度的数量,我们有 span8 100/12*8 = 66.66%

    【讨论】:

    • Bootstrap 5 中没有“行流体”,使用此自定义类可以轻松限制列的大小:.limited-width {max-width:30rem !important;}
    • 这适用于非常古老的 Bootstrap。我现在瘦了,只是row 在此处查看更新的答案。 stackoverflow.com/a/48755273/8385841
    猜你喜欢
    • 2016-05-12
    • 2011-08-27
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多