相对于包含 div 而不是窗口的引导网格

Posted

技术标签:

【中文标题】相对于包含 div 而不是窗口的引导网格【英文标题】:bootstrap grid relative to containing div instead of window 【发布时间】:2015-03-18 15:22:03 【问题描述】:

请查看此笔以获取快速示例http://codepen.io/Irish1/pen/mymBje

html

<div class="container A">
  <div class="col-xs-12 col-md-4 border1 height"></div>
  <div class="col-xs-12 col-md-4 border2 height"></div>
  <div class="col-xs-12 col-md-4 border3 height"></div>
</div>
<div class="container B border1">
  <div class="col-xs-12 col-md-4 border1 height"></div>
  <div class="col-xs-12 col-md-4 border2 height"></div>
  <div class="col-xs-12 col-md-4 border3 height"></div>
</div>

css

.height 
  height: 20px;


.B 
  width: 325px;
  height: 100px;


.border1 
  border: 1px black solid;

.border2 
  border: 1px blue solid;

.border3 
  border: 1px red solid;

容器 A 具有浏览器窗口的宽度,包含 3 列,当窗口宽度低于 768 像素时,宽度从 33% 变为 100%

容器 B 的设置相同,接受它的宽度仅为 350 像素。正如您在笔中看到的,3 列的宽度为 33%。

我确信这是按预期工作的,但是否可以使网格相对于其包含的 div 而不是浏览器窗口?即容器B中的div有100%的宽度,因为B的宽度小于768px。

【问题讨论】:

使父位置:相对和您的子位置:绝对; 感谢您的回复,不幸的是这不起作用,它只会让子 div 堆叠在每个顶部,它不会影响它们的宽度 您是否将子 div 也显示为内联块? 最初不是,只是尝试过,但没有帮助codepen.io/Irish1/pen/VYbrxP 【参考方案1】:

这是将width to 30%display:inline-block 设置为所有div 子类容器。请看下面这如何改变外观:

.height 
  height: 20px;

.B 
  width: 325px;
  height: 100px;

.border1 
  border: 1px black solid;

.border2 
  border: 1px blue solid;

.border3 
  border: 1px red solid;

.container div 
  width: 30%;
  display: inline-block;
<div class="container A">
  <div class="col-xs-12 col-md-4 border1 height"></div>
  <div class="col-xs-12 col-md-4 border2 height"></div>
  <div class="col-xs-12 col-md-4 border3 height"></div>
</div>
<div class="container B border1">
  <div class="col-xs-12 col-md-4 border1 height"></div>
  <div class="col-xs-12 col-md-4 border2 height"></div>
  <div class="col-xs-12 col-md-4 border3 height"></div>
</div>

媒体查询方式:

div
  display:inline-block;
  width:30%;
  height:50px;
  background:blue;
  border:1px solid black;
  margin:1%;
  font-weight:bold;
  font-size:30px;
  text-align:center;
  transition: all 0.8s;
  

@media screen and (max-width:768px)
  
    
    div
      background:red;
      display:block;
      width:100%;
      
    
    
&lt;div&gt;A&lt;/div&gt;&lt;div&gt;B&lt;/div&gt;&lt;div&gt;C&lt;/div&gt;

在这一点上,我想提一下我对引导程序的绝对仇恨,主要是因为它缺乏功能。严肃地说,自己编写 css 会更有益(实际上更省时),尤其是当您想“开箱即用”地做 任何事情 时。我发现引导程序限制性太强对于任何类型的“更多功能”

【讨论】:

谢谢,但我要找的是codepen.io/anon/pen/rampNO,但目标中的 div 与常规中的 div 具有完全相同的类,即 col-md-4 您必须覆盖 width 属性 - 可能使用媒体查询。如果您正在寻找它,也许可以发布一个示例? 这听起来像是我必须做的。如果您可以在答案中发布一个示例,那就太好了 @Ir1sh:完成,如果这就是您要找的。 (全屏运行 sn-p 并调整大小以查看效果)【参考方案2】:

看起来唯一的方法就是以编程方式进行。 在another *** question 中找到了解决方案。 基本上你有一个类,它为元素提供 100% 宽度,并且基于父宽度,这个类被切换。

.m 
    width: 100%;   


$('.somecontainer').on('resize',function()
    if ($('.somecontainer').width() < 140) 
        $('.somecontainer').addClass('m');
     else 
        $('.somecontainer').removeClass('m');
    
);

【讨论】:

【参考方案3】:

试试这个删除引导类的填充,或者你可以通过给你自己的类来覆盖它

HTML:

<div class="container regular">
  <div class="col-xs-12 col-md-4 border1 height"></div>
  <div class="col-xs-12 col-md-4 border2 height"></div>
  <div class="col-xs-12 col-md-4 border3 height"></div>
</div>
<div class="container regular">
  <div class="col-xs-12 col-md-offset-4 col-md-4 border1 regular">
    <div class="col-xs-12 col-md-4 border1 height"></div>
    <div class="col-xs-12 col-md-4 border2 height"></div>
    <div class="col-xs-12 col-md-4 border3 height"></div>
  </div>
</div>

CSS:

.height 
  height: 20px;

.target 
  width: 325px;
  height: 100px;

.col-md-4
  padding:0;

.border1 
  border: 1px black solid;

.border2 
  border: 1px blue solid;

.border3 
  border: 1px red solid;

【讨论】:

【参考方案4】:

试试这个css:

.abs 
  position: relative;
  display: inline-block;

【讨论】:

感谢您的回复,不幸的是没有快乐 如果您在容器 B 中仅使用带有 col-xs-4 的 div ? 单独的 div 与有 3 个 div 时的行为相同 如果我理解得很好...像这样http://codepen.io/anon/pen/rampNO ? 是的,完全一样。我想得越多,我就越认为这可能是不可能的。样式通过只知道窗口宽度的媒体查询应用,对吗?

以上是关于相对于包含 div 而不是窗口的引导网格的主要内容,如果未能解决你的问题,请参考以下文章

在引导响应网格上居中 div

更改引导网格系统的列顺序

Tailwind CSS 网格提供 3 行而不是 3 列,但仅适用于 grid-cols-6

如何在引导流体布局中底部对齐网格元素

带有php的引导网格[重复]

使用具有可变单元数的引导网格