我在50% 宽度的HR
容器中有一个元素,我希望它扩展到屏幕的所有宽度,忽略它的父宽度。 div
HR
我知道我可以通过应用HR
容器外部并使用相对位置使其移动到必须的位置来解决这个问题......但是还有其他解决方案吗?
我尝试将宽度设置为超过100%
,让我们说300%
让它溢出,但它只会向右放大(并显示一个丑陋的滚动条)。
浏览器将HR
其视为一个块,但我无法将其居中margin: 0 auto
(如上所述调整大小后)。
有没有办法在没有相对定位的情况下做到这一点?
您可以使用负边距,hr
如下所示:
hr {
width: 200%;
margin-left: -50%;
}
div
请注意,这些 %s 仅在其父级位于顶层和/或没有其他父级具有width
、padding
或margin
附加的情况下才会延伸到视口的末尾。为了解决这个问题,也许可以尝试 awidth: 9999px; margin-left: -3333px;
和 anoverflow: hidden
body
在搜索了类似的东西后,我偶然发现了这个问题。因为(可悲)我没有找到解决这个问题的纯 CSS 解决方案,所以我最终使用 jQuery 来完成这项工作。
function hrExpand() {
var windowWidth = $(window).width();
$('hr').width(windowWidth).css('margin-left', function(){
return '-' + ($(this).offset().left) + 'px';
});
}
只要确保同时运行 onload 和 onresize 函数。
示例:http ://codepen.io/anon/pen/qEOoGb
(您可以将 $('hr') 替换为 $('.content > hr') 以稍微提高性能并防止它替换页面上的所有 hr)
如果您使用正确的值,则使用相对定位无需滚动条:
div {
width: 50%;
min-height: 20em;
margin: 0 auto;
}
hr {
width: 200%;
position: relative;
left: -50%;
}
如果一个 div 是 50%,并且您希望 hr 是根的 100%(是 50% 的两倍),请使用 200%。对于 25% div,使用 400% hr 等
如果使用顺风:
<hr class="my-2 -ml-10 -mr-10"/>
我还没有测试过引导程序