我想做一个矩形画布来模拟进度条 但似乎当我将画布的宽度和高度设置为100%时,它实际上并没有像父画布那样高和宽

please see example below
http://jsfiddle.net/PQS3A/

有没有可能做非正方形的帆布呢? 我不想硬编码画布的高度和宽度,因为当在更大或更小的屏幕(包括移动设备)中查看时,它应该动态变化

推荐答案

以下是解决问题的有效示例:

http://jsfiddle.net/PQS3A/7/

您的示例有几个问题:

  1. <div>没有heightwidth属性.您需要通过CSS设置它们.
  2. 即使div的大小正确,它也使用默认的position:static,这意味着它不是任何子级的定位父级.如果希望画布的大小与div相同,则必须将div设置为position:relative(或absolutefixed).
  3. 画布上的widthheight属性指定要绘制的数据的像素数(如图像中的实际像素),并且与画布的display size分开.这些属性必须设置为整数.

上面链接的示例使用CSS来设置div大小并使其成为定位的父级.它创建一个JS函数(如下所示)以将画布设置为与其定位的父画布相同的display大小,然后调整内部的widthheight属性,使其具有与其显示相同的像素数.

var canvas = document.querySelector('canvas');
fitToContainer(canvas);

function fitToContainer(canvas){
  // Make it visually fill the positioned parent
  canvas.style.width ='100%';
  canvas.style.height='100%';
  // ...then set the internal size to match
  canvas.width  = canvas.offsetWidth;
  canvas.height = canvas.offsetHeight;
}

Html相关问答推荐

Flexbox嵌套div溢出

删除第一个列表项上的左边框

为什么这个高度为100%的页面会出现滚动条?

垂直页眉,每行只显示一个使用css的字母

有没有一种方法可以动态地从网格或Flexbox中取出HTML元素?

窗口视图之外的下拉菜单位置

尽管div高度为100%,div中的内容仍会溢出

如何使div填充父项的剩余高度

Chrome浏览器错误:上的主题验证判断https://pagead2.googlesyndication.com/失败

HTML,CSS-阻止按钮在单击时向上移动

并排放置两个 div,同时 div2 环绕 div1

如何在Rmarkdown中添加千位分隔符?

CSS Grid 布局:1 大图和 3 小图

如何在 flex 项目中忽略子元素的宽度

无法使用 flexbox 裁剪图像

在身体外部创建 tanget 45° div

将表格标题和过滤器调整到表格的顶部边缘

如何从 razor 页面打开 html 页面

基本上,我想要两列包含文本和图像,但第二列是倒置的

Select 除第一个匹配的子元素之外的第 nth-child(n)