我正在创建一个用户界面,我需要突出显示表格中的单元格。我已经使用着色其他东西,所以我需要使用边框。我已经创建了将css更改为虚线的css,但这并没有突出显示。我想知道是否有任何方法可以为边框设置动画,以便它们可以闪烁或旋转(典型的虚线边框动画)。我尝试使用@keyframes和动画,但失败了。
我很高兴用javascript做到这一点,但我不能使用jQuery或任何其他框架。
如果有人提出突出显示单元格的任何其他建议,那也可能有所帮助。
我使用的测试代码是:
<table class="t">
<tr>
<td class="t">1</td>
<td class="t top">2</td>
<td class="t">3</td>
</tr>
<tr>
<td class="t left">4</td>
<td class="t middle">5</td>
<td class="t right">6</td>
</tr>
<tr>
<td class="t">7</td>
<td class="t bottom">8</td>
<td class="t">9</td>
</tr>
</table>
CSS:
table.t {
border-collapse: collapse;
border:1px;
table-layout:fixed;
}
td.t {
border: 1px solid black;
width: 50px;
}
td.top {
border-bottom: 1px dashed black;
}
td.left {
border-right: 1px dashed black;
}
td.right {
border-left: 1px dashed black;
}
td.bottom {
border-top: 1px dashed black;
}
td.middle {
border: 1px dashed black;
}
Jsfiddle可用HERE
答案 0 :(得分:4)
不确定您正在寻找什么,但这里是一个简单的关键帧,它应用了一个盒子阴影和一个改变透明度的关键帧......你必须添加适当的供应商前缀,当然。
<强> CSS 强>
td.selected {
-webkit-animation: pulse-border 1s infinite;
}
// pulsing border
@-webkit-keyframes pulse-border {
from, to { box-shadow: 0 0 0 0 black;}
50% { box-shadow: 0 0 0 4px black; }
}
// flash the cell contents if applied to cell
@-webkit-keyframes flash {
from, to { opacity: 1 }
50% { opacity: 0 }
}
<强> DEMO 强>
编辑
也让这个变得有趣......旋转式边框。 DEMO ...因为所有额外的元素而非常糟糕。
答案 1 :(得分:1)
你可以使用边框图像,渐变,甚至多个框阴影来绘制边框。
悬停时的动画或过渡也可以为它们设置动画。
渐变示例:http://codepen.io/gc-nomade/pen/jdwgG 以及有趣的动画版http://codepen.io/anon/pen/rHxCg
或带有框阴影(对不起华而不实):http://codepen.io/gcyrillus/pen/bGFLA
你也有轮廓和轮廓偏移http://jsfiddle.net/2822m/4/
table.t {
border-collapse: collapse;
border:1px;
table-layout:fixed;
}
td.t {
border:1px solid;
width: 50px;
}
td.top {
border-bottom: none;
}
td.left {
border-right:none;
}
td.right {
border-left: none;
}
td.bottom {
border-top: none;
}
td.middle {
border: 1px solid red;
outline:1px dashed black;
outline-offset:-1px;
}
动画很简单http://jsfiddle.net/2822m/5/
td.middle {
border: 1px solid red;
outline:1px dashed black;
outline-offset:-1px;
animation:blink 1s infinite;
}
@keyframes blink {
50% {
outline:1px dashed yellow;
}
}
答案 2 :(得分:1)
简单的JavaScript回答:
var blinkStatus = 'off',
currentBlinkElement = null,
blinkTimer,
blinkSpeed = 500,
stopBlinkButton = document.getElementById( 'stopBlinkButton' );
function blink( element )
{
currentBlinkElement = element;
if( blinkStatus == 'off' ) {
currentBlinkElement.className = currentBlinkElement.className + ' blink-on';
blinkStatus = 'on';
} else {
currentBlinkElement.className = currentBlinkElement.className.replace( ' blink-on', '' );
blinkStatus = 'off';
}
blinkTimer = setTimeout( function(){ blink( element ); }, blinkSpeed );
}
function stopBlink()
{
clearTimeout( blinkTimer );
if( currentBlinkElement != null ) {
currentBlinkElement.className = currentBlinkElement.className.replace( ' blink-on', '' );
currentBlinkElement = null;
}
}
document.onclick = function( e ) {
var clickedElement;
if(e == null) {
clickedElement = event.srcElement;
} else {
clickedElement = e.target;
}
if( clickedElement.tagName == 'TD' ) {
stopBlink();
blink( clickedElement );
}
};
stopBlinkButton.onclick = function(){
stopBlink();
};
JSFiddle工作示例:http://jsfiddle.net/2Vfu5/。单击表格单元格开始。