2017-12-21 32 views
0
<div style="width:100px; overflow:hidden; text-align:right;" id="pathdiv"> 

<script> 
    document.getElementById("pathdiv").innerHTML="long/path/to/file" 
</script> 

내 목표는 경로의 흥미로운 부분이 표시되도록 시작 부분이 잘리는 방식으로 비교적 좁은 div에서 오른쪽으로 정렬 된 긴 절대 경로를 표시하는 것입니다. 위의 코드는 div에 맞으면 텍스트를 오른쪽 정렬하고, 맞지 않으면 잘라내지만 불행히도 시작 부분이 아니라 끝을 잘라냅니다.div의 오른쪽에 텍스트를 정렬하려면 어떻게해야합니까? 시작 부분이 오버플로로 잘라집니다 : 숨김?

수동으로 너무 길면 문자열을 다듬을 수 있지만 어떻게하면 얼마나 많은 문자가 맞는지 (불분명 함) 계산해야합니다.

(CSS 또는 다른 방법으로) 내 목표를 달성하기위한 직접적인 방법은 무엇입니까?

+0

자바 스크립트와 정규 표현식 또는 기본 문자열 조작을 사용하여 필요한 것을자를 수 있습니다. –

+0

경로의 어떤 부분을 보여주고 싶습니까? (경로의 흥미로운 부분이 표시됩니다.) –

답변

1

<div style="width:100px; overflow:hidden; text-align:right;text-overflow:ellipsis; direction:rtl" id="pathdiv"> 
 

 
<script> 
 
    document.getElementById("pathdiv").innerHTML="long/path/to/file" 
 
</script>

추가 방향 (RTL)가 작동합니다.

+1

와우! 이것은 숨 막힐 정도로 간단하고 우아합니다. (작동하는 것은 말할 것도 없습니다.) 텍스트를 자르려면 짝수 세 개를 처음에 추가하십시오. – sbtpr

1

div 안에 span을 사용하여 position:absoluteright:0으로 만들 수 있습니다. 이 경우에는 필요한 것을 얻을 수 있습니다.

document.querySelector("#pathdiv").innerHTML = "very/very/very-long/path/to/file"
#pathdiv { 
 
    width: 100px; 
 
    overflow: hidden; 
 
    text-align: right; 
 
    display: flex; 
 
    justify-content: flex-end; 
 
    align-items: flex-end; 
 
    white-space: nowrap; 
 
    height: 20px; 
 
}
<div id="pathdiv"> 
 
</div>
: 당신이

document.querySelector("#pathdiv span").innerHTML="very/very/very-long/path/to/file"
#pathdiv { 
 
    width: 100px; 
 
    overflow: hidden; 
 
    text-align: right; 
 
    position: relative; 
 
} 
 
#pathdiv:before { 
 
content:"A"; /* Hidden character to create the needed space*/ 
 
visibility:hidden; 
 
} 
 

 
span { 
 
    position: absolute; 
 
    white-space:nowrap; /* no needed for path (content) without any spaces*/ 
 
    right: 0; 
 
    top: 0; 
 
}
<div id="pathdiv"> 
 
    <span></span> 
 
</div>
다음

다른 방법은 플렉스 사용하고 추가 기간없이되는 줄 바꿈을 방지하기 위해 컨텐츠에 공간이있을 것이다 경우

white-space:nowrap; 추가

+1

매력처럼 작동합니다. 감사합니다. 아주 정교한 대답. – sbtpr

+0

@sbtpr 관심이 있다면 anther 솔루션도 추가했습니다.) –

+0

다른 제안을 주셔서 감사합니다. 나는 너의 대답으로 많은 것을 배웠다. 죄송합니다. 승인 된 상표를 삭제하겠습니다. 계속 유지하고 싶지만, 한편으로는 내가 인정한 다른 우아한 대답이 나왔습니다. 답변에서 허용 된 표시가 삭제되었습니다. – sbtpr