Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2011, 23:26
Аватар для why.not?
Аспирант
Отправить личное сообщение для why.not? Посмотреть профиль Найти все сообщения от why.not?
 
Регистрация: 28.02.2010
Сообщений: 74

Найти переносы строки
Здравствуйте. Выдалась не очень простая задача по анимированию текста и ее решение требует нахождения всех автоматических переносов строки
Например, у нас есть контейнер
<div style="width:200px;"><span>очень длинный текст про что-то такое вот эдакое, ну и я не знаю что еще написать</span></div>

Текст в спане перенесется на следующую строку по границе слов, вот как бы мне найти места переноса?
Думал, что браузер вставляет что-то вроде "\n", но нифига. Возможно ли это сделать каким-либо простым методом, или нужно обернуть каждое слово в дополнительный спан и сверять его вертикальное смещение от предыдущего?
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2011, 09:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,135

why.not?, если шрифт моноширный, можно использовать ширину символа и количество символов в самом элементе...
Если нет - наверное только спаны. Причем "спанить" нужно не только слова, но и пробелы между ними. Они ведь так же занимают место...

Вот еще почитай...
как посчитать количество строк
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2011, 10:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,078

why.not?,
Вариант ....
<div style="width:200px;" id="show" ><span>очень длинный текст про что-то такое вот эдакое, ну и я не знаю что еще написать</span></div>
<script type="text/javascript">
var div = document.getElementById('show');
var data = div.childNodes[0].childNodes[0].data;
var arr = data.match(/\s*\S+/g)
div.childNodes[0].childNodes[0].data = arr[0]
var h = div.clientHeight
for (var i = 1; i < arr.length; i++) {
    div.childNodes[0].childNodes[0].data += arr[i]
    if (div.clientHeight > h) {
        arr[i] = arr[i].replace(/\s*/, '<font color="#FF0000"> тут перенос )))</font><br />')
        h = div.clientHeight
    }
}
document.write(arr.join(''))
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить слово из строки mycoding Общие вопросы Javascript 16 27.12.2013 15:06
split для поисковой строки Бобр Общие вопросы Javascript 9 30.01.2010 23:24
Отфильтровать строки в таблице по заданным критериям Hag1989 Общие вопросы Javascript 0 03.12.2009 02:06
Протокол date: (передача переноса строки) BIOHAZARD Общие вопросы Javascript 2 01.10.2009 07:31
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31