2016-12-08 3 views
1

codepen testcase hereを参照してください。複数のスパンをそれぞれのラインごとに複数のラインに集中させるにはどうすればよいですか?

私は異なるサイズの複数のスパン(または他のインライン要素)を持っています(ペン内では、ランダムなサイズのスパンをカンマで区切ってランダムに切り詰めています。 )、それらはすべてテキストのベースラインに揃えられます。私はそれらを1つの段落にとどまらず、各行の中央に揃えたいと考えています。

あなたが見ることができるように、私はflexboxを使用してみましたが、それは、マルチラインが自分の行にまたがって配置されます:

{ 
    'display': 'flex', 
    'flex-wrap': 'wrap', 
    'justify-content': 'flex-start', 
    'align-items': 'center' 
} 

はどのようにして、単一の段落を維持することができますが、個々のライン上のすべての単語は、垂直方向の中央?

(なぜ私はこれが必要ですか:テキストと小さな画像を混在させたいのですが、実際には常に同じサイズですが、画像(または動的にレンダリングされるコンテンツ)の高さはわずかです。

+2

質問は本当に混乱しています。 '、'区切り記号に基づいてあなたの段落を分割するJSを書いて、あなたはそれが一つの段落にとどまると同時に言うでしょうか?それを悪化させるためには、フォントサイズをMath.random()* 3 + 1 + 'em''と「最終行」としています。 –

+1

彼が言及した「ボトムライン」はおそらく、テキストがデフォルトで整列されるベースラインです。スパンの高さが異なると特に顕著です。したがって、彼の例はこの行動をよく示しています。 [vertical-align](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align)を参照してください –

+0

@NikhilNanjappa私は少し明確にしました。「複数のスパンインライン要素)(ペンでは、テストケースを素早く生成するために、ランダムサイズのスパンをカンマ(、)で区切った長いランダムな段落です)、 " - JSを使って謝っています'CSS'問題のテストケースを生成する! :) - 私のひどく言葉になる質問の説明に役立つ@Ciunkosにも感謝します! – Domi

答えて

1

デフォルトでvertical-align: middle;を使用することを検討してください。これはベースラインに合わせて調整されます。

enter image description here

const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecatcupi, datatnonproidentsuntinculpaquiofficiadeseruntmollit animidestlaborum."; 
 

 
// chop up text into random pieces 
 
// of random size 
 
words = text.split(',').map(w => { 
 
    const $el = $('<span>' + w + ' </span>'); 
 
    return $el.css({ 
 
    'font-size': Math.random()*3 + 1 + 'em', 
 
    'vertical-align': 'middle' 
 
    }); 
 
}); 
 

 
$body = $(document.body); 
 
$body.append(words);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

私はそれを前に試してみましたが、それは何らかの奇妙な理由でうまくいかなかったのです。もう一度試してみてすぐにお知らせします!ありがとうございました! :) – Domi

+0

これは私の以前の質問に技術的には答えましたが、私の質問は完全ではなかったという悲しい結論に達しました:実際には 'inline'と' inline-block'要素が混在しています'svg')。どのようにこれを解決するための任意のアイデアですか? [Testcase here](http://codepen.io/Domiii/pen/LbBQmy?editors=1000)。 – Domi

関連する問題