Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Геометрические размеры текста.


Автор: ShurikA 21.10.2008, 01:23
Каким образом возможно (если возможно) выщетать размер текста в пикселах?

Автор: JSman 22.10.2008, 16:11
тег span: clientWidth, clientHeight

Автор: Samotnik 22.10.2008, 18:42
через getAttribute()   свойство  pixelHeight - Высота элемента в пикселях
то ?

Автор: ShurikA 23.10.2008, 09:03
JSman, 
но для этого сначало нужно вывести на экран. Имелось в виду до того.


Samotnik, 
У текста нету атрибутов...

Автор: bars80080 23.10.2008, 09:23
Цитата(ShurikA @  23.10.2008,  09:03 Найти цитируемый пост)
Samotnik, 
У текста нету атрибутов... 

зато есть у элемента, в который обёрнут этот текст.

Автор: Samotnik 23.10.2008, 12:28
Цитата

зато есть у элемента, в который обёрнут этот текст. 

bars80080,  smile 


Автор: ShurikA 23.10.2008, 13:10
bars80080, 
То есть ты предлогаешь вывести текст на страницу внутри элемента( на пример span), посмотреть расмеры, и убрать?

Добавлено через 51 секунду
Забыл упомянуть что текст и то вчём он находится генерируется в JS.

Автор: bars80080 23.10.2008, 14:13
ShurikA, вот как твоё 
Цитата(ShurikA @  23.10.2008,  13:10 Найти цитируемый пост)
предлогаешь вывести текст на страницу внутри элемента( на пример span), посмотреть расмеры, и убрать?

сочетается с вопросом: 
Цитата(ShurikA @  21.10.2008,  01:23 Найти цитируемый пост)
Каким образом возможно (если возможно) выщетать размер текста в пикселах? 

?

если нет текста, какие у него могут быть размеры? ты по определнию не можешь получить значения того, что ещё нет
ты только можешь установить значения для последующего вывода. для этого просто пишешь класс или напрямую указываешь размер, а затем выводишь с соответствующей атрибутикой текст
но ты же знаешь размер текста какой хочешь вывести?

Автор: ShurikA 23.10.2008, 14:32
Цитата(bars80080 @  23.10.2008,  13:13 Найти цитируемый пост)
но ты же знаешь размер текста какой хочешь вывести? 

нет smile
Дело в том что я пытаюсь сделать диалодовое "окно/сообщение" не зная зарание какой будет текст.

Автор: bars80080 23.10.2008, 20:23
воооооот, и каким же образом можно высчитать размер того, чего ты не знаешь заранее?


зачем вообще ломать голову такими премудростями? пусть окно растягивается при больших объёмах текста, или если уж важен размер окна, пусть появляется полоса прокрутки

Автор: Michael.de 23.10.2008, 20:28
Цитата(bars80080 @ 23.10.2008,  09:23)
Цитата(ShurikA @  23.10.2008,  09:03 Найти цитируемый пост)
Samotnik, 
У текста нету атрибутов... 

зато есть у элемента, в который обёрнут этот текст.
Не всегда. Можно вывести текст с помощью <div> без атрибутов, но у него будут размеры по default-у. Знать бы, как браузер их считает smile

Кстати, FF и IE по разному считают кол-во атрибутов smile  :
Код

<html>
<head>
<script type="text/javascript">
function show(obj){
 var i, print='', len=obj.attributes.length;
 alert('style: '+obj.getAttribute('style')+'\n'+obj+' has '+len+' attributes.');
 for (var i=0; i<len; i++){
  i%4 ? print+=', \t' : print+='\n';
  print+=obj.attributes[i].name+' = '+obj.attributes[i].value;
 }
 alert(print);
}
</script>
</head>
<div onclick='show(this);' title='click me' style='width:100px;height:100px;background-color:#DDE'>Sample 1</div>
<div onclick='show(this);' title='click me'>Sample 2</div>
</body>
</html>
т.е. FF выдаёт только задействованные, а IE - все.

Автор: ShurikA 23.10.2008, 23:52
bars80080, 
Цель такова:
Для того хто бы создать диалоговое окно в него передаётся текст. В свази с текстом и типом нужного диалога строится сам диалог. 
Можно былобы просто дать ему растягиватся и всё, но он должен быть отцентрализовал в браузере; а для этого не плохо бы знать размеры самого дива. 
И кстати на тему тега "span": он сработает только если текст в одну строку. так как <br> внутри неги игнорируется.

Автор: JSman 24.10.2008, 16:31
используй тег pre с display:none

Добавлено через 1 минуту и 17 секунд
ну и поставь margin:0px; padding:0px и прочие стилевые штучки

Автор: ksnk 24.10.2008, 22:30
JSman, Не получится... Не везде, во всяком случае! 
А вот с vizibility:hidden - действительно везде (хотя, вроде какая-то Опера глючила, не помню уже точно...)

Автор: SelenIT 24.10.2008, 23:34
Можно еще решить проблему по-вебдванольному: не можем решить проблему в зародыше - обыгрываем ее и подаем как фичу smile.

Добавим к этому "диалоговому окну" эффектную анимацию развертывания от некоторого дефолтного малого размера до "боевого положения". Тогда то, что какое-то время текст виден на экране не целиком (будет скрыт за overflow:hidden), не будет выглядеть неестественно. А размеры его (они же - окончательные размеры "окна") мы за это время как раз преспокойненько и снимем...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)