导航效果(1)

<!DOCTYPE html>
<html>
<header>
    <meta charset="utf-8">
    <link href="css/style.css">
    <style>
        body {
            background: #ededed;
            padding: 0 20px;
            margin: 0;
            font-family: 'Open Sans', Arial, sans-serif;
        }
        h1 {
            text-align: center;
            margin: 80px 0;
        }
        .mynav ul {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: center;
            -ms-flex-pack: center;
            justify-content: center;
            -ms-flex-wrap: wrap;
            flex-wrap: wrap;
            list-style-type: none;
            padding: 0;
        }
        .mynav li:not(:last-child) {
            margin-right: 20px;
        }
        .mynav a {
            display: block;
            font-size: 20px;
            color: black;
            text-decoration: none;
            padding: 7px 15px;
        }
        .target {
            position: absolute;
            border-bottom: 4px solid transparent;
            z-index: -1;
            -webkit-transform: translateX(-60px);
            transform: translateX(-60px);
        }
        .mynav a,
        .target {
            -webkit-transition: all .35s ease-in-out;
            transition: all .35s ease-in-out;
        }</style>
</header>
<body>
<nav class="mynav">
    <ul>
        <li class=""><a href="" style="opacity: 0.25;">Home</a></li>
        <li class=""><a href="" style="opacity: 0.25;">About</a></li>
        <li class="active"><a href="" style="opacity: 1;">Company</a></li>
        <li class=""><a href="" style="opacity: 0.25;">Work</a></li>
        <li class=""><a href="" style="opacity: 0.25;">Clients</a></li>
        <li class=""><a href="" style="opacity: 0.25;">Contact</a></li>
    </ul>
</nav>
<span class="target"></span>
<script type="text/javascript">
    "use strict";    //严格模式的限制
    (function () {
        var target = document.querySelector(".target");
        var links = document.querySelectorAll(".mynav a");
        var colors = ["deepskyblue", "orange", "firebrick", "gold", "magenta", "black", "darkblue"];

        function mouseenterFunc() {
            if (!this.parentNode.classList.contains("active")) {      //contains()判断li类中是否包含active
                for (var i = 0; i < links.length; i++) {
                    if (links[i].parentNode.classList.contains("active")) {
                        links[i].parentNode.classList.remove("active");
                    }
                    links[i].style.opacity = "0.25";
                }

                this.parentNode.classList.add("active");
                this.style.opacity = "1";

                var width = this.getBoundingClientRect().width;
                var height = this.getBoundingClientRect().height;
                var left = this.getBoundingClientRect().left + window.pageXOffset;
                var top = this.getBoundingClientRect().top + window.pageYOffset;
                var color = colors[Math.floor(Math.random() * colors.length)];    //floor(1.5)返回小于等于1.5的最大整数,random()返回0(包括)到1的一个随机数
                target.style.width = width + "px";
                target.style.height = height + "px";
                target.style.left = left + "px";
                target.style.top = top + "px";
                target.style.borderColor = color;
                target.style.transform = "none";
            }
        }

        for (var i = 0; i < links.length; i++) {
            links[i].addEventListener("click", function (e) {
                return e.preventDefault();
            });
            links[i].addEventListener("mouseenter", mouseenterFunc);
        }

        function resizeFunc() {
            var active = document.querySelector(".mynav li.active");

            if (active) {
                var left = active.getBoundingClientRect().left + window.pageXOffset;
                var top = active.getBoundingClientRect().top + window.pageYOffset;
                target.style.left = left + "px";
                target.style.top = top + "px";
            }
        }

        window.addEventListener("resize", resizeFunc);
    })();
</script>
</body>
</html>

 

posted @ 2017-08-11 17:26  飞鱼0725  阅读(156)  评论(0编辑  收藏  举报