我有一堆非常长的文件名导致我的HTML格式溢出。所有这些文件名都使用下划线而不是空格,并且如果它们是空格则会轻易打破/包装。像这样。
Here_is_an_example_of_a_really_long_filename_that_uses_underscores_instead_of_spaces.pdf
是否有某种方法可以告诉CSS将文本中的下划线视为空格或连字符,从而对下划线进行换行/拆分?像这样。
Here_is_an_example_of_a_really_long_
file_name_that_uses_underscores_
instead_of_spaces.pdf
出于我的目的,我不能使用脚本来执行此操作。我也不想使用word-wrap:break-word技巧,因为如果没有指定宽度通常也不行。此外,它在单词中间任意断开。
感谢。
答案 0 :(得分:18)
您可以使用<wbr>
标记(http://www.quirksmode.org/oddsandends/wbr.html),以便在您放置浏览器时将其中断。
所以你的HTML应该是:
Here_<wbr>is_<wbr>an_<wbr>example_<wbr>of_<wbr>a_<wbr>really_<wbr>...
您可以在输出HTML之前在服务器端添加此标记。
另一种选择是实体​
,它是零宽度空间。有时这在某些浏览器上效果更好。
答案 1 :(得分:15)
答案 2 :(得分:2)
目前看来你不能将CSS用于此目的。
但您可以使用JavaScript自动添加<wbr>
代码,例如:
var arr = document.getElementsByClassName('filename');
for(var i = 0; i < arr.length; i++) {
arr[i].innerHTML = arr[i].innerHTML.replace(/_/g, '_<wbr/>');
}
body { width: 250px; }
<a class="filename">Here_is_an_example_of_a_really_long_filename_that_uses_underscores_instead_of_spaces.pdf</a>
答案 3 :(得分:1)
不使用JavaScript或<wbr>
,您可以使用以下CSS插入<span> </span>
(请注意空格):
span{
width: 0;
overflow: hidden;
display: inline-block;
}
标记:
Here_<span> </span>is_<span> </span>an_<span> </span>example...
答案 4 :(得分:0)
在没有HTML5的情况下,您可以使用Javascript在要中断的字符之前或之后插入<span></span>
:
//Jquery
$("#id_of_the_container").html(function(index, text) {
return text.replace(/_/g, "_<span />");
});
//Pure Javascript
var htmlText = document.getElementById("id_of_the_container").innerHTML;
document.getElementById("id_of_the_container").innerHTML = htmlText.replace(/_/g, "_<span />");
然后使用容器的CSS类包装单词:
.yourClass {
word-break : break-word;
}
并最终将零像素宽的空白区域设置为span之前的内容:
.yourClass > span:before {
content: "\200b";
}
$("#set").html(function(index, text) {
return text.replace(/_/g, "_<span />");
});
.boxes-container > div {
margin: 5px;
max-width: 200px;
border : solid black 2px;
display: inline-block;
padding : 5px;
}
.bigger {
margin-right : 200px !important;
}
.wrap {
word-break: break-word;
}
.wrap > span:before {
content : "\200b";
}
.answer-example {
color : RGB(0, 50, 0);
border-color: RGB(0, 50, 0) !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="boxes-container">
<div class="bigger">
Without_Anything,
Long_Strings_With_Underscores_Make_text_Hard_To_Wrap
</div>
<div class="wrap">
Without_Span_tags,
Long_Strings_With_Underscores_Make_text_Hard_To_Wrap
</div>
<div id="set" class="wrap answer-example">
With_Span_tags,
Long_Strings_With_Underscores_Make_text_Hard_To_Wrap
</div>
</div>