我需要在100%宽度的div容器中完全填充文本。
我尝试使用letter-spacing
,但它看起来只接受px / em,而不是百分比值..但不会响应(例如调整窗口大小)。
这就是我得到的:http://jsfiddle.net/3N6Ld/
我应该采取另一种方法吗?有任何想法吗?谢谢
答案 0 :(得分:14)
如果您知道有多少个字母,可以使用vw
(视口宽度)单位来实现此目的。
在下面的例子中,我使用了14.29vw
的值,为100(窗口宽度的100%)除以7(单词中的字母数" CONTENT& #34;)大约是14.29。
html, body {
margin: 0;
height: 100%;
width: 100%;
}
.container{
background: tomato;
height: 10%;
width: 100%;
}
.content {
color: white;
letter-spacing: 14.29vw;
overflow: hidden;
}

<div class="container">
<div class="content">
CONTENT
</div>
</div>
&#13;
如果你想制作&#34; T&#34;靠近右边缘可以稍微增加letter-spacing
。对于Stack Overflow的代码片段,将其设置为14.67vw
可以解决问题:
html, body {
margin: 0;
height: 100%;
width: 100%;
}
.container{
background: tomato;
height: 10%;
width: 100%;
}
.content {
color: white;
letter-spacing: 14.67vw;
overflow: hidden;
}
&#13;
<div class="container">
<div class="content">
CONTENT
</div>
</div>
&#13;
答案 1 :(得分:5)
我编写了一个jQuery代码段,用于计算要应用的字母间距,以便文本使用其容器的整个宽度:Stretch text to fit width of div。
您可以将它应用于文本并在窗口调整大小时将其激活,以便在调整浏览器大小时重新计算字母间距:
<强> DEMO 强>
HTML:
<div class="container">
<div class="stretch">CONTENT</div>
</div>
jQuery:
$.fn.strech_text = function(){
var elmt = $(this),
cont_width = elmt.width(),
txt = elmt.text(),
one_line = $('<span class="stretch_it">' + txt + '</span>'),
nb_char = elmt.text().length,
spacing = cont_width/nb_char,
txt_width;
elmt.html(one_line);
txt_width = one_line.width();
if (txt_width < cont_width){
var char_width = txt_width/nb_char,
ltr_spacing = spacing - char_width + (spacing - char_width)/nb_char ;
one_line.css({'letter-spacing': ltr_spacing});
} else {
one_line.contents().unwrap();
elmt.addClass('justify');
}
};
$(document).ready(function () {
$('.stretch').strech_text();
$(window).resize(function () {
$('.stretch').strech_text();
});
});
CSS:
html, body{
height: 100%;
margin:0;
}
.container{
height: 10%;
background: red;
}
.stretch{
overflow-x:hidden;
}
.stretch_it{
white-space: nowrap;
}
答案 2 :(得分:5)
另一种解决方案,如果你不必是语义,我的意思是如果你只需要视觉效果,就是使用flexbox。
所以你有<div id="#myText">TEXT 1</div>
我们需要得到这个:
<div id="#myText">
<span>T</span>
<span>E</span>
<span>X</span>
<span>T</span>
<span> </span>
<span>1</span>
</div>
那么你可以申请CSS:
#myText {
display: flex;
flex-direction: row;
justify-content: space-between;
}
为了将文本转换为span,您可以使用jQuery或其他任何东西。这里有jQuery:
var words = $('#myText').text().split("");
$('#myText').empty();
$.each(words, function(i, v) {
if(v===' '){
$('#myText').append('<span> </span>');
} else {
$('#myText').append($("<span>").text(v));
}
});
为了获得更好的效果,请将字母间距:0添加到#myText中,以便应用任何额外的间距。