在引导程序中将列固定位置


80

使用Bootstrap,我有一个网格列class =“ col-lg-3”,我想将其放置在position:fixed,而另一个.col-lg-9是正常位置(可滚动浏览整个页面)。

<div class="row">
    <div class="col-lg-3">
        Fixed content
    </div>
    <div class="col-lg-9">
        Normal scrollable content
    </div>

</div>

就像LifeHacker.com中的左列一样, 您将看到左侧部分固定,但是我在页面上滚动。

我使用bootstrap v3.1.1


@Lowkase我为每个请求附加了代码。

1
等待主题被“保留”。同时,您可以在这里看到我的答案:jsfiddle.net/dRbe4。问题重新开放后,我可以更好地解释它。
Lowkase 2014年

Answers:


84
<div class="row">
    <div class="col-lg-3">
       <div class="affix">
           fixed position 
        </div>
    </div>
    <div class="col-lg-9">
       Normal data enter code here
    </div>
</div>

2
现在绝对是首选的解决方案!
斯科特

11
这在较小的屏幕上无法正常工作,右div将位于包含fixeddiv的
左列上方

11
引导程序4?任何想法
PirateApp '18

19
在Bootstrap 4中,将“粘贴”更改为“粘顶”
Tacio Costa,

3
有关信息:Bootstrap放弃了对Bootstrap 4.0附加词缀的支持。现在按照此处的建议使用“位置:粘性”:getbootstrap.com/docs/4.1/migration/#components
Antoine Delia,

50

遍历Ihab的答案,只需要使用position:fixed和引导程序就col-offset可以了,而不必具体指定宽度。

<div class="row">
    <div class="col-lg-3" style="position:fixed">
        Fixed content
    </div>
    <div class="col-lg-9 col-lg-offset-3">
        Normal scrollable content
    </div>
</div>

5
如果您更改列的位置,这将不起作用
didando8a 2015年

这是一个更好的解决方案!工作完美,不需要CSS。@ didando8a如果您更改列的位置,只需将col-lg-offset更改为新的偏移量即可。
罗伊·肖阿

如果有人还需要滚动能力到固定列,只需增加高度和溢出量即可。例如style="position:fixed;height:100%;overflow-y:auto;"
罗伊·肖阿

7
@Roy“不需要CSS”-是的,它只是在样式标签中;)
Mike Furlender

4
这就是我所需要的!请注意,Bootstrap 4中的偏移量类不同,例如offset-lg-3getbootstrap.com/docs/4.0/layout/grid/#offsetting-columns
nickwesselman

29

按照此处http://jsfiddle.net/dRbe4/的解决方案,

<div class="row">
    <div class="col-lg-3 fixed">
        Fixed content
    </div>
    <div class="col-lg-9 scrollit">
        Normal scrollable content
    </div>

 </div>

我修改了一些CSS以使其完美工作:

.fixed {
        position: fixed;
        width: 25%;
}
.scrollit {
        float: left;
        width: 71%
}

感谢@Lowkase分享解决方案。


10
如果不指定width属性,是否可能具有相同的结果?
ADIMO 2014年

1
我意识到这应该很痛苦,但是我无法使其正常工作...我想要左侧的可滚动列和右侧的固定列。我的固定列中只有一个标签,但是由于某些原因,当我设置这些类时,标签“粘”在左上角而不是在列中。我尝试了样式属性的所有不同组合都无济于事。希望得到一个指针:)
Reid 2015年

1
@ReidBelton分享了Jsfiddle,因此我可以为您提供代码帮助。

@ IhabAbdel-Rahim非常感谢您的报价!但是没有必要,因为我已经搁置了这个项目。
Reid 2015年

我做了同样的事情,但是当我添加固定类时,它消失了。请帮忙。
阿潘

19

在Bootstrap 3中class="affix"有效,但在Bootstrap 4中无效。我在Bootstrap 4中解决了这个问题class="sticky-top"position: fixed在CSS中使用有其自身的问题)

代码将是这样的:

<div class="row">
    <div class="col-lg-3">
        <div class="sticky-top">
            Fixed content
        </div>
    </div>
    <div class="col-lg-9">
        Normal scrollable content
    </div>
</div>

完善。position-fixed也可以使列固定在顶部,但是该列的内容溢出了。sticky-top解决这个问题。
maxpaj

10

为Bootstrap 4更新

Bootstrap 4现在包含一个position-fixed用于此目的的类,因此不需要其他CSS ...

<div class="container">
    <div class="row">
        <div class="col-lg-3">
            <div class="position-fixed">
                Fixed content
            </div>
        </div>
        <div class="col-lg-9">
            Normal scrollable content
        </div>
    </div>
</div>

https://www.codeply.com/go/yOF9csaptw


如果我按照您的示例进行操作,则“ col-lg-3”列的内容将超出其父级。很奇怪!(尝试在其中添加更多文本)。它一定是个错误……
ThePhi

这并不奇怪,因为固定位置元素已从正常DOM流中删除。这超出了原始问题的范围,但是必须在固定元素上设置特定的大小。
Zim

1
这会导致各列相互重叠
ChumiestBucket

就我而言,这是首选,因为它定义了位置:col-lg-3 div的固定样式导致内部子元素的光标显示为默认值(而不是fx。指针)。
chri3g91

4

使用此功能,对我有用,并解决小屏幕问题。

<div class="row">
    <!-- (fixed content) JUST VISIBLE IN LG SCREEN -->
    <div class="col-lg-3 device-lg visible-lg">
       <div class="affix">
           fixed position 
        </div>
    </div>
    <div class="col-lg-9">
    <!-- (fixed content) JUST VISIBLE IN NO LG SCREEN -->
    <div class="device-sm visible-sm device-xs visible-xs device-md visible-md ">
       <div>
           NO fixed position
        </div>
    </div>
       Normal data enter code here
    </div>
</div>

1

使用bootstrap 4只需使用col-auto

<div class="container-fluid">
    <div class="row">
        <div class="col-sm-auto">
            Fixed content
        </div>
        <div class="col-sm">
            Normal scrollable content
        </div>
    </div>
</div>

没有为我工作。两列都按预期方式滚动。
ChumiestBucket

@star_trac尝试添加一些CSS,应该有所帮助:.container-fluid { flex: 1; }
stefanitsky '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.