闲聊js5: 创建一个演示用的渲染库3(尺寸这些事)

本篇主要关注css尺寸和元素尺寸
通过两个Demo实验,我们:
解决了一个问题: 由谁决定元素的显示大小
提出另一个问题: 为什么会变形?


1. 通过一个实验了解canvas元素尺寸与css尺寸之间的关系:

1. 没有指定尺寸: (红色) 
    <canvas  style="border: 1px solid red">

2. 指定元素尺寸不指定css尺寸(绿色) : 
    <canvas width="200" height="400" style="border: 1px solid green">

3. 同时指定元素尺寸和css尺寸(蓝色): 
   <canvas style="border: 1px solid blue;width:150px;height:150px" width="200" height="400"></canvas>
canvas_size_demo.png

结论(chrome/firefox/ie11/edge/opera):

显示结果 elem size css size
red: [300,150] no no
green: elem size决定 yes no
blue: 由css size决定 yes yes

2. 第二个实验:

先强调如下要点:

  • css 的width/height 必须带px/cm等单位
  • 元素的width/height 的单位只能是px,所以可以不写单位

测试代码如下(注意:只指定了css尺寸,没指定elem尺寸):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>随风而行之青衫磊落险峰行JSDemo-RenderSurface</title>
    <script src="BLFES6Lib.js"></script>
</head>

<body>

    <canvas id="myCanvas" style="border: 1px solid blue;width:300px;height:500px">你的浏览器还不支持哦</canvas>

    <script>
        "use strict";
        let canvas = document.getElementById("myCanvas");
        let context = canvas.getContext('2d');
        let render = new BLFRender(context);
        let rect = new BLFRectSprite();
        rect.render(render);

        alert("1. elm size = [" + canvas.width + "," + canvas.height + "]");
        alert("2. css size = [" + canvas.style.width + "," + canvas.style.height + "]");
    </script>
</body>

</html>

你会发现如下事实:


严重形变.png
  • 没有指定elem size,elm size 缺省值= [300,150] (上表结论,此处证实)
  • 元素显示的区域大小由css size决定,显示区=[300px,500px]
  • css size必须带单位,而elem size不用带单位,因为一定是像素表示(大家可以做个实验,修改elem size.width = 100px/cm后,alert的结果和显示的效果可以证实: 不管带单位与否,或者单位是px还是cm...,dom都解释为像素表示!!!)
  • 渲染内容发生了严重的形变,这个才是我们需要了解的重点内容!!!

通过上述两个实验,我们:

解决了一个问题: 由谁决定元素的显示大小!
提出另一个问题: 为什么会变形?

下一篇,就了解为什么会变形以及尽量避免这个问题。涉及图形学背后的一些原理,还是蛮好玩的(例如渲染表面,后备缓冲区,位块传输等等)。

如果感觉有兴趣,请毫不犹豫的给我点个赞.

忍不住show一下我的超帅装备:

两树莓派套装.jpg

1. 树莓派3B操作系统的安装(视频)

我录的树莓派安装视频,有兴趣的同学可以看看。很好玩的东西。我主要用来玩linux编程,也玩玩gpio编程。以后会多拍点树莓派视频。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容