设置canvas元素的宽高的奇妙(jiujie)发现

大家都知道设置一块画布的大小

我们可以这样:

<canvas id="canvas" width="600" height="300">

  
</canvas>

也可以通过css进行设置

#canvas{

  width:600px;

  height:300px;

}

我这样写:

效果是这样:

可当我在css上也写上同样的尺寸并把canvas元素行内宽高去掉的时候。。。。。

hellow变的贼大。。明明都是一样的尺寸。

好吧,其实:

canvas元素有两套尺寸,一个是元素自身的尺寸,一个是绘图表面的尺寸。

设置canvas标签行内的宽高时是同时修改了元素自身的尺寸和绘图表面的尺寸。但是css设置的宽高是针对元素的尺寸的,并没有影响到绘图表面的尺寸。

所以当我只设置了css的元素宽高时,绘图宽高还是不会变,是默认的300*150,浏览器就会把绘图表面拉伸到和元素宽高一样的尺寸。然后就放大了。

我这样来:

结果是怎样?

行内元素优先级大,所以元素自身尺寸和绘图表面都是300*150?还是元素自身尺寸是600*300,绘图表面也是600*300?

不是说行内宽高会同时设置元素尺寸和绘图表面的大小,那他们应该都是300*150。。

额。。结果

元素尺寸是600*300,绘图表面由300*150缩放成600*300,

我理解应该是绘图表面设置成了300*150,元素尺寸是根据css设置的600*300,浏览器缩放了绘图表面,让他和元素尺寸对齐。就如上图。

于是:

讲道理应该是绘图表面设置成600*300,元素尺寸设置成300*150

是这样的。。。

总结就是:宽高还是在元素行内设置的好。

时间: 2024-12-06 12:53:27

设置canvas元素的宽高的奇妙(jiujie)发现的相关文章

如何获取设置display:none元素及子元素的宽高

由于元素设置了display:none时,页面便不会对其渲染,导致无法获取其元素的宽高.目前一般的做法都是先对其设置display:block,拿到数据再设置其为display:none.如此便可以了 代码 如何获取 id="ul" 元素的宽高??? html <section class="section none"> <div> <ul id="ul"> <li>第 <span class

jquery获取元素各种宽高及页面宽高总结

window.onload=function(){ var a = $("#div").width(),//width()返回元素的宽高,不包括padding/border/margin b = $("#div").innerWidth(),//innerWidth()返回元素的宽高 + padding c = $("#div").outerWidth(),//outerWidth()返回元素的宽高 + padding + border d =

隐藏元素的宽高无法通过原生js获取的问题

1.起源:移动app项目中,页面加载时需要加载国家下拉列表,将隐藏的透明浮层和一个显示加载过程中的框 显示出来,隐藏的透明浮层设置宽高都是100%即可,而这个加载提示框需要先得出它的宽高,然后再根据页面的宽高计算它的绝对定位的left和top 2.用js获取该元素的宽高,结果都是0,该元素的css代码如下,因为display:none隐藏元素不占位置,所以宽高都为0,而用jQuery$("#loadImg").height()能获取到,通过网上查资料,是说jquery的这种获取方式是通

块级元素和内联元素的宽高是如何确定的

在刚接触CSS的时候,每次给元素添加样式,都习惯性的写上宽是多少,高是多少,为自己挖坑无数,还暗自抱怨说CSS好烦,不过它真的是好烦,脾气很怪. 好,言归正传.在讨论元素的宽高是如何确定的之前,我们先明确一下文档流的概念:对于内联元素,是从左到右排列的,当宽度不够时换行:对于块级元素,是从上到下排列的,每一个元素都另起一行. 一.内联元素宽高的确定 宽度:不受width的限制,有文字内容决定的,padding 和 margin 可以改变宽度. 高度:不受height的限制,padding 和ma

jquery获取元素各种宽高及页面宽高

如何使用jquery来获取网页里各种高度? 示例如下: 1 $(document).ready(function(){ 2 var divWidth = $("#div").width(),//width()返回元素的宽高,不包括padding/border/margin 3 divInnerWidth = $("#div").innerWidth(),//innerWidth()返回元素的宽高 + padding 4 divOuterWidth = $("

android PercentRelativeLayout 支持百分比来设置控件的宽高

Android 最终官方支持按百分比来设置控件的宽高了. 我们先来看看效果:       看一下布局: PercentRelativeLayout <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

canvas画布的宽高应写在&lt;canvas&gt;标签里

以前用canvas画图时,都是直接在canvas标签里直接写上宽高,没有问题,但也没有探究过为什么宽高要直接写在canvas标签里,因为各个资料的例子上都是这么写的.今天王sir提出了一个问题:如果把宽高写在<style>里,看看会有什么不同.自己试了以下,果然有问题. 先看一下代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canva

如何设置a标签的宽高,如何使a标签的文字垂直居中

通常情况下a标签是没有宽高的,设置 width 和 height 没有作用. 若要使用 width 和 height,需要把a标签转为块级元素,即:display:block|inline-block. 设置了宽高后,如何使文字居中呢? 设置 line-height 和 height 相等,则垂直居中.

CSS中定位和浮动对行内元素的宽高的影响

行内元素的大小是由元素里面的内容撑开的宽高决定的,就算在css中对行内元素设置width,height.行内元素也会忽略宽高的设置. 但是当行内元素使用position:absolute或者position:fixed或者使用float属性时,width和height的设置能起作用. 因为在以上三种情况下,行内元素的display从inline变为block <style> span{ background-color:red; width:100px; height:100px; float