Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将元素装配到表格单元格中_Javascript_Html_Css_Canvas_Css Tables - Fatal编程技术网

Javascript 将元素装配到表格单元格中

Javascript 将元素装配到表格单元格中,javascript,html,css,canvas,css-tables,Javascript,Html,Css,Canvas,Css Tables,我试图将画布元素放入一个完全没有填充的表格单元格中,也就是说,我希望画布和单元格顶部/底部之间没有边距。因此,我将行高度定义为20px,画布高度定义为20px。我也使用padding:0px样式。然而,我没有得到填充只有从顶部和左侧,我仍然得到填充在底部。事实上,看起来表格单元格越来越高,以适应不需要的边距。我如何解决它 另外,在HTML和CSS中定义画布宽度和高度有什么区别?一个会压倒另一个吗 下面是我的HTML代码。 谢谢 实验 $(函数(){ var canvas=document.ge

我试图将画布元素放入一个完全没有填充的表格单元格中,也就是说,我希望画布和单元格顶部/底部之间没有边距。因此,我将行高度定义为20px,画布高度定义为20px。我也使用padding:0px样式。然而,我没有得到填充只有从顶部和左侧,我仍然得到填充在底部。事实上,看起来表格单元格越来越高,以适应不需要的边距。我如何解决它

另外,在HTML和CSS中定义画布宽度和高度有什么区别?一个会压倒另一个吗

下面是我的HTML代码。 谢谢


实验
$(函数(){
var canvas=document.getElementById('my_canvas');
var ctx=canvas.getContext('2d');
ctx.fillRect(0,0,20,20);
$(“#my#u table>tbody>tr:eq(0)>td:eq(0)”).append($(#my#u canvas”);
})
.my_单元格{高度:20px;宽度:100px;填充:0}
.my_canvas{高度:20px;宽度:20px}

尝试将以下内容添加到画布样式中:

display : block;
演示:


如果你看一下,你就会明白为什么:-默认情况下,画布显示
内联
,这意味着它以一种方式排列起来,为“y”或“p”等字母的底部留出了悬挂在下面的空间

尝试将以下内容添加到画布的样式中:

display : block;
演示:


如果你看一下,你就会明白为什么:-默认情况下,画布显示
内联
,这意味着它以一种方式排列起来,为“y”或“p”等字母的底部留出了悬挂在下面的空间

尽管你的问题已经得到了回答,但我想指出以下几点

Canvas元素被视为非常类似于内联元素,尽管看起来是这样的,与之类似。要解决您的问题,您必须将画布的样式规则
display
设置为
block

出于好意,我想给你一些建议:

1您省略了开头的主体标记

建议使用2将脚本标记放在底部

4尽可能使用div而不是表元素

5您并不总是使用Jquery选择器

i、 e

复制->

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
  .my_cell {width:100px; }
  .my_canvas {display: block;height:20px; width:20px; background-color: red}
</style>
</head>
<body>
  <table id="my_table" border="1" cellspacing="0" cellpinserting="0" cellpadding="0">
     <tbody>
        <tr>
           <td class="my_cell"></td>
        </tr>
     </tbody>
  </table>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
  <script>
     $(document).ready(function () {
        $(".my_cell").html('<canvas class="my_canvas" width="20" height="20"></canvas>');
            });

       var canvas = $('.my_canvas');
       var ctx = canvas.getContext('2d');    
       ctx.fillRect(0,0,0,20,20);
  </script>
</body>
</html>

文件
.my_单元格{宽度:100px;}
.my_画布{显示:块;高度:20px;宽度:20px;背景色:红色}
$(文档).ready(函数(){
$(“.my_cell”).html(“”);
});
var canvas=$('.my_canvas');
var ctx=canvas.getContext('2d');
ctx.fillRect(0,0,0,20,20);

尽管你的问题已经得到了回答,但我想指出以下几点

Canvas元素被视为非常类似于内联元素,尽管看起来是这样的,与之类似。要解决您的问题,您必须将画布的样式规则
display
设置为
block

出于好意,我想给你一些建议:

1您省略了开头的主体标记

建议使用2将脚本标记放在底部

4尽可能使用div而不是表元素

5您并不总是使用Jquery选择器

i、 e

复制->

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
  .my_cell {width:100px; }
  .my_canvas {display: block;height:20px; width:20px; background-color: red}
</style>
</head>
<body>
  <table id="my_table" border="1" cellspacing="0" cellpinserting="0" cellpadding="0">
     <tbody>
        <tr>
           <td class="my_cell"></td>
        </tr>
     </tbody>
  </table>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
  <script>
     $(document).ready(function () {
        $(".my_cell").html('<canvas class="my_canvas" width="20" height="20"></canvas>');
            });

       var canvas = $('.my_canvas');
       var ctx = canvas.getContext('2d');    
       ctx.fillRect(0,0,0,20,20);
  </script>
</body>
</html>

文件
.my_单元格{宽度:100px;}
.my_画布{显示:块;高度:20px;宽度:20px;背景色:红色}
$(文档).ready(函数(){
$(“.my_cell”).html(“”);
});
var canvas=$('.my_canvas');
var ctx=canvas.getContext('2d');
ctx.fillRect(0,0,0,20,20);

在HTML5中,
width
height
HTML属性通常是不推荐的,我认为甚至更早。简而言之,我认为这仅仅是因为样式设计是CSS的工作。然而,由于向后兼容性是HTML5的主要目标之一,您仍然可以使用它们。。。如果我没有弄错的话,它们将被CSS覆盖。@Derija93:我试图删除HTML宽度/高度,但它停止了工作。所以看起来他们是需要的。仍然不清楚CSS对画布做了什么。这是通常所说的。看看w3学校。显然,画布元素需要这两个属性才能知道其视口宽度和高度。我猜它需要在HTML中指定这些维度,因为否则它无法访问CSS中设置的维度。使用调试器并删除这两个属性时,HTML元素本身仍然是20x20,而绘制的黑色矩形被减少到最小值。通常HTML5中不推荐使用
width
height
HTML属性,我认为甚至更早。简而言之,我认为这仅仅是因为样式设计是CSS的工作。然而,由于向后兼容性是HTML5的主要目标之一,您仍然可以使用它们。。。如果我没有弄错的话,它们将被CSS覆盖。@Derija93:我试图删除HTML宽度/高度,但它停止了工作。所以看起来他们是需要的。仍然不清楚CSS对画布做了什么。这是通常所说的。看看w3学校。显然,画布元素需要这两个属性才能知道其视口宽度和高度。我猜它需要在HTML中指定这些维度,因为否则它无法访问CSS中设置的维度。使用调试器并删除这两个属性时,HTML元素本身仍然是20x20,而绘制的黑色矩形减少到最小值。