zoukankan      html  css  js  c++  java
  • css before,after伪元素妙用

          我们知道,css伪元素包括after,before,first-letter等,通过合理的利用伪元素,我们可以让我们的结构更简洁。

          通常写法如p::after{content:' '},其中content内容可以是字符也可以是图片,例如p:before{content:'尾部'},p:after { content:url(img.jpg); } ,我们最常用的可能是用来清除浮动或添加一些简单的元素(如div首尾内容等)。

          今天来总结一下其他的几种用法:

          以下代码全部针对谷歌浏览器,如需针对其他浏览器,需用兼容性写法

          一.常见消息框

         假如我们要实现这样的效果要怎么做?用图片吗?no!

        

         我们知道当设置元素宽高都为0px时,设置4条border为不同颜色,将会是这个样子          

     

        所以我们可以利用这个特性来制作上面的内容: 

     1 <style>
     2 div{300px;
     3     background-color:rgba(0,0,0,0.7);
     4     color:#fff;
     5     font-family:'Microsoft YaHei';
     6     text-align:center;
     7     padding:5px;
     8     margin:100px auto;
     9     position:relative
    10 }
    11 div::before{content:' ';
    12             0px;
    13             height:0px;
    14             position:absolute;
    15             left:-12px;
    16             top:50%;
    17             -webkit-transform:translate(0px,-50%);
    18             border:6px solid rgba(0,0,0,0.7);
    19             border-color:transparent rgba(0,0,0,0.7) transparent transparent
    20 }
    21 </style>
    22 
    23 <div>我是内容我是内容我是内容</div>
    

      注意,此时伪类content:' ',而非content:'',而且伪类4条边必须宽度相同,而且其他三条边为transparent才可以;对于-webkit-transform设置在之前的文章中已经讲过,可以通过设置定位元素left,top值为50%,translate(-50%,-50%) 来使任意宽高的元素居中。

         ps:当然我们也可以通过定位叠加来实现有边框有底色的小三角。

         二.阴影

        先看下图,通过伪类,我们可以实现如下效果,而不用再用图片

        

        我们来看代码:

        

     1 <style>
     2 body{background-color:#ebebeb}
     3 div.outer{400px;
     4     height:250px;    
     5     padding:5px;
     6     margin:100px auto;
     7     position:relative;    
     8 }
     9 div.child{
    10     position:absolute;
    11     top:0px;
    12     left:0px;
    13     right:0px;
    14     bottom:0px;
    15     background-color:#fff;
    16     color:#000;
    17     line-height:250px;
    18     font-family:'Microsoft YaHei';
    19     text-align:center;
    20     z-index:2
    21 }
    22 div.outer::before,div.outer::after{content:'';
    23             z-index:1;
    24             50%;    
    25             height:3px;        
    26             position:absolute;
    27             left:10px;
    28             bottom:7px;
    29             background-color:transparent;
    30             box-shadow:5px 5px 10px rgba(0,0,0,0.5);
    31             -webkit-transform:rotate(-3deg);
    32             
    33 }
    34 div.outer::after{
    35     left:auto;
    36     right:10px;
    37     -webkit-transform:rotate(3deg)
    38 }
    39 </style>
    40 <div class='outer'>
    41    <div class='child '>
    42       我是内容我是内容我是内容
    43    </div>
    44 </div>

           通过设置before,after不同位置,不同旋转角度,可以实现现在网络很流行的阴影效果,同时要保证伪类的颜色及z-index。有了这种方法 我们就可以扩展出各种各样的阴影效果,同理照片叠加效果也是类似,自己动手试验一下吧。     

           

  • 相关阅读:
    Java的参数传递是值传递还是引用传递
    10张图带你深入理解Docker容器和镜像
    Java 如何有效地避免OOM:善于利用软引用和弱引用
    事务与一致性:刚性or柔性
    Java 面试题史上最强整理
    三张图秒懂Redis集群设计原理
    iOS开发笔记系列-基础4(变量与数据类型)
    iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
    iOS开发笔记系列-基础2(类)
    iOS开发笔记系列-基础1(数据类型与表达式)
  • 原文地址:https://www.cnblogs.com/mopagunda/p/5385069.html
Copyright © 2011-2022 走看看