Вмещается ли содержимое в div
Есть див с некоторым текстом внутри
<div style="width:50px; height: 50px; overflow:hidden;"> Длиииииииииииииииинныйй текст </div> Можно ли как-то узнать (через javascript), вмещается в него текст или нет ? |
<div style="width:50px; height: 50px; overflow:hidden;" id="container">
Длиииииииииииииииинный текст
</div>
<p><a href="#" onclick="return isThereARoomEnough('container');">is there a room enough?</a></p>
<div style="width:50px; height: 50px; overflow:hidden;" id="container2">
Крткй текст
</div>
<p><a href="#" onclick="return isThereARoomEnough('container2');">is there a room enough?</a></p>
<script type="text/javascript">
function isThereARoomEnough(id) {
var cont = document.getElementById(id);
var clone = cont.parentNode.insertBefore(cont.cloneNode(true), cont);
clone.style.overflow = "auto";
var result = ((clone.scrollWidth > cont.offsetWidth) || (clone.scrollHeight > cont.offsetHeight));
clone.parentNode.removeChild(clone);
if (result) {
alert("There is not enough space");
} else {
alert("The container is roomy enough")
}
return false;
}
</script>
|
Как вариант:
<script type="text/javascript">
window.onload = function(){
var div = document.getElementById('div'),
computed = parseInt(window.getComputedStyle ? getComputedStyle(div, null).height : div.currentStyle.height);
div.style.height = '';
alert(computed < div.offsetHeight ? 'больше!' : 'меньше?');
};
</script>
<div id="div" style="
position: relative;
white-space: pre-wrap; /* W3C */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -o-pre-wrap; /* Opera */
word-wrap: break-word; /* IE5.5+ */
width: 50px;
height: 50px;">
******************************************
</div>
|
monolithed,
подумал о подобном варианте но отмёл его-как нерабочий если текст в контейнере окажется заключённым в теги-в тот же теги абзаца. есть ли вариант чтобы учесть теги? |
Цитата:
|
яс.спс.но тут же возникает другой вопрос. загоняется туда текст-а как контейнер будет принимать реальные значения -в какую сторону растягиваться? с фикс размером по ширине(об обычном тексте)- ясно то что не влезло по ширине перенесётся на другую строку.и вопрос только в том хватит ли высоты у контейнера.
думал в туже сторону-что можно получить длину текста в пикселах, значения свойств для контейнеров высоту текста, и рассчитать колво строк-соответственно и площадь занимаемую ими.но отмёл его поскольку если будут теги то ничего особо и не выйдет толкового |
<script type="text/javascript">
window.onload = function(){
var div = document.getElementById('div'),
computed = parseInt(window.getComputedStyle ? getComputedStyle(div, null).height : div.currentStyle.height);
div.style.height = '';
alert(computed < div.offsetHeight ? 'больше!' : 'меньше?');
};
</script>
<div id="div" style="
position: relative;
overflow: hidden;
width: 50px;
height: 50px;">
*!*
<p style="height: 100px;">******************************************</p>
*/!*
</div>
|
кстати не работает он с тегами-то что и думал- и ширину отслеживать нужно для тегов
попробуй замени <p style="height: 100px;">****************************************** </p> на <h10>******************************************</h10> да и просто с текстом вне площадки сайта не работает вот код какой пробую-кричит обратное с данными с топика
<script type="text/javascript">
window.onload = function(){
var div = document.getElementById('div'),
computed = parseInt(window.getComputedStyle ? getComputedStyle(div, null).height : div.currentStyle.height);
div.style.height = '';
alert(computed < div.offsetHeight ? 'больше!' : 'меньше?');
};
</script>
<div id="div" style="
position: relative;
overflow: hidden;
width: 50px;
height: 50px;">
*************************************************************************
</div>
но он фаерфоксе кричит что строка меньше чем размеры контейнера код скопирован из этого топика эт я к тому что ширину контейнера нужно фиксировать. |
Цитата:
|
с ними тоже пробовал но там явно задаётся высота текста с этими заголовками больше 50 рх даж <p> задаёт контейнер необходимый больше чем 50
нашел в чём разница-в первом варианте и в последнем в первом явно был задан перенос если по ширине не вмещается как говориться запара+моя невнимательность-не глянул что ты в первом варианте явно задал перенос по ширине |
| Часовой пояс GMT +3, время: 16:37. |