将图像固定在居中文本的右侧而不移动文本

Fix image to right of centered text without moving the text

由此 JSFiddle 您可以看到,如果您按下 'toggle circle' 按钮,与文本内嵌的圆圈会隐藏和显示。它旁边的文本也会移动,因为它周围的 div 使用 text-align: center;

使文本居中

function hide() {
  $('img').toggle();
}
div {
  text-align: center;
  background-color: grey;
  padding: 20px;
}
p {
  display: inline;
  color: white;
  vertical-align: top;
}
img {
  display: inline;
  width: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button onclick="hide();">Toggle Circle</button>

<div>
  <p>Lorem Ipsum</p>
  <img src="https://upload.wikimedia.org/wikipedia/commons/1/13/Disc_Plain_red.svg">
</div>

我希望文本居中,就好像圆圈不存在一样,然后当单击按钮时,圆圈出现在它旁边。简而言之,我希望文本的居中不受圆圈的影响,即使它仍然会出现在圆圈旁边。

我该怎么做?谢谢。

您应该使用 relative/absolute 位置来执行此操作,这样 img 就不会影响元素的自然流动

function hide() {
  $('img').toggle();
}
.content {
  text-align: center;
  background-color: grey;
  padding: 20px;
}

.inner {
  position: relative;
  display: inline;
}

p {
  display: inline-block;
  color: white;
  vertical-align: top;
}

img {
  position: absolute;
  width: 50px;
  right: -50px;
  top: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="hide();">Toggle Circle</button>

<div class="content">
  <div class="inner">
    <p>Lorem Ipsum</p>
    <img src="https://upload.wikimedia.org/wikipedia/commons/1/13/Disc_Plain_red.svg">
  </div>
</div>

你可以用更简单的方法来做到这一点。

通过将 visibility:hiddenvisible 一起使用(而不是 jQuery toggle 使用的 display),元素的 space 仍然是 "reserved" 然后,您可以使用 jQuery toggleClass,并添加一个 class 来切换 visibility

这样做,您不必像使用 position: absolute

那样计算位置

我已经更新了你的fiddle:https://jsfiddle.net/uuvLogcr/3/

已更新jQuery:

function hide() {
    $('img').toggleClass('hidden');
}

已更新CSS:

div {
text-align: center;
background-color: grey;
padding: 20px;
}

p {
  display: inline;
  color: white;
  vertical-align: top;
}

img {
  display: inline;
  width: 50px;
  visibility: visible;
}

img.hidden {
   visibility: hidden;
}

如果您可以编辑标记,将 <img> 移动到 <p>,然后将其设置为 img {position:absolute;} 以将其从正常内容流中移除。并使用 topright 值和 transform 将图像放在正确的位置。

已更新 - https://jsfiddle.net/uuvLogcr/5/

function hide() {
  $('img').toggle();
}
div {
  text-align: center;
  background-color: grey;
  padding: 20px;
}
p {
  display: inline;
  color: white;
  position: relative;
}
img {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translate(100%, -50%);
  width: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button onclick="hide();">Toggle Circle</button>

<div>
  <p>
    Lorem Ipsum
    <img src="https://upload.wikimedia.org/wikipedia/commons/1/13/Disc_Plain_red.svg">
  </p>
</div>