CSS3 9-10代码疑问!

来源:9-10 制作3D旋转导航综合练习题

大年糕

2017-11-28 11:51

<!DOCTYPE html>

<html>

<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 type = "text/css">

    @import url("http://www.w3cplus.com/demo/css3/base.css");

    @font-face{

        font-family: "myfont";

        src: url("http://www.w3cplus.com/demo/css3/base.css");

    }


    body{

        background-color: #ececec;

    }


    /* basic menu styles */

    .nav-menu{

        background: #74adaa;

        width: 962px;

        margin: 50px auto 150px;

    }


    .nav-menu > li{

        display: inline;

        float: left;

        border-right: 1px solid #94c0be;

    }


    .nav-menu >li:last-child{

        border-right: none;

    }


    .nav-menu li a{

        color: #fff;

        display: block;

        text-decoration: none;

        /*调用服务器字体*/

        font-family: "myfont";

        -webkit-font-smoothing: antialiased;

        -moz-font-smoothing: antialiased;

        font-smoothing: antialiased;

        text-transform: capitalize;

        overflow: visible;

        line-height: 20px;

        font-size: 20px;

        padding: 15px 30px 15px 31px;

    }


    .three-d{

        /*设置3D舞台布景*/

        position: relative;


        perspective: 200px;

        -webkit-perspective: 200px;

        -moz-perspective: 200px;

        -ms-perspective: 200px;

        -o-perspective: 200px;


        /*设置3D舞台布景过渡效果*/

        transition: all 0.7s linear;

        -webkit-transition: all 0.7s linear;

        -moz-transition: all 0.7s linear;

        -ms-transition: all 0.7s linear;

        -o-transition: all 0.7s linear;

    }


    .three-d:not(.active):hover{

        cursor: pointer;

    }

    /*给不是当前状态的3D舞台的悬浮和聚焦状态设置变形效果*/

    .three-d:not(.active):hover .three-d-box,

    .three-d:not(.active):focus .three-d-box{

        transform: translateZ(-25px) rotateX(90deg);

        -webkit-transform: translateZ(-25px) rotateX(90deg);

        -moz-transform: translateZ(-25px) rotateX(90deg);

        -ms-transform: translateZ(-25px) rotateX(90deg);

        -o-transform: translateZ(-25px) rotateX(90deg);

    }


    .three-d-box{

    /*给3D舞台中的“three-d-box”设置变形和过渡效果*/

        position: absolute;

        top: 0;

        left: 0;

        display: block;

        width: 100%;

        height: 100%;


        transform: translateZ(-25px);

        -webkit-transform: translateZ(-25px);

        -moz-transform: translateZ(-25px);

        -ms-transform: translateZ(-25px);

        -o-transform: translateZ(-25px);


        transition: all 0.3s ease-out;

        -webkit-transition: all 0.3s ease-out;

        -moz-transition: all 0.3s ease-out;

        -ms-transition: all 0.3s ease-out;

        -o-transition: all 0.3s ease-out;


        transform-style: preserve-3d;

        -webkit-transform-style: preserve-3d;

        -moz-transform-style: preserve-3d;

        -ms-transform-style: preserve-3d;

        -o-transform-style: preserve-3d;


        pointer-events: none;

        -webkit-pointer-events: none;

        -moz-pointer-events: none;

        -ms-pointer-events: none;

        -o-pointer-events: none;

    }


    /*给导航设置3D前、3D后的变形效果*/

    .front{

        transform: rotateX(0deg) translateZ(25px);

        -webkit-transform: rotateX(0deg) translateZ(25px);

        -moz-transform: rotateX(0deg) translateZ(25px);

        -ms-transform: rotateX(0deg) translateZ(25px);

        -o-transform: rotateX(0deg) translateZ(25px);

    }

    .back{

        transform: rotateX(-90deg) translateZ(25px);

        -webkit-transform: rotateX(-90deg) translateZ(25px);

        -moz-transform: rotateX(-90deg) translateZ(25px);

        -ms-transform: rotateX(-90deg) translateZ(25px);

        -o-transform: rotateX(-90deg) translateZ(25px);

        color: #FFE7C4;

    }


    .front,.back{

        display: block;

        width: 100%;

        height: 100%;

        position: absolute;

        top: 0;

        left: 0;

        background: #74adaa;

        padding: 15px 30px 15px 31px;

        color: white;

        -webkit-pointer-events: none;

        -moz-pointer-events: none;

        -ms-pointer-events: none;

        -o-pointer-events: none;

        pointer-events: none;

        -webkit-box-sizing: border-box;

        box-sizing: border-box;

    }


    /*设置导航当前状态和悬浮状态下的背景效果*/

    .nav-menu li .active .front,

    .nav-menu li .active .back,

    .nav-menu li a:hover .front,

    .nav-menu li a:hover .back{

        background:  #51938F;

        background-size: 5px 5px;/*如果值设置一个值,这个值是宽度,高度自适应*/

        background-image: -webkit-linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480),

                          linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480);

