可以溢出文本居中?
当我指定text-align:center
宽度大于文本宽度的元素时,文本在元素的内容框中居中(如预期的那样)。
当我指定text-align:center
为宽度小于文本宽度的元素时,文本将与内容框的左边缘alignment,并溢出内容框的右边缘。
你可以在这里看到两个案例。
任何CSS魔法都可以使文本同时溢出内容框的左边缘和右边缘,从而保持居中?
我知道这个问题是旧的,但我只是有同样的问题,并find一个简单的解决scheme,只有一个跨度。 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%; }
伪变体唯一的缺点是只能用一行文本。
魔术师来拯救。 如果有人有兴趣,你可以在这里看到解决scheme。
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; }
奇怪的要求。 我会扩大框的文字大小。
一个可能的解决scheme可能涉及一个负面的文本缩进: text-indent: -50px;
,但是对于较小的文本则不起作用(在你的例子中是第一个DIV
)。 现在没有比这更好的主意了。
尝试
word-wrap:break-word;
代替:
white-space:nowrap;
或者你只想在一条线上?
这似乎工作:添加一个包装块与位置相对和左:50%余量:-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>
为了使解决scheme适用于多行文本,您可以通过将#inner从50%更改为25%来修改Nathan的解决scheme。
给最里面的div
一些margin: 0 -50%
。 如果元素都是显示块或内联块,并且文本alignment居中,则为最内层元素的文本提供更多的空间。 至less,它对我有用。