旋转图像但不旋转 Canvas
Rotate Image but not Canvas
我在 canvas 中使用背景图片。我只想将背景图像旋转 90 度,但不应旋转上下文。如果我使用 css 变换,那么整个 canvas 都会旋转。我该怎么办?
var can = document.getElementById('canvas');
var ctx = can.getContext('2d');
ctx.rect(20, 30, 200, 40);
ctx.strokeStyle="red";
ctx.lineWidth="2";
ctx.stroke();
$(function(){
//$('#canvas').css({'transform':'rotate(90deg)'});
});
#canvas{
background: #789;
border: 1px solid;
}
body{
margin:10px;
}
<canvas id="canvas" width="400" height="300" style="background-image: url(http://placehold.it/1600x800); background-size: 100%; background-position: -80px -50px;">Your browser does not support HTML5 Canvas</canvas>
通过使用伪 :before 元素,您可以只旋转背景图像。
#canvas:before {
content: "";
position: absolute;
width: 200%;
height: 200%;
top: -50%;
left: -50%;
z-index: -1;
background: url(http://placehold.it/1600x800) 0 0 repeat;
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
(通过 http://www.sitepoint.com/css3-transform-background-image/)
请参阅 fiddle here。
我创建了一个与 canvas 元素大小相同的 container
div,然后我在 container
div 上添加了一个伪元素这将作为旋转的背景。我不认为我们可以在 canvas 本身上使用伪元素,因为 canvas 仅在不受支持时才显示它的内容。
我在 canvas 中使用背景图片。我只想将背景图像旋转 90 度,但不应旋转上下文。如果我使用 css 变换,那么整个 canvas 都会旋转。我该怎么办?
var can = document.getElementById('canvas');
var ctx = can.getContext('2d');
ctx.rect(20, 30, 200, 40);
ctx.strokeStyle="red";
ctx.lineWidth="2";
ctx.stroke();
$(function(){
//$('#canvas').css({'transform':'rotate(90deg)'});
});
#canvas{
background: #789;
border: 1px solid;
}
body{
margin:10px;
}
<canvas id="canvas" width="400" height="300" style="background-image: url(http://placehold.it/1600x800); background-size: 100%; background-position: -80px -50px;">Your browser does not support HTML5 Canvas</canvas>
通过使用伪 :before 元素,您可以只旋转背景图像。
#canvas:before {
content: "";
position: absolute;
width: 200%;
height: 200%;
top: -50%;
left: -50%;
z-index: -1;
background: url(http://placehold.it/1600x800) 0 0 repeat;
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
(通过 http://www.sitepoint.com/css3-transform-background-image/)
请参阅 fiddle here。
我创建了一个与 canvas 元素大小相同的 container
div,然后我在 container
div 上添加了一个伪元素这将作为旋转的背景。我不认为我们可以在 canvas 本身上使用伪元素,因为 canvas 仅在不受支持时才显示它的内容。