我有以下HTML代码。
<div id="table1"></div>
<script>
var arr = [
["s1","s2","s3"],
["sk1","sk2","sk3"],
["skl1","skl2"]
];
table_generator("table1", arr);
</script>
现在要将表添加到此div,我有以下javascript代码。
<script>
function table_generator(body_table_name, s_array) {
var body_table = document.getElementById(body_table_name);
//Create table section
var table = document.createElement("TABLE");
table.setAttribute("id", "table_"+body_table_name);
//Append to body div
body_table.appendChild(table);
//Add rows
var row_length = s_array.length;
for(var i = 0; i <row_length; i++)
{
row(s_array[i], "row"+i, "table_"+body_table_name);
}
assign_height_width_hover_effects();
}
</script>
要在表格中添加行,我有这个javascript函数
<script>
function row(td_array, row_name, table_name) {
//Create row
var tr = document.createElement("TR");
tr.setAttribute("id", "tr_"+row_name);
document.getElementById(table_name).appendChild(tr);
//Create the tds
for(var i = 0; i<td_array.length; i++)
{
var td = document.createElement("TD");
td.setAttribute("id", "td_"+td_array[i]);
tr.appendChild(td);
//Add td styling
td.style.transition = "all 0.5s ease-in-out";
//Add text to cell
var name = document.createElement("SPAN");
name.setAttribute("id", "name_"+td_array[i]);
name.innerHTML = td_array[i];
td.appendChild(name);
//Add skill info
var info = document.createElement("SPAN");
info.setAttribute("id", "info_"+td_array[i]);
info.innerHTML = "Some info here";
name.appendChild(info);
//Add styling to this info
info.style.position = "absolute";
info.style.width = "inherit";
info.style.height = "inherit";
info.style.overflow = "hidden";
info.style.opacity = 0;
info.style.transition = "all 1s ease-in-out 0.4s";
info.style.transform = "scale(0)";
//Calculate cell width
var width = (td.clientWidth + 1);
if (width > max_width)
{
max_width = width;
}
//Push it in array
main_array.push(td_array[i]);
}
}
</script>
最后,为了给表格单元格增加高度和宽度并添加悬停效果,我调用以下函数
<script>
function assign_height_width_hover_effects() {
//Assigh height and width to all cells in that row
for(var i = 0; i<main_array.length; i++)
{
var td = document.getElementById("td_"+main_array[i]);
var name = document.getElementById("name_"+main_array[i]);
var info = document.getElementById("info_"+main_array[i]);
//Add styling to td
td.style.width = max_width+"px";
td.style.height = max_width+"px";
td.style.textAlign = "center";
td.style.boxShadow = "rgb(0, 0, 0) 0px 0px 0px 0px inset";
//Here is where I need help
$(td).hover(
function(){
$(this).stop().animate({boxShadow: '0 0 '+max_width+'px'}, 'fast');
//$(this).stop().animate({"opacity": 0});
},
function(){
$(this).stop().animate({boxShadow: '0 0 0'}, 'fast');
//$(this).stop().animate({"opacity": 1});
}
);
}
}
</script>
基本上我想要的是动画以下内容:
当鼠标进入td表格单元格时:
当鼠标离开td表格单元格时:
现在我可以单独设置框阴影的动画,或者淡入淡出名称元素,但不能同时显示两者。
答案 0 :(得分:0)
只需使用css
,您就可以轻松完成这项工作
td {
transition: box-shadow 1s ease 0s;
box-shadow: 5px 5px 5px #000;
padding: 20px;
}
td:hover {
box-shadow: 5px 5px 5px #f00;
}
td .name {
transition: opacity 1s ease 0s;
opacity: 1;
}
td:hover .name {
opacity: 0;
}
td .info {
transition: opacity 1s ease 0s;
opacity: 0;
}
td:hover .info {
opacity: 1;
}
&#13;
<table>
<tbody>
<tr>
<td>1-1</td>
<td>1-2</td>
<td>1-3</td>
</tr>
<tr>
<td>2-1</td>
<td>2-2</td>
<td>2-3</td>
</tr>
</tbody>
</table>
&#13;
我确实将名称和信息的选择器更改为类而不是ID,因为ID应该是唯一的。
注意:这是一个简单的例子。您需要在td之前添加另一个特定的选择器,因为它不会适用于您网页/网站上的每个表格。