用CSS实现“滑动门”技术

  • Post author:
  • Post category:其他


在前几天无意中翻看网页代码的过程中,无意中发现了微信官网的nav里有一个很有意思的小细节。在跟着代码学习了一番,在网上阅读了相关资料,原来这就是传说中的滑动门技术。

接下来就来分享一下我个人对滑动门的理解及实现方法和代码吧。

滑动门的效果:

这是原来版本的,可以看到“首页”的标签是有一个明显的凹下的效果。

在调整完这个nav的长度后,大家还是会看到一个凹下的效果,这个效果和我以前接触到的,或者用自己方法来实现的方法是不一样的,首先,这个装背景图片的盒子不是固定的,它是可以随着盒子内容的长度改变而改变的,所以,大家将其称之为“滑动门”。

说到这里,那么是怎么实现的呢:

先来简单的分析一下:既然是“滑动的”,那么他就是没有固定的宽度的,“有宽必死”,因为你宽度一旦是确定的了,这个盒子的宽度就是固定的,也就不会出现滑动的效果了。

其次,既然可以滑动,那么,我们可不可以用两个部分将他们的左右两边分别装起来,将内容夹在中间,这样一来随着内容的改变,就可以将左右两边的背景“推”着走,就可以实现“滑动”的效果啦。

代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body{
            background: url(images/wx.jpg) repeat-x;
        }
        .nav li{
            list-style: none;       
            float: left;
        }
        .nav li a{
            display: inline-block;
            height: 33px;
            background: url(images/to.png) no-repeat;
            text-decoration: none;
            color: #fff;
            font-size: 700;
            padding-left: 15px;
            line-height: 33px;
        }
        .nav li a span{
            display: inline-block;
            height: 33px;
            background: url(images/to.png) no-repeat right;
            padding-right: 15px;
        }
        .nav a:hover , .nav a:hover span{
            background-image: url(images/ao.png);
            /* 只写一个background-image的目的就是当鼠标附上去时只改变图片
            ,以前图片的样式是不会改变的 */
            /* 这个鼠标附上时会把前边的全部层叠掉,所以还是得添加no-repeat */
        }
    </style>
</head>
<body>
    <ul class="nav">
        <li><a href="#"><span>首页</span></a></li>
        <li><a href="#"><span>导航说明</span></a></li>
        <li><a href="#"><span>菜单栏</span></a></li>
    </ul>
    
</body>
</html>

实现效果:

我分别将定义在左边的a标签,和定义在右边的span标签里分别分别放置左右“两扇门”的背景图片,再通过一些基本CSS的样式修饰,再加上一个伪类;hover就可以实现鼠标放上去后nav标签的背景图片从凹下变为凸起的效果了。并且更重要的是,他的盒子可以通过更改盒子内容文字的数量从而可以实现”滑动门”的“滑动效果”。

emmm…写的有点啰嗦,,,如果有什么质疑或者问题可以私聊我,大家一起学习一起进步呀。



版权声明:本文为wangwenkai76原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。