为 Bootstrap 响应式网格系统使用父级 div 大小

问题描述 投票:0回答:2

我需要使用 bootstrap 12 列网格来获取基于父 div 大小的响应式表单。

举个例子,无论屏幕大小如何,内容都需要看到 div A 的宽度,并将引导程序的响应式设计基于该宽度。

我的目标是将我的响应式设计基于模态窗口的大小(在 dhtmlx 中)。如果用户调整模式窗口的大小,则该行应遵循规则(例如 col-xs-12、col-sm-6 等,但基于模式窗口的大小,而不是屏幕)。

这个小提琴显示了一个模态窗口,里面有一些引导表单。我需要表单响应模态表单的大小,而不是屏幕大小。

class="col-xs-12 col-sm-6"
css twitter-bootstrap
2个回答
7
投票

正如@makshh 在评论中提到的,现在似乎不可能做到这一点。我找到的唯一方法是来自@tsdexter的另一个堆栈溢出问题

$(document).ready(function(){
  $('.somecontainer').on('resize',function(){
    if ($('.somecontainer').width() < 640) {
        $('.somecontainer').addClass('m');
    } else {
        $('.somecontainer').removeClass('m');
    }
  });
});

3
投票

我刚刚设法在 Bootstrap 4 中使用 scss 使模态中的网格系统行为响应模态的断点。由于模态的最大宽度在某些断点上是响应式的,因此我们需要在这些断点上为特定模态大小(sm、md、lg、xl)生成新的 css,这会否决 Bootstrap 的 css 媒体查询

只需将所有内容复制/粘贴到单独的 scss 文件中,激活它即可开始

// This is a stripped version of the original "make-grid-columns" mixin from Bootstrap
@mixin make-modal-grid-columns($breakpoints) {
    @each $breakpoint in map-keys($breakpoints) {
        $infix: breakpoint-infix($breakpoint, $breakpoints);
        @include media-breakpoint-up($breakpoint, $breakpoints) {
            @for $i from 1 through $grid-columns {
                .col#{$infix}-#{$i} {
                    @include make-col($i, $grid-columns);
                }
            }
        }
    }
}

$breakpoint-sm: 576px;
$breakpoint-lg: 992px;
$breakpoint-xl: 1200px;

.modal {
    // Overrules all .col css inside .modal-sm to a single col
    .modal-sm {
        @include make-modal-grid-columns((
            xs: 0
        ));
    }

    // modal-md (no specific class is also modal-md)
    @include make-modal-grid-columns((
        sm: $breakpoint-sm
    ));

    .modal-lg {
         @include make-modal-grid-columns((
             md: $breakpoint-lg
         ));
     }

    .modal-xl {
        @include make-modal-grid-columns((
            md: $breakpoint-lg,
            lg: $breakpoint-xl
        ));
    }
}

仅供参考:它生成 350 行代码

可以在 Bootstrap 4 中使用这样的块进行测试

<div class="modal" style="display: block;">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <div class="row">
                    <div class="col-sm-8">test</div>
                </div>
            </div>
        </div>
    </div>
</div>

然后如果你用 devtools 检查它,CSS 看起来像这样

Devtools screenshot

© www.soinside.com 2019 - 2024. All rights reserved.