响应画布元素
Responsive canvas element
我已经创建了一个响应画布,但我很难弄清楚如何使画布内的矩形元素也响应。我需要矩形始终是画布宽度的100%,高度也需要是静态的50px。
画布Html
<div id="newCanvas" role="main">
<canvas id="respondCanvas" width="100" height="100">
Please use a different browser
</canvas>
</div>
CSS
#newCanvas {
display:block;
width:100%;
padding:50px 10%;
height:400px;
border:2px solid black;
background: #b8b894; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(#b8b894, #ebebe0); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(#b8b894, #ebebe0); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(#b8b894, #ebebe0); /* For Firefox 3.6 to 15 */
background: linear-gradient(#b8b894, #ebebe0); /* Standard syntax (must be last) */
}
Javascript
$(document).ready( function(){
//Get the canvas & context
var c = $('#respondCanvas');
var ct = c.get(0).getContext('2d');
var container = $(c).parent();
//Run function when browser resizes
$(window).resize( respondCanvas );
function respondCanvas(){
c.attr('width', $(container).width() ); //max width
c.attr('height', $(container).height() ); //max height
//Call a function to redraw other content (texts, images etc)
}
//Initial call
respondCanvas();
// Code I used to draw a road
//function drawRoad() {
// ctx.beginPath();
// ctx.rect(x, y, w, h);
// ctx.closePath();
// ctx.fill();
//};
//drawRoad();
// var can = document.getElementById("newCanvas");
// var ctx = can.getContext("2d");
// ctx.moveTo(0, 75); //x-axis, y-axis
// ctx.lineTo(400, 75);
// ctx.strokeStyle = "grey";
// ctx.lineWidth = 20;
// ctx.stroke();
});
Demohttps://jsfiddle.net/ccvk3y5q/
参考文献:http://www.garygarside.com/labs/responsive-canvas/
http://ameijer.nl/2011/08/resizable-html5-canvas/
使Html5 Canvas及其包含的图像在浏览器中响应
要获得所需的结果,必须每隔几毫秒重新绘制一次画布,并重新绘制所有对象,因此必须存储要绘制的对象。然后,您可以更改这些存储对象中的变量(使用事件处理程序、setTimeout()等),以查看画布中反映的更改。
主回路示例:
function update(){
ctx.beginPath;
for(var i=0; i<rects.length;i++){
ctx.drawRect(rects[i][0],rects[i][1],rects[i][2],rects[i][3]);
}
ctx.stroke();
}
添加矩形(在update()外部执行):
rects[easily rememberable number] = [x,y,width,height];
或
rects.push(x,y,width,height);
编辑矩形高度:
rects[#][3] = 15;
相关文章:
- 仅悬停一个元素(活动元素)
- 更改包含其他元素的元素的文本
- jQuery或JavaScript获取靠近其他元素的元素
- 使用jquery计算包含另一个带边距元素的元素的高度
- 获取/更改包含其他元素的元素的类.JavaScript/JQuery
- 从页面中删除除数组中包含的元素及其父元素/子元素之外的所有元素
- 更改元素父元素的背景颜色时停止在
上闪烁鼠标悬停?jQuery/JS. - 给定一个 bySelector 我如何获取此元素子元素的选择器
- 如何获取离子对话框中动态加载的元素的元素高度
- 独立于原始元素复制元素
- AngularJs 指令元素子元素给出空
- Jquery 更改克隆元素子元素的 ID 不起作用
- 隐藏所有没有类匹配所选元素的元素
- 如何从 iframe 元素更改元素属性
- jQuery,如何在HTML中正确查找父元素的元素类型
- “<元素/>”到“<元素> 元素>”是否有效
- 如何选择不包含某个子元素的元素
- 是否可以从另一个元素访问元素函数?聚合物1.0
- 如何在JavaScript中获取没有子元素的元素的文本
- 根据其同级元素包裹元素