美文网首页
浅析使用attr设置宽高与css设置宽高的区别

浅析使用attr设置宽高与css设置宽高的区别

作者: 爱扎马尾的小狮子 | 来源:发表于2016-08-30 16:03 被阅读117次

一、主要区别

使用attr设置宽高,attr对于的是实际宽高,如果没设置css就是显示的实际宽高,如果设置了css就会跟随css变成对应的显示宽高,这个时候实际宽高就可能跟显示宽高不一样,但是你所有操作对应的还是实际宽高而不是显示宽高

二、应用场景

主要是针对图片、视频、canvas
以例子来说明更有说服力,如下:
想要实现画一个800*800的灰色canvas画布,然后清空坐标点在(40,40),且宽高为140的矩形。如下图所示:


Paste_Image.png

先看一下第一段代码,通过css设置宽高:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>截图练习</title>
</head>
<body>
<script src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
    var width = 800;
    var height = 800;
    var $blankCanvas = $('<canvas></canvas>')
        .css({//通过css设置的宽高
            width: width,
            height: height,
            position: 'absolute',
            top: 0,
            left: 0,
            cursor: 'crosshair'
        });

    var cxt = $blankCanvas[0].getContext('2d');
    cxt.fillStyle = "rgba(0,0,0,.2)";
    cxt.fillRect(0, 0, width, height);
    cxt.clearRect(40,40,140,140);
    $('body').append($blankCanvas);
</script>
</body>
</html>

发现效果如下:


Paste_Image.png

很明显宽高远大于140,并且左上角的坐标也不是(40,40),并且四边还有点模糊,像是被拉伸一样

原因是:
通过css设置的是显示宽高,没有通过attr设置canvas的实际宽高,但canvas默认的实际宽高是300*150,但操作还是针对canvas的实际宽高操作的,因此看到的效果是缩放后的效果

如何达到要求的效果呢,需要修改canvas的实际宽高,如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>截图练习</title>
</head>
<body>
<script src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
    var width = 800;
    var height = 800;
    var $blankCanvas = $('<canvas></canvas>')
        .attr({
            width: width,
            height: height
        })
        .css({
            position: 'absolute',
            top: 0,
            left: 0,
            cursor: 'crosshair'
        });

    var cxt = $blankCanvas[0].getContext('2d');
    cxt.fillStyle = "rgba(0,0,0,.2)";
    cxt.fillRect(0, 0, width, height);
    cxt.clearRect(40,40,140,140);
    $('body').append($blankCanvas);
</script>
</body>
</html>

补充:更改CSS的宽高只会导致canvas的缩放,但是更改属性的宽高会导致canvas的图形丢失(canvas被重置了,所有数据都没了)

相关文章

  • 浅析使用attr设置宽高与css设置宽高的区别

    一、主要区别 使用attr设置宽高,attr对于的是实际宽高,如果没设置css就是显示的实际宽高,如果设置了css...

  • 比例设置的ImageView

    根据宽来设置高 来显示图片的 ImageView 使用示例 attr:

  • canvas

    注意: 1、canvas不适用css设置宽高,使用自身的width和height设置宽高; 2、canvas和pr...

  • canvas开发项目总结

    canvas绘图 对canvas设置宽高,只能通过属性设置。使用css设置宽高会让canvas变形 开发手机端页面...

  • em和rem笔记

    简介 单位 在编写网页过程中需要对元素进行字体,宽高,颜色等的设置,这些需要使用单位。在css中设置字体和宽高使用...

  • 清除浮动

    给父元素设置宽高: 由于浮动后的元素脱离文档流,无法撑起父元素的宽高,可以设置父元素的宽高。 CSS的clear属...

  • em 和 rem的简单介绍

    单位 在编写网页的过程中需要对元素(标签)进行设置宽高颜色字体等的设置在css中,设置字体和宽高使用的单位可以一致...

  • canvas

    注意:不能用样式设置宽高,使用属性 width height设置宽高 画线 画矩形 画圆形 画布清除与绘制文字 清...

  • 设置宽高的问题

    刚学canvas,今天在 设置宽高时遇到问题一直以为在 中设置宽高和直接设置 的宽高没有什么区别,进行了一番尝试...

  • Canvas-基础

    坐标系 css中的宽高不是画布的大小,当设置了css宽高,画布会随之缩放如果你的canvas的宽高是100,100...

网友评论

      本文标题:浅析使用attr设置宽高与css设置宽高的区别

      本文链接:https://www.haomeiwen.com/subject/byofettx.html