zoukankan      html  css  js  c++  java
  • CSS3学习-用CSS制作立体导航栏

    <!doctype html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>CSS制作立体导航</title>
            <link rel="stylesheet" href="http://www.w3cplus.com/demo/css3/base.css">
            <style>
                body{
                  background: #ebebeb;
                }
                .nav{
                  width:560px;
                  height: 50px;
                  font:bold 0/50px Arial;
                  text-align:center;
                  margin:40px auto 0;
                  background: #f65f57;
                 /*制作导航圆角*/
                  border-radius: 8px;
                 /*制作导航立体效果*/
                  box-shadow: 0 7px 0 #ba4a45;
                }
                .nav a{
                  display: inline-block;
                  /* a元素的过渡属性:1、设置所有a标签过渡;2、过渡时间;3、速度曲线:以慢速开始的过渡效果 */
                    -webkit-transition: all 0.2s ease-in;/* Safari 和 Chrome */
                    -moz-transition: all 0.2s ease-in;/* Firefox */
                   -o-transition: all 0.2s ease-in;/* Opera */
                   -ms-transition: all 0.2s ease-in;/* IE 9 */
                   transition: all 0.2s ease-in;
                }
                .nav a:hover{
                    /* 鼠标移上时的效果;定义2D旋转10度 */
                  -webkit-transform:rotate(10deg);
                  -moz-transform:rotate(10deg);
                  -o-transform:rotate(10deg);
                  -ms-transform:rotate(10deg);
                  transform:rotate(10deg);
                }
    
                .nav li{
                  position:relative;
                  display:inline-block;
                  padding:0 16px;
                  font-size: 14px;
                  text-shadow:1px 2px 4px rgba(0,0,0,.5);
                  list-style: none outside none;
                }
                /*制作导航分隔线效果*/
                .nav li::before,
                .nav li::after{
                  content:"";
                  position:absolute;
                  top:14px;
                  height: 25px;
                  width: 1px;
                }
                .nav li::after{
                  right: 0;
                  /* 线性渐变 */
                  background: -moz-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,.2) 50%, rgba(255,255,255,0));
                  background: -webkit-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,.2) 50%, rgba(255,255,255,0));
                  background: -o-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,.2) 50%, rgba(255,255,255,0));
                  background: -ms-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,.2) 50%, rgba(255,255,255,0));
                  background: linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,.2) 50%, rgba(255,255,255,0));
                }
                .nav li::before{
                  left: 0;
                  background: -moz-linear-gradient(top, #ff625a, #9e3e3a 50%, #ff625a);
                  background: -webkit-linear-gradient(top, #ff625a, #9e3e3a 50%, #ff625a);
                  background: -o-linear-gradient(top, #ff625a, #9e3e3a 50%, #ff625a);
                  background: -ms-linear-gradient(top, #ff625a, #9e3e3a 50%, #ff625a);
                  background: linear-gradient(top, #ff625a, #9e3e3a 50%, #ff625a);
                }
                /*删除导航第一个导航项左边的分隔线*/
                .nav li:first-child::before{
                  background: none;
                }
                /*删除导航最后一个导航右边的分隔线*/
                .nav li:last-child::after{
                  background: none;
                }
                .nav a,
                .nav a:hover{
                  color:#fff;
                  text-decoration: none;
                }
    
            </style>
        </head>
        <body>
            <ul class="nav">
            <li><a href="">首页</a></li>
            <li><a href="">个人简介</a></li>
            <li><a href="">作品集</a></li>
            <li><a href="">博客</a></li>
            <li><a href="">资源</a></li>
            <li><a href="">联系我</a></li>
            </ul>
        </body>
    </html>

    效果图:

    1

    2

    总结:

    1、body部分用无序列表

    2、(1)hover

        鼠标移上时的效果。

      (2)疑问::before和:before的区别

        简单来说单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。

        w3c关于css选择器的规范:

    A pseudo-element is made of two colons (::) followed by the name of the pseudo-element.

    This :: notation is introduced by the current document in order to establish a discrimination between pseudo-classes and pseudo-elements. For compatibility with existing style sheets, user agents must also accept the previous one-colon notation for pseudo-elements introduced in CSS levels 1 and 2 (namely, :first-line:first-letter:before and :after). This compatibility is not allowed for the new pseudo-elements introduced in CSS level 3.

        简单翻译:伪元素由双冒号和伪元素名称组成。双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存 在的伪元素写法,比如:first-line、:first-letter、:before、:after等,而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。

        

        那么现在就可以完整的回答标题中的问题了,对于CSS2之前已有的伪元素,比如:before,单冒号和双冒号的写法::before作用是一样的

        所以,如果你的网站只需要兼容webkit、firefox、opera等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容IE浏览器,还是用CSS2的单冒号写法比较安全。

        

  • 相关阅读:
    css兼容性大坑
    JS获取元素CSS值
    calendar的一些操作
    java日期工具类
    redis的一些操作
    webstorm ES6 转 ES5
    基于时间的动画算法
    3434
    MySQL登陆知识
    MySQL密码知识点
  • 原文地址:https://www.cnblogs.com/zmx-xiao-xiao/p/7668993.html
Copyright © 2011-2022 走看看