当我指定text-align:center
一个宽度大于文本宽度的元素时,文本将居中于元素的内容框中(如预期的那样)。
当我指定text-align:center
宽度小于文本宽度的元素时,文本将与内容框的左边缘对齐,并溢出内容框的右边缘。
您可以在此处查看这两种情况。
任何CSS魔术都可以使文本在内容框的左边缘和右边缘均相等地溢出,从而使其居中吗?
Answers:
我知道这个问题很旧,但是我也遇到了同样的问题,并且发现了一个更简单的解决方案。 http://jsfiddle.net/7hy3w2jj/
<div>some text</div>
<div>
<span class="text-overflow-center">some text that will overflow</span>
</div>
那你只需要这个定义
.text-overflow-center {
margin-left: -100%;
margin-right: -100%;
text-align: center;
}
如果可以使用伪元素,则完全不需要html。只需将这些定义添加到您的文本容器即可。http://jsfiddle.net/7287L9a8/
div:before {
content: "";
margin-left: -100%;
}
div:after {
content: "";
margin-right: -100%;
}
伪变体的唯一缺点是它只能处理一行文本。
-99px
一个比子元素小得多的子元素来代替%值,该子元素具有可变的尺寸,并且overflow: hidden
无论如何
display: flex; justify-content: center;
该div
作品更好的跨浏览器。jsfiddle.net/jfroom/2u5x1hmj/1 @ Nemo64考虑更新吗?
这看起来有些老问题。
现在,我认为flex有一些不错的答案。
您可以像这样简单地进行操作:
<div id="small_div">overflowing text</div>
#small_div {
display: flex;
justify-content: center;
}
而已。
希望对您有帮助!
魔术师来营救。如果有人感兴趣,您可以在此处查看解决方案。
HTML:
<div id="outer">
<div id="inner">
<div id="text">some text</div>
</div>
</div>
<div id="outer">
<div id="inner">
<div id="text">some text that will overflow</div>
</div>
</div>
CSS:
#outer {
display: block;
position: relative;
left: 100px;
width: 100px;
border: 1px solid black;
background-color: silver;
}
#inner {
/* shrink-to-fit width */
display: inline-block;
position: relative;
/* shift left edge of text to center */
left: 50%;
}
#text {
/* shift left edge of text half distance to left */
margin-left: -50%;
/* text should all be on one line */
white-space: nowrap;
}
DIV
s宽度的一半。
尝试
word-wrap:break-word;
代替:
white-space:nowrap;
还是只想一行?
这似乎很有效:添加一个包装块,其位置相对且为left:50%margin-left:-100%,您可以在 此处看到以下代码:
<style>
div {
display: block;
position: relative;
left: 100px;
height:1.5em;
width: 100px;
text-align: center;
white-space: nowrap;
border: 1px solid black;
background-color: silver;
}
span{
display:block;
position:relative;
left:50%;
margin-left:-100%;
}
</style>
<div><span>some text</span></div>
<div><span>some text that will overflow</span></div>
white-space: nowrap;
吗?如果不是,则文本居中。