合肥Web培训
达内合肥web培训中心

0551-64632511

热门课程

浅析::after,::before伪元素制作动画效果

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

合肥达内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前端培训带给你专业web前端知识

合肥Web培训学校对网站前端性能做相应的优化

选择城市和中心
贵州省

广西省

海南省

台湾