2009-07-01 13 views
23

Şu anda bazı iPhone (Safari/WebKit) web uygulaması geliştirmelerine katılıyorum ve ayarlanmış yükseklikteki öğelere sahip olmak istiyorum başlık metni ve gövde metni ile her zaman 3 satır gösteriliyor. Başlık metni kısasa, 2 satır gövde metni gösterilmelidir. Başlık metni çok uzunsa, en fazla 2 satır almalı ve gövde metni için 1 satır bırakmalıdır. Metin kesildiğinde, son karakter olarak bir elips göstermelidir.CSS metin taşması kullanarak ayarlanan yüksekliğin bir öğesindeki metin satırlarının sayısını değiştirmek için

İhtiyacım olan her şeyi yapan, ancak üç nokta görüntülenmediği için aşağıdakileri buldum. Son gereksinimi karşılamak için bu çözümü elde etmenin bir yolu var mı?

Code below, as rendered by Safari http://segdeha.com/assets/imgs/stack-ellipsis.png

bu soruna
<!DOCTYPE HTML> 
<html> 
    <head> 
     <style type="text/css"> 

     #container { 
      width: 100px; 
     } 

     p { 
/*   white-space: nowrap; */ 
      font-family: Helvetica; 
      font-size: 12px; 
      line-height: 16px; 
      text-overflow: ellipsis; 
      max-height: 48px; 
      overflow: hidden; 

      border: solid 1px red; 
     } 

     strong { 
/*   white-space: nowrap; */ 
      font-size: 16px; 
      display: block; 
      text-overflow: ellipsis; 
      max-height: 32px; 
      overflow: hidden; 
     } 

     </style> 
    </head> 
    <body> 
     <div id="container"> 
      <p> 
       <strong>Short title</strong> 
       This is the text description of the item. 
       It can flow onto more than 2 lines, too, 
       if there is room for it, but otherwise 
       should only show 1 line. 
      </p> 
      <p> 
       <strong>Long title that will span more 
       than 2 lines when we're done.</strong> 
       This is the text description of the item. 
       It can flow onto more than 2 lines, too, 
       if there is room for it, but otherwise 
       should only show 1 line. 
      </p> 
     </div> 
    </body> 
</html> 
+2

Safari'de http://iphone.facebook.com adresine baktım (iPhone kullanıcı aracısının parolasını) ve bu sunucu tarafına benziyor gibi görünüyor. Aynı kadere mahkum olduğumu sanmıyorum. –

+0

Geçmişte benzer bir şey yapmak istedim. Çizgileri bölme ve elips sunucu tarafını eklemeyi denedim. Bu, metnin ne kadar geniş ve uzun olacağını (piksel olarak) bilmemi gerektirdi. Sonunda hayal kırıklığına uğradım. –

+1

JavaScript dışı mı? – peteorpeter

cevap

9

bir çözüm üç nokta eklemek için metin yerine karartmak etmektir. Bu sizin için kabul edilebilir bir alternatifse, lütfen okuyun.

Hat yüksekliği 16px'te sabitlendiğinden, saydamdan ilgili arka plan rengine giden ve paragrafın sağ alt köşesine konumlanan bir degrade (veya bir css3 gradyanı kullanın) içeren basit bir png görüntüsü kullanabilirsiniz.

Aynı durum, 16px degrade görüntüsünü üst konumdan konumlandırırsanız, yalnızca başlık iki satıra ulaştığında görünecek şekilde (gizli taşma sayesinde) başlık için de çalışır.

3

Yazı tipi boyutunu belirtebilirsiniz bu alanda (font-size) içinde kullanılacak , (şimdi font-size boyutta birçok çizgiler sığabilecek biliyorum çünkü) daha sonra height ve alan width giderebilir ve overflow özelliğini kullanın (değil text-overflow)

1

Bunu deneyin: jsfiddle.net/7BXtr/. Sadece CSS (JavaScript yok) kullanır.

Temel olarak, metin overflow: hidden uygulanmış ve ... sonra yerleştirilir.

Downsides:

  • bir üç nokta her zaman kısa olsa bile, açıklama sonunda görünecektir.
  • Elipsler her zaman sağdaki aynı konumlarda görünür.
+0

Sorun, metin çok kısa olsa bile, elipslerin her zaman eklenmesidir. – leopic

+0

@LEOPiC Biliyorum, sadece bir neredeyse orada almak için hacky yolu. –

0

Bunun çok geç bir yanıt olduğunu biliyorum. Ama aynı problemi arayanlar için: Magnus Magnusson cevabının üstüne çıkıyorum.

Yarı saydam bir gölge oluşturmak için, iç gölge efekti oluşturmak için kullanılabilecek kutu gölgesi özelliğini kullanabilirsiniz.

İlgili konular