2017-12-21 21 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

javascriptと正規表現のどちらか、または基本的な文字列操作を使用して、必要なものを切り捨てることができます。 –

+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

ああ!これは息を呑むほどシンプルでエレガントです。 (動作することは言うまでもありません)テキストを切り取らなければならない場合は、最初に3つのドットを追加します。 – sbtpr

1

div内のスパンを使用してposition:absoluteright:0にすることができます。この場合、必要なものを手に入れることができます。

あなたはここで改行

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;を追加するには、フレックスを使用してスパンを追加することなく、別の方法である:

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>

+1

魅力のように動作します、ありがとう。非常に精巧な答え。 – sbtpr

+0

@sbtpr興味があれば別の解決策も追加しました;) –

+0

この他の提案もありがとうございます。私はあなたの答えから多くを学んだ。申し訳ありませんが、私は本当にそれを保持したいと思いますが、その間に私は受け入れた他の非常にエレガントな答えが出てきました。 – sbtpr

関連する問題