2013-06-20 1 views
7

저는 이것이 항상보고 싶어하기 때문에 기본적으로 궁금합니다. 해결책이 있는지를 아는 사람은 아무도 없습니다.블록 요소는 텍스트가 두 줄로 묶일 때 전체 너비를 사용합니다.

일반적으로 배경이있는 멋진 찾고 단추가 표시 블록 또는 인라인 블록입니다.

문제는 다음과 같습니다. 특정 너비의 div 안에 버튼이있어 160px라고 말하면서 내부에 표시 블록이나 인라인 블록이있는 경우, 캔트 내부의 텍스트가 모두 한 줄에 들어간다면 그것은 당신이 기대할 것 인 것처럼 2로 감싸고 있지만 이제는 더 이상 정말로 div의 전체 너비를 차지할 필요가없는 두 줄에 있습니다. 나는 정말로 이런 일이 일어난다는 것에 놀랍지는 않지만 누군가가 css 나 이것을 고치는 JS 해결책을 알고 있는지 궁금해하고 있었다.

코드 :

<div style="width: 160px; padding: 10px; background: blue;"> 
    <a href="#" style="background: red; display: block;">Test with a longwrappingword</a> 
</div> 

JSFiddle here

+0

그냥 CSS로 할 수있는 사람에게 보너스 포인트! – FreddyBushBoy

답변

0

이 무슨 뜻인가? 앵커에 width 속성을 추가했습니다.

<div style="width: 160px; padding: 10px; background: blue;"> 
    <a href="#" style="background: red; display: block; width: 100px;">Test with a longwrappingword</a> 
</div> 
+0

그것은 작동하지만 동적 인 것이므로 텍스트 길이에 관계없이 작동합니다. – FreddyBushBoy

1

이게 무슨 뜻이야?

http://jsfiddle.net/UPxZm/

<div style="width: 160px; padding: 10px; background: blue;"> 
    <a id="block" href="#" style="background: red; display: block;">Test with a longwrappingword</a> 
</div> 

<script> 
var $block = $('#block'); 
var orig = $block.html(); 
var index = orig.lastIndexOf(' ') || -1; 
var longword = orig.substring(index + 1, orig.length); 

$block.html(orig + longword); 
var wanted_width = $block[0].scrollWidth/2; 
$block.html(orig); 
$block.width(wanted_width); 
</script> 
+0

좋은 한 Pere, 그 트릭을! – FreddyBushBoy

+0

이상적에서 멀리 떨어져 있지만, 서투른 방법이 있어야합니다. 자바 스크립트가 없으면 나는 그렇게 생각하지 않습니다. – Pere

2

당신을 위해 this 사용할 수 있습니까?

<div style="width: 160px; padding: 10px; background: blue;"> 
    <a href="#" style="background: red; display: table; width: 1%">Test with a longwrappingword</a> 
</div> 
<span style="padding-left:130px">^ Where the element COULD end if it wanted to</span> 
+0

아직 완벽하지는 않습니다. 텍스트가 두 줄로 나뉘어 지거나 이상하게. 마치 주변 div가 넓어 지거나 너비가 정의되지 않은 것과 같습니다. [예] (http://jsfiddle.net/Sb6es/5/) – FreddyBushBoy