我想知道是否有人能够帮助我。仅使用CSS(最可能是CSS3),是否有办法在将鼠标悬停在元素上时更改表格单元格的内部HTML?我有一个包含49个单元格(7行乘7列)的数字表,我希望第一行的第一个单元格中的数字从数字1更改为数字50,但只有当悬停在数字1上时(即 - 不悬停时改回1号)。
我可以在JavaScript中使用“更改innerHTML”函数来执行此操作,但仅限于在文档正文中使用与我的HTML内联的脚本的一部分时。由于各种原因,我不能使用任何脚本或CSS内联,所以这种实现我的目标的方法不是我想要使用的(这超出了语义原因)。我真的宁愿完全避免使用任何脚本来实现这种效果,因为我认为CSS3比JavaScript更优雅,更有选择性地处理效果(即 - CSS3工具提示比任何基于脚本的工具提示都要好得多。)
我只是想知道是否有人知道如何使用CSS3(可能使用z-index,display:none;或定位技术以某种方式?)。我已经玩过它,但我似乎无法弄清楚。如果我不需要将脚本与我的Markup混合使用,我会使用JavaScript,但似乎没有办法做到这一点。
任何人都有关于如何解决这个问题的想法?谢谢你的时间。
更新
@ramsesoriginal @hiphip
再次感谢。我对“这个答案对你有帮助吗”回答“是”。我相信这就是“被接受”的含义 ramsesoriginal ;对?感谢 hiphip 以获取答案。我正在玩类似下面代码的样式,但它在表格单元格中的效果并不像我希望的那样(顺便说一下,对于孤立的图像效果很好)。我想我会继续努力;选择越多越好。
div.up {
margin: 10px 0;
position: relative;
width: 40px;
height: 40px;
border: 1px solid rgb(170, 169, 169);
overflow: hidden;
}
div.up div {
width: 40px;
height: 40px;
font-size: 13px;
padding: 10px;
position: absolute;
top: 0;
left: 0;
text-align: center;
background: rgba(255, 255, 255, 1.000);
-moz-transition: left 1s linear;
-webkit-transition: left 1s linear;
-o-transition: left 1s linear;
transition: left 1s linear;
}
div.up div.one {
z-index: 999;
}
div.up:hover div.one {
-webkit-transition: left 1s linear;
-moz-transition: left 1s linear;
-o-transition: left 1s linear;
transition: left 1s linear;
left: -99px;
}
答案 0 :(得分:5)
有两种方法,但都需要一些额外的标记:
<td id="example1" class="hoverer"><span class="nohower">1</span><span class="hover">50</span></td>
带样式
#example1 .hover{
display:none;
}
#example1 .nohower{
display:block;
}
#example1:hover .hover{
display:block;
}
#example1:hover .nohower{
display:none;
}
或
<td id="example2" class="hoverer"><span data-hover="50">1</span></td>
带样式
#example2:hover span:after{
content:attr(data-hover);
}
#example2:hover span{
width:1px;
margin-left: -0.5em;/* adjust accoridng to font*/
}
您可以在此处查看有效的演示:http://jsfiddle.net/ramsesoriginal/W8LQq/
答案 1 :(得分:1)
这是不可能的。
CSS仅用于样式化HTML。它无法访问HTML本身的属性。
答案 2 :(得分:1)
无法仅使用CSS
执行此操作答案 3 :(得分:0)
有定位:
<style>
#outterdiv {
position: relative;
width:20px;
height:20px;
overflow:hidden;
border: 1px blue solid;
}
#innerdiv:hover {
width:20px;
height:20px;
position: absolute;
top: -20px;
}
</style>
<div id="outterdiv">
<div id="innerdiv">
<div>1</div>
<div>50</div>
</div>
</div>