带有闪烁边框的表格单元格

Posted

技术标签:

【中文标题】带有闪烁边框的表格单元格【英文标题】:Table cell with blinking borders 【发布时间】:2014-04-30 02:06:46 【问题描述】:

我正在制作一个需要突出显示表格中的单元格的用户界面。我已经为其他东西使用了着色,所以我需要使用边框。我创建了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

【问题讨论】:

这篇文章作为css3解决方案:***.com/questions/275931/… @TilwinJoy,你的意思是通过 jquery 的 javascript 还是你指向一个特殊的答案? @GCyrillus Vinay 对该帖子的确切回答.. @TilwinJoy,谢谢,答案太多了 :) 【参考方案1】:

不确定您要查找的确切内容,但这里有一个简单的关键帧,它应用了一个盒子阴影和一个改变透明度的关键帧……当然,您必须添加适当的供应商前缀。

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...由于所有额外的元素,有点糟糕。

【讨论】:

只是为了提供替代方案jsfiddle.net/2822m/2 必须相应地设置环境样式 是的,不过我可能会使用透明而不是白色作为边框颜色。 有效点,这会更有意义,只是一个简单的例子。 :) 太棒了。如果有人有任何其他想法,我会稍微开放一下这个问题。但这应该有效。谢谢 @brbcoding 大声笑,为了好玩,我的渐变版本:codepen.io/anon/pen/rHxCg。顺便说一句, -webkit- 前缀使其非常严格【参考方案2】:

您可以使用边框图像、渐变、甚至多个 box-shadow 来绘制边框。

悬停时的动画或过渡也可以为它们设置动画。

渐变示例: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;
    

【讨论】:

【参考方案3】:

简单的 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/。单击表格单元格开始。

【讨论】:

以上是关于带有闪烁边框的表格单元格的主要内容,如果未能解决你的问题,请参考以下文章

带有多个单元格边框的钱包样式 Swift

如何在摇摆中的假if语句后连续闪烁表格单元格

iOS:只有一个表格单元格,但屏幕满是单元格边框

PHPWordPHPWord动态生成表格table | 单元格横向合并单元格纵向合并单元格边框样式单元格垂直水平居中

添加行时 Firefox 单元格边框呈现错误

excel合并单元格后怎么边框线没了