私はこのコードを持っています:
div#permalink_section {
width: 960px
}
<div id='permalink_section'>
<a href="here goes a very long link">here goes a very very long link</a>
</div>
リンクテキストは非常に長くなる場合があり、その長さがdivの幅を超えるとdivからオーバーフローします。リンクの幅がdivの幅を超えたときに、強制的にリンクを解除して次の行に進む方法はありますか?
以下は、ブラウザ間の互換性のあるソリューションです。
#permalink_section { white-space: pre-wrap; /* CSS3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ Word-wrap: break-Word; /* Internet Explorer 5.5+ */ }
動作例を確認してください here 。
CSS3に問題がない場合、そのためのプロパティがあります。
Word-wrap:break-Word;
Internet Explorer 8以降、Firefox 6以降、iOS 4.2、Safari 5.1以降、およびChrome 13+。
[〜#〜] css [〜#〜]
.Word-wrap {
/* Warning: Needed for oldIE support, but words are broken up letter-by-letter */
-ms-Word-break: break-all;
Word-break: break-all;
/* Non standard for webkit */
Word-break: break-Word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}
ソース: kenneth.io
[〜#〜] scss [〜#〜]
@mixin Word-wrap() {
Word-break: break-Word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
ソース: css-tricks.com
div#permalink_section
{
width:960px;
overflow:hidden;
}
または
div#permalink_section
{
width:960px;
Word-wrap:break-Word
}
または、javascriptを使用してリンクのテキストの長さを切り捨て、末尾を「...」に置き換えます
JSメソッドの実例: http://jsfiddle.net/fhCYX/3/
より小さな幅で別のdiv内にリンクをラップする
<html>
<head><title></title>
<style type="text/css">
div#permalink_section { width: 960px }
</style>
</head>
<body>
<div id='permalink_section'>
<div id="linkwrap" style="width:100px">
<a href="here goes a very long link">here goes a very very long link</a>
</div>
</div>
</body>
</html>
overflow:hidden
は、size:auto
break-Word
の要素を正しく作成するための鍵のようです
<ul class="list">
<li class="item">
<div class="header">
<div class="content"></div>
</div>
<div class="body ">
<p>Loremipsumdolorsitametconsecteturadipisicingelitseddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua.</p>
</div>
</li>
</ul>
.list {
border: 1px solid black;
margin: 50px;
}
.header {
float:left;
}
.body {
overflow: hidden;
}
.body p {
Word-wrap: break-Word;
}
.header .content {
background: #DDD;
width: 80px;
height: 30px;
}
この例には、レイアウトのようなメディアオブジェクトを実現しようとしていた左フロートが含まれています。
残念ながら、table-cell
要素を使用しようとすると、再び壊れます:(
私は受け入れられた答えの解決策にあまり運がなかったので、別のアプローチを試みました。ロード時に、アンカーテキストのすべてのスラッシュにスペースを埋め込みます: "/"-> "/"。ほとんどのリンクにはスラッシュがないため、これは何も行いません。また、それらを含むほとんどのリンクはハイパーリンクであり、この置換で問題なく見えるようになり、リンクは正しく折り返されます。
$('a').each(function ()
{
//get the content
var content = $(this).html();
//a regex to find all slashes
var rgx = new RegExp('/', 'g');
//do the replacement
content = content.replace(rgx, " / ")
//the previous step also affects http:// (where present), so fix this back up
content = content.replace('http: / / ', 'http://');
//set the content back into the element
$(this).html(content);
});