有没有办法自动使用字母间距,每行在其自动对齐到一个定义的宽度,使用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>