2017-07-21 12 views
0

我希望这不是一个愚蠢的问题,但我一直在弄乱这个比必要的更长的时间,并决定伸手去寻找答案。使用CSS放置一个包含动态文本长度的父级以外的对象

我想要实现以下,中心的网页上:

[动态变化的文本] [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>

任何想法?

+0

这仍然需要工作,但这是你要做什么? https://jsfiddle.net/96w0zy7b/ –

回答

1

使在左,对从图像相等宽度的右块可以与Flexbox的可以容易地实现,将其设定flex:1

* { 
 
    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>

是它你寻找什么?

+0

这是提供最简单解决方案的最佳答案,不会引起儿童内部其他风格的问题... – Bojoer

0

是否是这样的?你需要.wrapper是跨度

* { 
 
    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>

+0

嘿,我才意识到自己错过了重点线从我的问题,我已经添加到编辑: 的形象应该是在屏幕的中心,无论文字的周围它。 – Luis

0

请尽量使用打击代码。

* { 
 
    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>

+0

这看起来是正确的,但是你认为它可以在没有浮动的情况下完成吗? – Luis

+0

是的,这是可能的,那么你需要删除浮动:左,只需要添加显示:inline-block;请检查我的更新答案。 –

相关问题