一直以来,我都在开发一款分辨率为800x480(流行手机分辨率)的应用程序。
我的画布HTML:
<canvas id="main" width="800" height="480">
现在,为了使其全屏显示其他分辨率,我在调整大小事件后执行以下操作:
$('#main').css('height', window.innerHeight);
$('#main').css('width', window.innerWidth);
这是可行的,但问题是我不能以这种方式保持纵横比。800x480是4:3,但是如果我在5:3的手机上运行这个应用程序,有些东西(尤其是圆圈)看起来会被拉伸。
有没有什么方法可以让它在所有分辨率下看起来都很好,而不必为每个纵横比创建一组独特的图像和代码?
您可以将@media用于不同的分辨率,例如平板电脑和手机
@media only screen and (max-device-width : 640px) {
/* Styles */
}
CSS属性宽度
和高度
拉伸画布,为了缩放电路板,您必须使用. attr
而不是. css
,这将起作用,但是,需要注意的是:
如果你想让画布在手机上看起来也很完美,你必须注意窗口。devicePixelRatio
。
MDN:
devicePixelRatio属性返回当前显示中物理像素与设备无关像素之间的比率。
这是什么意思?它意味着一个设备在一个物理像素中显示多少像素。
如果设备的像素比为2,则表示在单个物理像素中绘制两个图形像素。
为了使画布看起来完美,您必须执行以下技巧:
将画布的宽度和高度设置为所需的量乘以devicePixelRatio,即
$('canvas').attr({
'width': window.innerWidth*devicePixelRatio,
'height': window.innerHeight*devicePixelRatio
});
然后,使用CSS缩小画布:
$('canvas').css({
'width': window.innerWidth + 'px',
'height': window.innerHeight + 'px'
});
它似乎innerWidth
和innerHeight
一开始是不正确的,我试图包装代码在100毫秒setTimeout和它的工作,我猜你可以减少延迟到10毫秒左右,测试它。
小提琴:http://jsfiddle.net/mdibaiee/7o4tLr4L/
要在手机上进行测试,请执行以下操作:http://fiddle.jshell.net/mdibaiee/7o4tLr4L/show/
问题内容: 我正在尝试使用javascript和canvas元素在客户端创建缩略图,但是当我缩小图像时,它看起来很糟糕。看起来好像是在Photoshop中缩小了尺寸,将重采样设置为“最近的邻居”而不是Bicubic。我知道有可能使它看起来正确,因为该站点也可以使用画布来完成它。我已经尝试使用与[[Source]]链接中所示相同的代码,但是看起来仍然很糟糕。是否缺少我需要的设置,需要设置的设置? 编
问题内容: 如何自动缩放HTML5 元素以适合页面? 例如,我可以通过将和属性设置为100%来缩放,但是不会缩放吗? 问题答案: 我相信我已经找到了一个优雅的解决方案: JavaScript CSS 到目前为止,对我没有太大的负面性能影响。
我正在使用three.js将webgl嵌入到liferay portlet中。我希望当我对页面布局进行更改以影响portlet大小时,能够让呈现器调整图像(canvas元素)的大小。因此,基本上,无论何时调整portlet的大小,我都希望能够通过三个.js调用来调整画布的大小。js有一个renderer对象,我可以通过它设置大小。问题是获取portlet的宽度。有没有一种方法可以捕获重绘事件并获取
我使用html5画布元素在浏览器中调整图像大小。原来质量很低。我发现:当缩放 时禁用插值,但这无助于提高质量。 下面是我的css和js代码,以及用Photoshop缩放和在画布API中缩放的图像。 当在浏览器中缩放图像时,我必须做什么来获得最佳质量? JS: 使用Photoshop调整图像大小: 在画布上调整了图像大小: 下面是我使用2步缩小尺寸的结果: 下面是我使用三步缩小尺寸的结果: 下面是如
我有一个问题已经部分解决了,但我很好奇另一个(更好的)解决方法…我想要一个画布,什么填充整个窗口,并调整自己的大小,如果窗口的大小。 根据这个:https://dlemmermann.wordpress.com/2014/04/10/javafx-tip-1-resizable-canvas/和这个:如何在JavaFX中使canvas可调整大小?我已创建(复制)类: 并将以下内容放入viewfie
请看下面的P5代码 这个小应用程序的目的是在画布上拖放图像,根据“上传”图像的宽度和高度改变其大小。 使用:成功加载图像(至少显示图像)后,我将其宽度和高度分配给变量和。接着是画布大小的变化。。。这会导致一个错误,画布的大小与上传的图像相同(在上选中),但不显示任何内容。 使用:当禁用上的画布大小更改并单击画布时,调整大小会完美地显示图像。 应用程序需要在不点击的情况下工作,在删除图像后应该自动更