background-image: -moz-linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480),

                          linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480);

background-image: -ms-linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480),

                          linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480);

background-image: -o-linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480),

                          linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480);

background-image: linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480),

                          linear-gradient(45deg, #478480 25%, transparent 25%, transparent 75%, #478480 75%, #478480);

    }


    .nav-menu ul{

        position: absolute;

        text-align: left;

        line-height: 40px;

        font-size: 14px;

        width: 200px;

        transition: all 0.3s ease-in;

        -webkit-transition: all 0.3s ease-in;

        -moz-transition: all 0.3s ease-in;

        -ms-transition: all 0.3s ease-in;

        -o-transition: all 0.3s ease-in;

        transform-origin: 0px 0px;

        -webkit-transform-origin: 0px 0px;

        -moz-transform-origin: 0px 0px;

        -ms-transform-origin: 0px 0px;

        -o-transform-origin: 0px 0px;

        transform: rotateX(-90deg);

        -webkit-transform: rotateX(-90deg);

        -moz-transform: rotateX(-90deg);

        -ms-transform: rotateX(-90deg);

        -o-transform: rotateX(-90deg);

        backface-visibility: hidden;

        -webkit-backface-visibility: hidden;

        -moz-backface-visibility: hidden;

        -ms-backface-visibility: hidden;

        -o-backface-visibility: hidden;

    }

    .nav-menu li:hover ul{

        transform: rotateX(0deg);

        -webkit-transform: rotateX(0deg);

        -moz-transform: rotateX(0deg);

        -ms-transform: rotateX(0deg);

        -o-transform: rotateX(0deg);

    }

    </style>

</head>

<body>

    <div id="nav">

        <ul class="nav-menu clearfix unstyled">

            <li><a href="#" class="three-d active">

                Home

                <span><span>Home</span><span>Home</span></span>

            </a></li>

            <li><a href="#">

                Services

                <span><span>Services</span><span>Services</span></span>

            </a></li>

            <li><a href="#">

                Products

                <span><span>Products</span><span>Products</span></span>

            </a></li>

            <li><a href="#">

                    About

                <span><span>About</span><span>About</span></span>

            </a></li>

            <li><a href="#">

                Contact

                <span><span>Contact</span><span>Contact</span></span>

            </a></li>

            <li><a href="#">

                Blog

                <span><span>Blog</span><span>Blog</span></span></a>

                <ul class="clearfix unstyled drop-menu">

                    <li><a href="#">

                            Html5

                            <span><span>Html5</span><span>Html5</span></span>

                    </a></li>

                    <li><a href="#">

                        Css3

                        <span><span>Css3</span><span>Css3</span></span>

                    </a></li>

                    <li><a href="#">

                        JavaScript

                        <span><span>JavaScript</span><span>JavaScript</span></span>

                    </a></li>

                    <li><a href="#">

                        Videogames

                        <span><span>Videogames</span><span>Videogames</span></span>

                    </a></li>

                </ul>

            </li>

            <li><a href="#">

                Shop On-line

                <span><span>Shop On-line</span><span>Shop On-line</span></span>

            </a></li>

        </ul>

    </div>

</body>

</html>

提问: three-d-box 沿着Z轴向里移动25px, front,back沿着Z轴向外移动25px,  “25px”的这个值是怎么计算出来的!

写回答 关注

1回答

  • 大年糕
    2017-11-29 11:16:42

    不知道我这么理解对不对,因为font-size: 20px, line-height: 20px , 而上下内边距 为 15px,从水平中线算起,即字高的一半 10px+内边距15px=25px,这样 沿X轴水平旋转的时候正好能遮挡住! 

    新手自学 希望能给些详细的讲解!

十天精通CSS3

本课程为CSS3入门教程,深刻详解CSS3知识让网页穿上绚丽装备

242220 学习 · 2623 问题

查看课程

相似问题