CSS文本用字母间距对齐

前端之家收集整理的这篇文章主要介绍了CSS文本用字母间距对齐前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法自动使用字母间距,每行在其自动对齐到一个定义的宽度,使用CSS?

例如,“这样的东西”会像这样看起来很好看

在我的文本中应用这样的样式有没有一个非突出的方式?我相信纯CSS没有这个选择(至少没有CSS 3之前的3版本,CSS3似乎有一个text-justify属性,但它还不是很好的支持),所以js的解决方案也会很好。

解决方法

这是一个可以做到的脚本。这不是漂亮的,但也许你可以把它打破,以满足你的需要。 (更新以处理调整大小)
<html>
<head>
<style>
#character_justify {
    position: relative;
    width: 40%;
    border: 1px solid red;
    font-size: 32pt;
    margin: 0;
    padding: 0;
}
#character_justify * {
    margin: 0;
    padding: 0;
    border: none;
}
</style>
<script>
function SplitText(node)
{
    var text = node.nodeValue.replace(/^\s*|\s(?=\s)|\s*$/g,"");

    for(var i = 0; i < text.length; i++)
    {
        var letter = document.createElement("span");
        letter.style.display = "inline-block";
        letter.style.position = "absolute";
        letter.appendChild(document.createTextNode(text.charAt(i)));
        node.parentNode.insertBefore(letter,node);

        var positionRatio = i / (text.length - 1);
        var textWidth = letter.clientWidth;

        var indent = 100 * positionRatio;
        var offset = -textWidth * positionRatio;
        letter.style.left = indent + "%";
        letter.style.marginLeft = offset + "px";

        //console.log("Letter ",text[i],",Index ",i,Width ",textWidth,Indent ",indent,Offset ",offset);
    }

    node.parentNode.removeChild(node);
}

function Justify()
{
    var TEXT_NODE = 3;
    var elem = document.getElementById("character_justify");
    elem = elem.firstChild;

    while(elem)
    {
        var nextElem = elem.nextSibling;

        if(elem.nodeType == TEXT_NODE)
            SplitText(elem);

        elem = nextElem;
    }
}

</script>
</head>
<body onload="Justify()">
<p id="character_justify">
Something<br/>
Like<br/>
This
</p>
</body>

猜你在找的CSS相关文章