溢出文本可以居中吗?

Nat*_*yan 54 css text center overflow alignment

当我text-align:center为宽度大于文本宽度的元素指定时,文本在元素的内容框中居中(如预期的那样).

当我text-align:center为宽度小于文本宽度的元素指定时,文本将与内容框的左边缘对齐,并溢出内容框的右边缘.

您可以在此处查看这两个案例.

任何CSS魔法都可以使文本同样溢出内容框的左边缘和右边缘,以便它保持居中吗?

Nem*_*o64 92

我知道这个问题已经过时了,但我遇到了同样的问题,并且发现了一个更简单的解决方案. http://jsfiddle.net/7hy3w2jj/

<div>some text</div>
<div>
    <span class="text-overflow-center">some text that will overflow</span>
</div>
Run Code Online (Sandbox Code Playgroud)

那么你只需要这个定义

.text-overflow-center {
    margin-left: -100%;
    margin-right: -100%;
    text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

如果你可以使用伪元素,它可以完全没有html.只需将这些定义添加到文本容器中即可.http://jsfiddle.net/7287L9a8/

div:before {
    content: "";
    margin-left: -100%;
}
div:after {
    content: "";
    margin-right: -100%;
}
Run Code Online (Sandbox Code Playgroud)

伪变体的唯一缺点是它只适用于一行文本.

  • 哦感谢上帝的负利润!我使用`-99px`而不是%value来表示一个子元素,它远小于具有可变维度的父元素和`overflow:hidden`无论如何 (2认同)
  • @Aziz可能.但我喜欢只定义我使用的属性. (2认同)
  • 对于MSEdge,如果您[可以使用flexbox](http://caniuse.com/#feat=flexbox)—然后将`display:flex; justify-content:center;`div`上的跨浏览器效果更好。http://jsfiddle.net/jfroom/2u5x1hmj/1/ @ Nemo64考虑更新吗? (2认同)
  • 这根本行不通,是吗?尝试将 div 设置为 15px 宽而不是 100px,这样就不会再居中了。 (2认同)

Nat*_*yan 14

Div魔法救援.如果有人有兴趣,你可以在这里看到解决方案.

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>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

  • "救援神魔." 好吧,和DIV汤一起救援......但是一个棘手的解决方案 (4认同)
  • 这可能是一个选项:http://jsfiddle.net/PdER5/.我故意不发布它作为答案,因为它需要经过严格测试,以确保它在您需要支持的任何浏览器中的实际页面上使用时不会做任何奇怪的事情. (2认同)

Lar*_*Ang 12

这看起来有些老问题.

现在我认为flex有一些很好的答案.

你可以这样做:

<div id="small_div">overflowing text</div>

#small_div {
    display: flex;
    justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)

而已.

希望对你有很大帮助!

  • 这应该是公认的答案,因为它允许多行溢出居中 (2认同)