У меня есть этот кусок кода:
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#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>
Ниже приведено кросс-браузерное совместимое решение:
#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+ */ }
Из Как обернуть текст без пробелов внутри тега & lt; td & gt;?
Проверьте рабочий пример здесь.
Если у вас все в порядке с 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>
Мне не повезло с решением в принятом ответе, поэтому я попробовал другой подход. При загрузке я помещаю все черты в текст привязки с пробелами: "/" → "/". Большинство ссылок не имеют косой черты, и поэтому это ничего не делает, и большинство ссылок, которые имеют их, являются гиперссылками, и они выглядят хорошо с этой подстановкой, а затем ссылки действительно обертываются правильно.
$('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);
});
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;
}
Этот пример включает левый float, поскольку я пытался достичь медиа-объекта, такого как макет.
К сожалению, если вы попытаетесь использовать элементы table-cell
, он снова сломается: (
Вы также можете обернуть каждую букву ссылки в <span></span>
с помощью javascript, например.
<a href="#" onclick="location.href='http://foo.bar'; return false;"><span>f</span><span>o</span><span>o</span></a>
Но я бы пошел на подход css3.
2017 Отказ от ответственности: Это нехорошее решение, и я никогда не говорил, что это так. Если вы все еще чувствуете необходимость комментировать, пожалуйста, по крайней мере, прочитайте предыдущие комментарии