第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

文本垂直對齊方式

1. 前言

我們前面講的 canvas 只能繪制單行文本,單行文本怎么會有垂直對齊呢?其實,這里的垂直對齊是指文本基線與單行文本的對齊,類似 CSS 中的 vertical-align概念,本小節(jié)我們就來學習一下文本的垂直對齊。

2. 垂直對齊

canvas 為我們提供了一個文字基線與文本的垂直關系設置的屬性 textBaseline,這里的基線設置和 CSS 的 vertical-align 概念很類似,也可以想象成我們學習拼音時使用的四線三格圖。在電腦和手機上,每個漢字或者字符在設計的時候都有自己的排版方式。

例如這樣:

在 canvas 中,使用了六線五格的設定,所有的文字都被限制在了“六線五格”里面,這里字母 f 除外,f 在 canvas 繪制文本中屬于一個例外。

我們把這六條線從上到下命名為:

top
hanging
middle
alphabetic
ideographic
bottom

明白了上面的,我們就來看 canvas 是怎么設置基線的。

實例演示
預覽 復制
復制成功!
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>慕課網(wǎng)Wiki</title>
    <style>
        #imooc{
            border:1px solid #ccc;
        }
    </style>
</head>
<body>
    <canvas id="imooc">您的瀏覽器不支持 HTML5 canvas 標簽</canvas>
    <script>
		const canvas = document.getElementById('imooc');
		canvas.width=400;
		canvas.height=240;
		const ctx = canvas.getContext('2d');
		
		ctx.fillStyle="#456795";
		ctx.font="20px 微軟雅黑";
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,20);
		ctx.lineTo(380,20);
		ctx.stroke();
		ctx.textBaseline="top"  //設置基線在文本頂部,文本和基線重合
		ctx.fillText("慕課Wiki textBaseline = top", 20,20)
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,60);
		ctx.lineTo(380,60);
		ctx.stroke();
		ctx.textBaseline="hanging" //設置文本懸掛在基線上,文本和基線沒有重合
		ctx.fillText("慕課Wiki textBaseline = hanging", 20,60)
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,100);
		ctx.lineTo(380,100);
		ctx.stroke();
		ctx.textBaseline="middle" //設置基線在文本中間
		ctx.fillText("慕課Wiki textBaseline = middle", 20,100)
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,140);
		ctx.lineTo(380,140);
		ctx.stroke();
		ctx.textBaseline="alphabetic" //標準的字母基線
		ctx.fillText("慕課Wiki textBaseline = alphabetic", 20,140)
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,180);
		ctx.lineTo(380,180);
		ctx.stroke();
		ctx.textBaseline="ideographic" 
		ctx.fillText("慕課Wiki textBaseline = ideographic", 20,180)
		
		ctx.beginPath()
		ctx.strokeStyle="#ccc";
		ctx.moveTo(20,220);
		ctx.lineTo(380,220);
		ctx.stroke();
		ctx.textBaseline="bottom" 
		ctx.fillText("慕課Wiki textBaseline = bottom", 20,220)
	
	</script>
<body>
</html>
運行案例 點擊 "運行案例" 可查看在線運行效果

運行結(jié)果:

這樣我們就繪制了一個文本的垂直對齊。

3. 屬性整理

本小節(jié)我們學習了 textBaseline 屬性 , 它們是 canvas 2D API 提供的設置文本基線和文本垂直對其方式的屬性。

3.1 對齊設置 textBaseline

textBaseline 說明

  • textBaseline 是 canvas 2D API 提供的設置文本基線和文本垂直對其方式的屬性。
  • 默認值: bottom。

語法:

ctx.textBaseline = value;

取值說明:

value 說明 特別說明
top 文本基線在文本塊的頂部。
hanging 文本基線是懸掛基線。
middle 文本基線在文本塊的中間。
alphabetic 文本基線是標準的字母基線。
ideographic 文字基線是表意字基線。 如果字符本身超出了 alphabetic 基線,那么 ideograhpic 基線位置在字符本身的底部。
bottom 文本基線在文本塊的底部。 與 ideographic 基線的區(qū)別在于 ideographic 基線不需要考慮下行字母。

4. 總結(jié)

本小節(jié)我們主要學習了利用 textBaseline 設定文本垂直對齊方式。