2009-06-15 3 views
0

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

Если это невозможно, мне бы хотелось найти левый и правый смещения пикселей начала и конца SPAN.

+0

Попытка понять, общая ширина = ширина линии 1 + ширина линии 2 + и т. Д.? Также, левое и правое смещение относительно (его контейнера, окна)? –

ответ

0

Вы хотите найти ширину пикселя блока текста, если это была одна строка?

Я думаю, что вы могли бы сделать (и кто-то сделает это за неправильное использование), чтобы использовать javascript для установки другого диапазона в другом div со страницы (например, style = "top: -500px;") , возьмите внутреннийHTML, перетащите его в скрытый диапазон, возьмите ширину содержащего div и затем запустите с этим.

Я предвижу вопросы кросс-браузер и душевная

<html> 
<head> 
<script> 
function getSpanWidth(spanID){ 
    sourceSpan=document.getElementById(spanID) 
    targetSpan=document.getElementById("spanmeasure") 
    targetSpan.innerHTML=sourceSpan.innerHTML 
    alert(targetSpan.offsetWidth+" "+sourceSpan.offsetWidth) 
} 
</script> 
<style> 
div{border:1px solid #cc0000;} 
</style> 
</head> 

<body onLoad="getSpanWidth('spantext')"> 

<div style="width:100000px; top:-1000px;position:absolute;"><span id="spanmeasure"></span></div> 
<div style="width:200px;"> 
<span id="spantext"> span text goes here, and then if there is lots and lots it will wrap around and be awesome! I'll put in more text to awesome it out even more... Awesome! 
</span> 
</div> 
</body> 
</html> 

это, кажется, работает на IE7 и сл. Вы получите вариацию, если вы не используете стиль сброса (потому что шрифты по умолчанию разные)

также, если вы установите дисплей: нет, то ширина будет 0.

1

Вам нужно позвонить getClientRects , Вы получите массив прямоугольников и можете добавить ширину.

QuirksMode имеет nice demo.

0
var element = document.getElementById('someSpan');  
var elementWidth = element.offsetWidth; 

Не знаю, действительно ли это то, о чем вы действительно спрашиваете, но это даст вам ширину пролета.

Редактировать: прочитав свой вопрос еще 3 раза, я уверен, что это не то, о чем вы просите.

1

HI, Я думаю, вы можете добиться этого с помощью getBoundingClientRect функцию.

var leftPosition = yourElement.getBoundingClientRect().left; 
var rightPosition = yourElement.getBoundingClientRect().right; 
var topPosition = yourElement.getBoundingClientRect().top; 
var bottomPosition = yourElement.getBoundingClientRect().bottom; 

Я не уверен, ищете ли вы это или нет.

Смежные вопросы