Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как посчитать общую ширину текста в блоке (https://javascript.ru/forum/dom-window/44593-kak-poschitat-obshhuyu-shirinu-teksta-v-bloke.html)

imediasun1 25.01.2014 14:39

как посчитать общую ширину текста в блоке
 
Как посчитать общую ширину текста в блоке с классом submenu на jquery?
<div class="submenu">
 <a href="/main/pages/materials/">Статьи</a>
 <a href="/main/pages/materials/">Архив</a>
</div>

avrudoi 25.01.2014 16:06

Ты можешь использовать WEBGL для текста, это красивее и понятнее.
var menu_text = new THREE.TextGeometry( menu, {

size: 14,
height: 5,
curveSegments: 2,
font: "arial"
});
menu_text.computeBoundingBox();
var textMaterial = new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, overdraw: true } );
var text = new THREE.Mesh( menu_text, textMaterial );
text.rotation.y = 180 * Math.PI/180;
text.position.set(10* Math.cos(text.rotation.y), 90, -10* Math.sin(text.rotation.y));

чем мог тем помог

imediasun1 25.01.2014 16:33

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

avrudoi 25.01.2014 17:56

может это поможет http://www.wisdomweb.ru/HTML5d/html5_input.php

imediasun1 25.01.2014 19:06

Друзья при чем здесь WEBGL, мне просто надо ответ на вопрос

alexan0308 27.01.2014 12:07

А на javascript ответ не подойдет?

hfts_rider 27.01.2014 13:45

Если блоку(submenu) задать float, то можно узнавать его ширину следующим образом:
$('.submenu').width()


---

<!DOCTYPE html>
<html>
<head>
<title>[]</title>
<meta charset="utf-8">
<style>
.submenu{float:left}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
	alert($('.submenu').width());
});
</script>
</head>
<body>
<div class="submenu">
		<a href="#">Текст в первом блоке</a>
		<a href="#">Еще текст</a>
</div>
</body>
</html>

imediasun1 28.01.2014 14:42

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

ksa 28.01.2014 16:01

Цитата:

Сообщение от imediasun1
нужно посчитать именну общую ширину текста в ссылках?

Пройдись по тем ссылкам... Как узнать ширину написал hfts_rider...

рони 28.01.2014 16:40

imediasun1,
:-/
<!DOCTYPE html>
<html>
<head>
<title>[]</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function () {
    var span = $('<span/>', {
        'html': $('.submenu a').text()
    })
    document.body.appendChild(span[0]);
    var span_width = span.width();
    document.body.removeChild(span[0]);
    var width = 0;
    $('.submenu a').each(function (indx, element) {
        width += $(element).width();
    });
    alert([$('.submenu').width(), span_width, width]);
});
</script>
</head>
<body>
<div class="submenu">
		<a href="#">Текст в первом блоке</a>
		<a href="#">Еще текст</a>
</div>
</body>
</html>

imediasun1 30.01.2014 14:51

А если нужно посчитать только в том блоке на родитель которого навели мышь, а то ваш код подсчитывает во всем документе в идентичных классах, есть некоторые вопросы относительно этого
$('.menu').mouseover(function(){
$(this).find('.submenu_cont').css('display','inline-block')
    var span = $('<span/>', {
	        'html': $(this).find('.submenu_links li a').text()
	    })
	    ?document.body.appendChild(span[0]);
	    var span_width = span.width();
	    ?document.body.removeChild(span[0]);
	    var width = 0;
	    $(this).find('.submenu_links li a').each(function (indx, element) {
		    elem_width = ?$(element).width();
	        width += elem_width+45;
			
	    });
$(this).find('.timeline').css('width',width+90);

В итоге я присваиваю классу timeline общую ширину всех ссылок на родитель которых навели мышь

imediasun1 30.01.2014 15:03

Сейчас подсчитывает ширину ссылок в блоках с классом submenu_links во всем документе


Часовой пояс GMT +3, время: 15:11.