增强说唱修复全宽元素,内容对齐
boostrap fix full width element with content aligned
我有一个div,当它滚动到时会变得fixed
。我希望这个div 处于fixed
状态时全宽。我通过将width: 100%
设置为有问题的div 来做到这一点。问题是我希望div 的内容仍然与页面的内容对齐,而不是向左移动。我希望能够在不更改当前 html 标记的情况下执行此操作。<小时 />示例:滚动到并处于fixed
状态时的全宽。
小提琴:https://jsfiddle.net/DTcHh/19335/
<小时 /> 示例:如果我向左添加填充以将内容向内移动,则可以正常工作。问题是左边的填充可以是任何数字 - 有没有办法可靠地解决这个问题?
小提琴:https://jsfiddle.net/DTcHh/19337/<小时 />.CSS:
#myDiv.fixed {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
}
Jquery:
$(window).scroll(function() {
if (isScrolledIntoView($('#myDivWrapper'))) {
if (!initSet) {
initSet = true;
}
$("#myDiv").removeClass('fixed');
} else if (initSet) {
$("#myDiv").addClass('fixed');
}
});
在#myDiv
内添加一个额外的.container
div,并在固定发生时调整填充。
<div id="myDivWrapper">
<div id="myDiv">
<div class="container">
<p>
This should be fixed once it comes into view and then goes out of view.
</p>
</div>
</div>
</div>
#myDiv .container {
padding: 0;
}
#myDiv.fixed {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
}
#myDiv.fixed .container {
padding: 0 15px;
}
这可能可以稍微整理一下,但我想你明白了。
JSfiddle
不要写左:0
在此处输入链接说明
#myDiv.fixed {
position: fixed;
bottom: 0;
width: 100%;
}
您只需计算内容和窗口边缘之间的度量值,然后在需要时将其应用为左填充。
var measure = ($(window).width() - ($('#myDiv').offset().left + $('#myDiv').width()));
$(window).scroll(function() {
if (isScrolledIntoView($('#myDivWrapper'))) {
if (!initSet) {
initSet = true;
}
$("#myDiv").removeClass('fixed').css('padding-left', 0);
} else if (initSet) {
$("#myDiv").addClass('fixed').css('padding-left', measure+'px');
}
});
德莫小提琴 https://jsfiddle.net/DTcHh/19338/
编辑:如果编辑标记是一个选项,我建议@Paulie_D的方法。不过,您不需要添加另一个容器 - 只需将一个类添加到现有标记中即可。
演示小提琴 https://jsfiddle.net/DTcHh/19340/
<div id="myDivWrapper">
<div id="myDiv">
<p class="container">
This should be fixed once it comes into view and then goes out of view.
</p>
</div>
</div>
由于所有段落都在container
类中,因此您也可以将此类添加到固定段落中。
$("#myDiv").removeClass('fixed');
$("#myDiv p").removeClass('container');
...
$("#myDiv").addClass('fixed');
$("#myDiv p").addClass('container');
此外,您需要告诉#myDiv
全宽:
#myDiv.fixed {
position: fixed;
bottom: 0;
left:0;
right:0;
}
请参阅此处的工作示例。
相关文章:
- html根据DIRECTION设置更改元素的水平对齐
- 如何将剑道UI窗口与页面上的另一个元素对齐
- 将可拖动元素与从父项位置开始的网格对齐
- 增强说唱修复全宽元素,内容对齐
- jquery可丢弃元素与网格对齐
- 将元素与窗口底部对齐,但允许滚动到下面的内容
- 类似文本锚的属性,用于对齐 SVG 或 G 元素
- 恒星.js - 为垂直滚动网站配置偏移/对齐元素
- CSS 元素不会正确对齐
- 如何使用 JQuery 移动更改移动方向时使网格元素水平对齐到垂直对齐
- 根据 c3 条形图中的坐标对齐外部元素
- 元素忽略位置:修复了在 CSS 中对齐的问题
- 文本对齐:居中和边距:0自动不适用于绝对定位的元素
- 垂直对齐和具有动态内容和高度的元素
- 在对齐作为 css 圆圈的导航列表元素的基线时遇到问题
- 在页面上对齐这些元素的最佳方法是什么
- 使用CSS缩放/矩阵不保持背景与元素对齐
- 使用jQuery将元素对齐到鼠标位置有一个偏移量
- Javascript DOM -将文本元素对齐到中心
- 如何将所有左侧浮动元素对齐在其父元素的中心