将图像固定在居中文本的右侧而不移动文本
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:
与 hidden
或 visible
一起使用(而不是 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;}
以将其从正常内容流中移除。并使用 top
、right
值和 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>
由此 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:
与 hidden
或 visible
一起使用(而不是 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;}
以将其从正常内容流中移除。并使用 top
、right
值和 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>