css – 中心文本大于容器? (不使用单独的子元素)

前端之家收集整理的这篇文章主要介绍了css – 中心文本大于容器? (不使用单独的子元素)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用CSS,容易使用text-align:center ;.将文本水平居中放置在容器中,但如果该文本的任何单词大于容器的宽度,浏览器将自动“剪辑”到容器的左边界(如,超大小的字符与太小容器的左侧对齐,并且没有CSS单词:连字符;属性设置(或类似的),超大小的单词突出超过右侧边缘容器.

任何方式浮动我的文本左边的这张照片,以节省垂直空间?好吧.无论如何…

没有使用儿童容器元素来保存文本,是否有一种方法可以使超大字体居中,以便它能同时挂在容器的左右两侧?

再次,我不想在容器内使用文本容器.我可以在5秒钟内使用一个小孩< div>文本居中< / div>具有固定宽度和负边距左,或者将容器元素绝对定位在相对div内,但是我正在寻找一个CSS属性,即使在文字太长而不适合宽度的情况下也会使文本居中.默认情况下,text-align:center不执行此操作.

思考?谢谢! -Slink

解决方法

This fiddle显示了三个div元素,说明了“问题”和以下“解决方案”.

一个可能的解决方

我不确定你的需要,但到目前为止,我发现唯一真正的解决方案是将display:table设置为文本容器.但是,这将允许容器拉伸到所需的宽度以包含最长的单词,这可能不适合您.如果没关系,那是最好的解决办法.

另一个可能的“假”解决方

如果你必须至少保持元素的大小,那么你可以通过一些创造性的伪元素来伪造外观:

.fakeIt {
    text-align: center; /* what you wanted all along */
    display: table; /* key to get centered */
    position: relative; /* allow reference for absolute element */
    z-index: 2; /* set up for a background to be pushed below */
    width: 40px; /* what you want,but table resizes larger if needed*/
    border: none; /* transferring border to the "fake" */
    background-color: transparent; /* transferring background to the "fake" */
}

.fakeIt:after {
    content: ''; /* before or after need it,even if empty */
    width: 40px; /* the original width you wanted for the container */
    position: absolute; /* need this to position it */
    z-index: -1; /* push it behind the foreground */
    left: 50%; /* push it to center */
    top:0; /* give it height */
    bottom: 0;  /* give it height */
    margin-left: -20px; /* half the width to finish centering */
    border: 1px solid red; /* the border you wanted on the container */
    background-color: yellow; /* the background you wanted on the container */
}

但是,根据您的具体应用,“伪造”解决方案可能无法正常工作.此外,原始元素仍然占据文档中更广泛的“空间”,它看起来不会像这样.这可能会导致问题.容器上的负余量可以解决这个问题,但是您不知道需要设置什么值,因为它与文本宽度会有所不同.

你在评论中提到你不熟悉css中的伪元素,所以你可能是want to have a quick intro.

猜你在找的CSS相关文章