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