2016-10-18 4 views
1

このHTMLは、要素幅を要素に合わせることができない場合、要素のインライン化を行い、タイトルテキストに省略記号を付けようとしているところです。テキストに省略記号が付いたインライン要素

質問: タイトルテキストの要素をインラインおよび省略記号にするにはどうすればよいですか?

十分に広いページのレイアウトは次のようになります(「i」がクリック可能なアイコンがあると真ん中がテキストである場合)ページ幅が応答しに狭すぎると

+---+----------------------+---+ 
| i | Title text   | i | 
+---+----------------------+---+ 

要素が含まれている、私はタイトルが省略記号を持っていると、結果は次のようになりたい:

+---+--------------+---+ 
| i | Title t... | i | 
+---+--------------+---+ 

アイコンがまだ表示されていると何が新しい行に折り返さないように。

現在のところ、それはラップとテキストは、このような省略記号を持っています

+---+ 
| i | 
+---+--------+ 
| Title t... | 
+---+--------+ 
| i | 
+---+ 

コードが見える-XSクラスはdisplay: blockを持っていることを、この

.ellipsis{ 
 
     white-space: nowrap; 
 
     overflow: hidden; 
 
     text-overflow: ellipsis; 
 
    } 
 

 
    .visible-xs { 
 
     display: block; 
 
    }
<div class="col-md-6"> 
 
     <a class="visible-xs"> 
 
      <i class="fa fa-indent"></i> 
 
     </a> 
 
     <div class="ellipsis"> 
 
      Title text 
 
     </div> 
 
     <a> 
 
      <i class="fa fa-pencil"></i> 
 
     </a> 
 
    </div>

ノートのように見えますページが十分に広い場合、要素を削除するにはこのクラスが必要です。それは応答性に優れているからです。

答えて

2

flexbox場合はオプションだけでcol-md-6要素にこれを追加している:

.myclass { 
    display: flex; 
    /* justify-content: space-between; */ 
    justify-content: flex-start; /* EDIT */ 
} 

乾杯!

.ellipsis{ 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
} 
 
.visible-xs { 
 
    display: block; 
 
} 
 

 
.myclass { 
 
    display: flex; 
 
    /* justify-content: space-between; */ 
 
    justify-content: flex-start; /* EDIT */ 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> 
 
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"> 
 

 
<div class="col-md-6 myclass"> 
 
    <a class="visible-xs"> 
 
    <i class="fa fa-indent"></i> 
 
    </a> 
 
    <div class="ellipsis"> 
 
    Title text 
 
    </div> 
 
    <a> 
 
    <i class="fa fa-pencil"></i> 
 
    </a> 
 
</div>

+0

それはちょっと動作しますが、私は十分に明確にしていないことが欠けている。右手のアイコン(鉛筆)は、右に浮かぶのではなくテキストの最後に付ける必要があります。あなたはそれに適応することができますか?ありがとう。 – nicolaib

+0

さて、あなたはそれについて各要素の幅を知っておく必要があると思うでしょう。 'flexbox'は' space-between'を与えるときにスペースを分配します...多分 'justify-content:flex-start'はオプションです? – kukkuz

+0

うわー!そりゃ素晴らしい。 'flex-start'は魅力的に機能します。私はこれで今のところ行くつもりで、ブラウザのサポートが不足しているかどうかを調べるつもりです。ありがとう。 – nicolaib

0

text-overflow: ellipsis;が動作するには、最大幅または幅を指定する必要があります。

DEMO:

http://plnkr.co/edit/RHYtvupwLJZ7L4eCSib1?p=preview

.ellipsis { 
    width: 100px; 
    margin: 0 10px; 
} 

.ellipsis span { 
    white-space: nowrap; 
    overflow: hidden; 
    max-width: 50px; 
    text-overflow: ellipsis; 
} 

.visible-xs { 
    display: block; 
} 

a, div { 
    float: left; 
} 
<div class="col-md-6"> 
    <a class="visible-xs"> 
     ji 
    </a> 
    <div class="ellipsis"> 
     <span>Title text</span> 
    </div> 
    <a> 
     hi 
    </a> 
</div> 
+0

省略記号が正常に動作します。問題は、他の要素がインラインではなくラップすることです。要素の幅は 'class =" col-md-6 "'から来るので、既に幅があります。だから、明らかに、テキストの右側にあるアイコンが一定のスペースを占めるようにして、タイトルテキストには使用できないようにします。 – nicolaib

+0

max-widthを削除しても、動作させることはできません。最大幅はありませんが、これは操作の全体のポイントです:-)ラッピングなしで表示したいのですが、画面が狭くなったら、UIの最も重要でない部分を削除したいと思います。タイトルの終わりです。最大幅なしで何かを提案できますか?ありがとう。 – nicolaib

+0

省略記号が必要な場合は、最大幅を指定する必要があります。幅が問題の場合。上記の答えを修正して、省略記号の中に 'span'タグを追加しました。また、任意の幅で省略記号を与えることができます。スパンに最大幅を追加することができます。また、参照のためのデモを確認してください –

関連する問題