课程咨询 :0551-64632520

合肥web前端培训

合肥web培训 > 达内新闻 > 浅析::after,::before伪元素制作动画效果
  • 浅析::after,::before伪元素制作动画效果

    发布:合肥web培训      来源:达内新闻      时间:2016-05-25

  • 合肥达内web培训专家介绍如何使用Html5 自定义数据属性和 CSS 的伪元素来制作动画。

    相信大家都对 ::after,::before,这两个CSS伪元素都不陌生,这两个元素一般都要配合content属性来为该元素添加装饰内容。content这个虚拟元素默认是行内元素。

    代码如下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf8" >
        <title></title>
        <style>
        body {
            font-family: '微软雅黑', Calibri, Arial, sans-serif;
            color: #89867e;
            background: #f9f9f9;
        }
        *, *:after, *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
        a {text-decoration: none;outline: none;}
        a img {border: none;}
        /* demo1 css */
        .caption {display: inline-block;position: relative;margin: 10px;}
        .caption img {display: block;max-width: 100%;}
        .caption::before,
        .caption::after {
            position: absolute;
            width: 100%;
            color: #fff;
            padding: 20px;
            opacity: 0;
            z-index: 1;
            -webkit-transition: opacity .3s;
               -moz-transition: opacity .3s;
                    transition: opacity .3s;
        }
        .caption::before {
            content: attr(data-title); /* 获取自定义数据属性 标题*/
            top: 0;
            height: 30%;
            background: rgb(197, 71, 26);
            font-size: 40px;
            font-weight: 300;
        }
        .caption::after {
            content: attr(data-description) ; /* 获取自定义数据属性 描述*/
            top: 30%;
            height: 70%;
            background: #a21f00;
            font-size: 16px;
            text-align: right;
        }
        .caption:hover::before,
        .caption:hover::after {
            opacity: 1;
        }
        /* demo2 css*/
        .caption2{display: inline-block;position: relative;margin: 10px;overflow: hidden;background: #000;}
        .caption2 img{
            display: block;
            max-width: 100%;
            -webkit-transition:opacity 0.3s ease-in-out;
               -moz-transition:opacity 0.3s ease-in-out;
                    transition:opacity 0.3s ease-in-out;
        }
        .caption2:hover img{
            opacity: .5;
        }
        .caption2::before,
        .caption2::after{
            position: absolute;
            background: #fff;
            width: 100%;
            height: 50%;
            color: #fff;
            padding: 20px;
            -webkit-transition:-webkit-transform 0.3s ease-in-out;
               -moz-transition:-moz-transform 0.3s ease-in-out;
                    transition:transform 0.3s ease-in-out;
        }
        .caption2::before{
            content: attr(data-title);
            top: 0;
            z-index: 1;
            background: #B87046;
            font-size: 40px;
            font-weight: 300;
            -webkit-transform: translateY(-100%);
            -moz-transform: translateY(-100%);
            transform: translateY(-100%);
        }
        .caption2::after{
            content: attr(data-description);
            top: 50%;
            background: #E6453E;
            font-size: 16px;
            text-align: left;
            -webkit-transform: translateY(100%);
            -moz-transform: translateY(100%);
            transform: translateY(100%);
        }
        .caption2:hover::before,
        .caption2:hover::after{
            -webkit-transform: translateY(0);
            -moz-transform: translateY(0);
            transform: translateY(0);
        }

        /* demo3 css */
        span[data-descr] {
          position: relative;
          text-decoration: underline;
          color: #00F;
          cursor: help;
        }

        span[data-descr]:hover::after {
          content: attr(data-descr);
          position: absolute;
          left: 0;
          top: 24px;
          min-width: 200px;
          border: 1px #aaaaaa solid;
          border-radius: 10px;
          background-color: #ffffcc;
          padding: 12px;
          color: #000000;
          font-size: 14px;
          z-index: 1;
        }

        </style>
    </head>
    <body>
    <a
        class="caption"
        href="#"
        data-title="Lorem ipsum" data-description="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam">
        <img src="http://payload300.cargocollective.com/1/5/182469/8304068/SmugEagle.png" alt="deom1">
    </a>

    <a
        class="caption2"
        href="#"
        data-title="Lorem ipsum" data-description="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam">
        <img src="http://payload300.cargocollective.com/1/5/182469/8304068/gunslinger.png" alt="deom2">
    </a>

    <!-- deom3 -->
    <p>这是上面代码的实现<br />
      我们有一些 <span data-descr="collection of words and punctuation">文字</span> 有一些
      <span data-descr="small popups which also hide again">提示</span>。<br />
      把鼠标放上去<span data-descr="not to be taken literally">看看</span>.
    </p>

    </body>
    </html>

    使用鼠标的:hover来出发过渡动画,过渡动画的实现主要由CSS3 的transition属性来实现的,利用::after,::before可以做出浮动提示框。

    达内web培训专家提示,content属性还有很多种,列举如下,大家可以根据情况使用。


    content: normal                                /*  :before 和 :after 伪类元素中会被视为 none  */
    content: none                    /*不会产生任何元素*/

    content: 'prefix'                              /*文本内容*/
    content: url(http://www.example.com/test.html)    /* URI值会指定一个外部资源 */
    content: chapter_counter                       /* <counter> values */
    content: attr(value string)                    /*将元素的X属性以字符串形式返回,也是今天deom用上的 */
    content: open-quote                            /* Language- and position-dependant keywords */
    content: close-quote
    content: no-open-quote
    content: no-close-quote

    content: open-quote chapter_counter            /* Except for normal and none, several values can be used simultaneously */

    content: inherit

    推荐文章

上一篇:jQuery Deferred概念及使用

下一篇:巧用:marquee&js的信息滚动

最新开班日期  |  更多

WEB零基础周末班

WEB零基础周末班

开班日期:

WEB零基础全日制班

WEB零基础全日制班

开班日期:3-08

WEB前端业余班

WEB前端业余班

开班日期:3-08

WEB前端就业班

WEB前端就业班

开班日期:3-08

  • 地址:合肥市蜀山区肥西路66号汇金大厦21楼
  • 课程培训电话:0551-64632520     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56