基于居中的容器,是否可以使用CSS仅使另一个元素左对齐以扩展此居中容器的右边界?

第二个元素应该展开,直到出现红色虚线.

* {box-sizing:border-box;}

.container {
  margin: 0 auto;
  max-width: 500px;
  position: relative;
}

.container::after {
  content: '';
  width: 1px;
  height: calc(100% + 3rem);
  background: none;
  border-right: 1px dashed red;
  position: absolute;
  top: 0;
  right: 0;
}

.grey {
   background: #ccc;
   padding: 1rem;
}

.stretch-row-left {
  margin-top: 1rem;
}
<div class="container grey"></div>
<div class="stretch-row-left grey"></div>

虽然我可以用一些Java脚本来实现这一点,但我想知道是否有一种只有css的方法.

JS达到预期效果:

const container = document.querySelector('.container');
const stretchBlock = document.querySelector('.stretch-row-left');

function returnWidth(){
    return stretchBlock.style.maxWidth = 'calc('+(container.clientWidth + container.offsetLeft) + 'px'+ ' - 0.5rem)';
}

returnWidth();

window.addEventListener("resize", returnWidth);
* {box-sizing:border-box;}

.container {
  margin: 0 auto;
  max-width: 500px;
  position: relative;
}

.container::after {
  content: '';
  width: 1px;
  height: calc(100% + 3rem);
  background: none;
  border-right: 1px dashed red;
  position: absolute;
  top: 0;
  right: 0;
}

.grey {
   background: #ccc;
   padding: 1rem;
}

.stretch-row-left {
  margin-top: 1rem;
}
<div class="container grey"></div>
<div class="stretch-row-left grey"></div>

推荐答案

您可以进行一些计算,将500px以外的空间从其宽度中减go 一半:

width: calc(100% - calc(calc(100% - 500px) / 2));

不过,从某种意义上说,您基本上是在try 复制没有电网的适当电网的好处.三栏布局也能让你做到这一点.

* {
  box-sizing: border-box;
}

.container {
  margin: 0 auto;
  max-width: 500px;
  position: relative;
}

.container::after {
  content: '';
  width: 1px;
  height: calc(100% + 3rem);
  background: none;
  border-right: 1px dashed red;
  position: absolute;
  top: 0;
  right: 0;
}

.grey {
  background: #ccc;
  padding: 1rem;
}

.stretch-row-left {
  margin-top: 1rem;
  width: calc(100% - calc(calc(100% - 500px) / 2));
}
<div class="container grey"></div>
<div class="stretch-row-left grey"></div>

Html相关问答推荐

CSS位置:固定尊重母公司的保证金属性.""'为什么?

我似乎不能正确地将我的导航栏居中'

仅包含名为X的子元素的元素的XPath?

为什么XPath返回的元素比我预期的要多?

摆动的html标签

根据屏幕大小拆分长行列表

有没有什么方法可以很容易地给一个SVG一个插框阴影?

如何删除FONT创建的文本下方的空格

按钮悬停效果不影响按钮内的图标

在 HTML 视频上环绕文本叠加

Angular MatBadge 在高于 99 时不显示完整数字

从触发元素移动到有间隙的内容时 CSS 工具提示关闭

Angular中如何向单选按钮添加验证

将现有内容拆分为三列或部分

绝对类在另一个绝对类之上

修复 Vue 3 Component 中的 CSS 以显示后面的 Select 器样式而无需 !important

如何制作一个空的网格模板行来填充剩余空间?

有没有办法让 textarea 在调整大小时不显示 CSS 转换?

本地 css 样式表未链接

弹出窗口溢出溢出:自动,我不明白为什么