使用 CSS 将包含动态文本长度的对象放置在其父对象之外

Using CSS to place an object outside of its parent that contains dynamic text length

我希望这不是一个愚蠢的问题,但我已经在这个问题上纠结了很长时间,因此决定寻求答案。

我正在尝试以页面为中心实现以下目标:

[[动态变化的文字][img][其他文字]]

左侧文本的长度不应影响整个块的居中性质。

无论周围有什么文字,图像都应位于屏幕中央。

我尝试在左侧文本上使用负翻译,这实现了效果,但在文本字符串改变长度时不会缩放。

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
.wrapper {
  border: 1px solid green;
  left: 50%;
  position: absolute;
}

.long-text {
  border: 1px solid yellow;
  display: inline-block;
  transform: translateX(-100%);
}

.image-block {
  border: 1px solid blue;
  display: inline-block;
  transform: translatex(-100%);
}
<div class="wrapper">
  <span class="long-text">Longer text goes in here</span>
  <div class="image-block">
    <img src="http://fakeimg.pl/30x30" alt="" />  
    <span>Shorter text</span>
  </div>
</div>

有什么想法吗?

像这样?你需要 .wrapper 成为 span

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.wrap {
  text-align: center;
}

.wrapper {
  border: 1px solid green;
  margin: 0 auto;
  display: inline-block;
}

.long-text {
  border: 1px solid yellow;
  display: inline-block;
}

.image-block {
  border: 1px solid blue;
  display: inherit;
  /*transform: translatex(-100%);*/
}
<div class="wrap">
  <span class="wrapper">
  <span class="long-text">Longer text goes in here</span>
  <div class="image-block">
    <img src="http://fakeimg.pl/30x30" alt="" />
    <span>Shorter text</span>
  </div>
  </span>
</div>

请尝试使用打击码

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.wrap {
  text-align: center;
  width:100%
}

.wrapper {
  border: 1px solid green;
  margin: 0 auto;
  display: inline-block;
}

.long-text {
  border: 1px solid yellow;
  display: inline-block;
  width:49%;
}

.image-block {
  border: 1px solid blue;
  display: inline-block;
  width:50%;
  vertical-align: top;
  /*transform: translatex(-100%);*/
}
.image-block img {
float: left;
}
.image-block divv {
padding-top: 5px;
}
<div class="wrap">
  <span class="wrapper">
  <span class="long-text">Longer text goes in here sdffdssdfsdssdf Longer text goes in here sdffdssdfsdssdf Longer text goes in here sdffdssdfsdssdf Longer text goes in here sdffdssdfsdssdf</span>
  <div class="image-block">
    <img src="http://fakeimg.pl/30x30" alt="" />
    <div>Shorter text</div>
  </div>
  </span>
</div>

通过设置 flex:1,可以使用 Flexbox 轻松实现图像左侧和右侧块的宽度相等:

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
.wrapper {
  border: 1px solid green;
  display: flex;
}
.wrapper > span {
   flex: 1;
}

.long-text {
  border: 1px solid yellow;
  text-align: right;
}

.image-block {
  border: 1px solid blue;
  display: inline-block;
}
<div class="wrapper">
  <span class="long-text">Longer text goes in here</span>
  <div class="image-block">
    <img src="http://fakeimg.pl/30x30" alt="" /> 
  </div>
  <span>Shorter text</span>
</div>

是您要找的吗?