2017-06-15 61 views
3

看來,當行高度大於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

任何原因,你正在使用的line-height,而不是填充或利潤率? – 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

這就像我在找什麼。它只是擴大了跨度的高度。不幸的是,如果內聯塊本身跨越一條線,就會發生這種情況,這在我的情況下可能會發生。 (在每個單詞上設置跨度在這裏是不實際的。)我希望設置高度:跨度工作時爲100%,但不是。 – 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你的意思是?當它太長,你想要什麼?包裝或溢出? –