javascript+css仿excel表格效果

 


javascript+css仿excel表格效果

  这是excel的界面,选中一个单元格后,该单元格,以及同行、同列的第一个单元格都呈现出特殊样式,很好地提示了用户。接下来用javascript和css实现类似效果。

  关键的css如下:

 

css代码
td {
border-top:3px solid #FFFFFF;
border-bottom:2px solid #B3DE94;
padding:9px;
}
td.hover {/*选中的单元格*/
background-color:#595;
}
td.hover2 {/*同行同列的第一个单元格*/
background-color:#FFCC99;
}

 

 

  主要是背景颜色的不同。

 

  然后用javascript循环遍历每一个单元格(不包括第一行和第一列的单元格),给它们添加鼠标经过和移出事件(当然和可以添加点击事件),然后给相关的单元格对象设定class值,鼠标移出时class设为“”就行了

 

  javascript 写道

<script type="text/javascript">
var cells, len, tdRow, tdCol;
//保存单元格、单元格数组长度、同行,同列第一个单元格
window.onload = function() {
 cells = document.getElementsByTagName("td");
 len = cells.length;
 for (var i = 6; i<len; i++) {
  if (i%5 != 0) {
   cells[i].onmouseover = function() {
    this.className = "hover";
    for (var j = 6; j<len; j++) {
     if (cells[j] == this) {
      (tdRow=cells[j%5]).className = "hover2";
      (tdCol=cells[j-j%5]).className = "hover2";
      document.getElementById("position").innerHTML = "x:"+(j%5)+" y:"+Math.floor(j/5);
      //Firefox浏览器貌似只支持innerHTML
      break;
     }
    }
   };
   cells[i].onmouseout = function() {
    this.className = "";
    tdRow.className = tdCol.className="";
    document.getElementById("position").innerHTML = "";
    //tdRow tdCol的存在就为了避免又一次的循环遍历
    /*for(var j=0;j<len;j++){
    if(cells[j]==this){
    cells[j%5].className="";
    cells[j-j%5].className="";
    break;
    }
    }*/
   };
  }
 }
};

</script>

 

   使用getElementsByTagName或getElementById取得属性,注意两个方法名称的区别:Elements的“s”

  使用className属性动态设置元素的class

 

  最后的效果如下:

 


javascript+css仿excel表格效果

 

  经过测试Firefox和搜狗浏览器(IE)都拥有同样的效果

 

你可能感兴趣的:(JavaScript,css,Excel,单元测试,J#)