2017-06-15 1 views
3

line-heightがfont-sizeの1.1倍より大きい場合、テキストは行内で垂直方向にセンタリングされているようです。代わりに垂直に配置することはできますか?コンテナの先頭にスパンを合わせる

この例では

p { 
 
    background-color: pink; 
 
    font-size: 20px; 
 
    line-height: 40px 
 
} 
 

 
span { 
 
    background-color: lightblue; 
 
}
<p> 
 
    <span>Hello World</span> Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World 
 
</p>

私はテキストがピンク色のボックスの上に直面して突き合わせたいです。余分なピンクのスペースは、各行の上下に分割するのではなく、青の下になります。青色のボックスは、ピンクの上に突き当たるでしょう。私はvertical-align: topを見つけたり、line-heightを追加して助けてください。

パディングを使用して(テキストが非常に長くなる可能性があることを示すために編集された。)

+0

あなたの代わりにパディングやマージンの行の高さを使用している任意の理由は? – j08691

+0

はい、実際の場合、非スパンテキストは複数の文章長です。 – JPM

答えて

1

範囲 にdisplay: inline-block;を追加できます。

p { 
 
    background-color: pink; 
 
    font-size: 20px; 
 
    line-height: 40px 
 
} 
 

 
span { 
 
    background-color: lightblue; 
 
    display: inline-block; 
 
}
<p> 
 
    <span>Hello World</span> Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World 
 
</p>

+0

これは私が探しているもののようです。それは単にスパンの高さを広げます。残念ながら、これはインラインブロック自体が私の場合に起こる可能性のある行にまたがる場合には壊れます。 (各単語のスパンを設定することはここでは実用的ではありません)。高さを設定するだけです。 – JPM

+0

おっと、私はこの仕事をする方法を見つけました。私の場合は、インラインブロックラップを避ける方法を見つけました。ありがとう、@ j-printemps! – JPM

1

ソリューション:ダニエルの答えは異なり

p { 
 
    background-color: pink; 
 
    font-size: 20px; 
 
    padding: 0 0 20px 0; 
 
    /* padding for top,right,bot,left */ 
 
} 
 

 
span { 
 
    background-color: lightblue; 
 
}
<p> 
 
    <span>Hello World</span> Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World 
 
</p>

+0

@ JPMこれはあなたのために働いていない?あなたは何が必要ですか? –

2

が、私は、これはあまりにもあなたの要件を満たしていると思います?まあ

p { 
 
    background-color: pink; 
 
    font-size: 20px; 
 
    vertical-align: top; 
 
    height: 40px; 
 
} 
 

 
span { 
 
    background-color: lightblue; 
 
}
<p> 
 
    <span>Hello World</span> Hello World 
 
</p>

、あなたのテキストが複数行ある場合、私はこの解決策を考えることができます:行の高さを保つために

$("#fontsize-input").on("input",() => { 
 
    $("p").css("font-size",$("#fontsize-input").val()+"px"); 
 
});
p { 
 
    background-color: pink; 
 
    font-size: 25px; 
 
    line-height: 2em; 
 
} 
 

 
span { 
 
    position: relative; 
 
    top: calc(-0.45em + 1px); 
 
} 
 

 
.highlight { 
 
    background-color: lightblue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="range" min="10" max="40" id="fontsize-input"/> 
 
<p> 
 
    <span class="highlight">Hello World</span> <span>Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World</span> 
 
</p>

+0

良いこと、+1アップ –

+0

おっと。これは動作しません。私は、非スパンテキストが非常に長くなる可能性があることに留意すべきでした。私は質問を編集しました。 – JPM

+0

@JPMどういう意味ですか?あなたが望むものが長すぎるときは?ラップまたはオーバーフロー? –

関連する問題