css能不能实现这种特效,就是鼠标放上去就往上移动了一点。挪走就回复原来的效果。怎么做啊!

html-css015

css能不能实现这种特效,就是鼠标放上去就往上移动了一点。挪走就回复原来的效果。怎么做啊!,第1张

方法有很多种,下面我介绍一种纯CSS的实现的方式:

<!DOCTYPE html>

<html lang="zh-cn">

<head>

<meta charset="utf-8" />

<title></title>

<style>

html,

body {

margin: 0

padding: 0

}

.main {

width: 460px/*每个box的宽度为150px,间隔为5*2*/

margin: 0 auto

}

.demo {

float: left

display: inline-block

}

.box {

height: 150px

width: 150px

background: #3695d5

position: relative

overflow: hidden

}

.inbox {

height: 50px

line-height: 50px

text-align: center

color: #FFF

width: 100%

position: absolute

bottom: -50px

background: rgba(0, 0, 0, 0.3)

transition: 1s/*过渡效果*/

}

.box:hover>.inbox {

bottom: 0

}

</style>

</head>

<body>

<div class="main">

<div class="demo">

<div class="box">

图片

<div class="inbox">

文字

</div>

</div>

</div>

<div class="demo" style="margin: 0 5px 0 5px">

<div class="box">

图片

<div class="inbox">

文字

</div>

</div>

</div>

<div class="demo">

<div class="box">

图片

<div class="inbox">

文字

</div>

</div>

</div>

</div>

</body>

</script>

</html>

从手工点开的这个空格进行处理,按上右下左或你自己定义的一个顺序来判断相应位置的格式是否是空格且未被点开,如果不是,则跳过,如果是,则将其自动点开,同时把这几个位置加入队列后续处理。

简单的流程图示意:

当前位置是空白位置?----否---> 非空白的处理

        |

        | 是

        |

        V

    加入队列

        |

        V

+--->队列为空?-------->是---> 结束

|       |

|       |否

|       |

|       V

|  第一个元素出队

|       |

|       V

|  点开该元素所指的位置

|       |

|       V

|  上左下右的位置如果是空白且未点开则入队

|       |

--------+

上面是非递归的方案,递归方案则更容易了:

伪代码算法描述如下:

Click(pos)    // 点开 pos 这个位置

{

    // IsClicked() 判断是否是已经点开的格子

    if (IsClicked(pos))

        return

    

    // IsBlank() 判断是否是空白格子

    if (! IsBlank(pos))

    {

        点开非空白格子的处理

    }

    

    // 下面是点开空白格子的处理

    ClickBlank(pos)

}

ClickBlank(pos)

{

    if (! IsBlank(pos))

        rerurn

    

    if (IsClicked(pos))

        return

    // 下面对四个方向的格子进行自动点开

    // 你需要计算四向的格子位置,无效的直接返回

     

    ClickBlank(pos上面的格子)

    ClickBlank(pos右面的格子)

    ClickBlank(pos下面的格子)

    ClickBlank(pos左面的格子)

}

这句css代码就是文字闪烁text-decoration:blink不过很可惜,IE、Chrome 或 Safari 不支持 "blink" 属性值,所以只有在 Firefox 和 Opera 下支持这 CSS 实现在闪动效果。

加上js代码就可以了

html代码

<span id="blink">闪烁文字</span>

JavaScript代码:

<script type = "text/javascript" >

function blinklink() {

if (!document.getElementById('blink').style.color) {

document.getElementById('blink').style.color = "red"

}

if (document.getElementById('blink').style.color == "red") {

document.getElementById('blink').style.color = "black"

} else {

document.getElementById('blink').style.color = "red"

}

timer = setTimeout("blinklink()", 100)

}

function stoptimer() {

clearTimeout(timer)

}

blinklink()

</script>