CSS3 :before和:after伪元素

“伪元素”,顾名思义。它创建了一个虚假的元素,并插入到目标元素内容之前或之后。

        p.box::before{
            content: "#";
        }
        p.box::after{
            content: "#";
        }

浏览器截图:
这里写图片描述

像上面那样用:before和:after锁定相同的元素。严格的说,在代码中他们是伪元素。
1.1需要注意的是,你可以设置content属性的内容为空,但是不可以完成移除content属性,否则伪元素将不起作用。至少,content属性需要空引用作为它的值(即:content:“”)。
1.2可以用两个冒号(::before和::after)写伪元素,对于这两种写法没有什么不同,仅仅一点不同的是,伪元素(双冒号),css3中的是伪类是(单冒号)。
1.3插入内容的特点
插入的内容在页面的源码里是不可见的。只能在css里可见

同时,插入的元素在默认情况下是内联元素(或者,在html5中,在文本语义的类别里)。因此,为了给插入的元素赋予高度,填充,边距等等,你通常必须显式地定义它是一个块级元素。
(当元素为块级元素时,设置的宽高有效。而当元素时内联元素时,设置的宽高对元素不起作用。)

p.box::before{
            content: "#";
            display: block;
            width: 100px;
            height: 100px;
            background-color: #dcdcdc;
        }
        p.box::after{
            content: "#";
            /*display: block;*/
            width: 100px;
            height: 100px;
            background-color: #dcdcdc;
        }

浏览器截图:
这里写图片描述
1.4你的直觉是:before和:after伪元素可能是 插入的内容会被注入到目标元素的前或后注入。但是,不是这样的。

注入的内容将是有关联的目标元素的子元素,但它会被置于这个元素的任何内容的“前”或“后”。

p.box {
          width: 300px;
          border: solid 1px red;
          padding: 20px;
        }

        p.box:before {
          content: "#";
          border: solid 1px red;
          padding: 2px;
          margin: 0 10px 0 0;
        }   

浏览器截图:
这里写图片描述
可以看到,不是插入“before”到段落,而是伪元素被置于到此段落的“box content”的前面。
1.5可利用伪元素画一些图形


.box{
            max-width: 750px;
            min-height: 130px;
            margin-left: 25px;
            background: #f2f2f2;
            padding: 10px 40px 0px;
            position: relative;
            border-radius: 5px;
        }
         .box:before{
            display: block;
            position: absolute;
            width: 0px;
            height: 0px;
            border: 8px solid #f2f2f2;
            border-top-color: transparent;
            border-left-color: transparent;
            left: -16px;
            top: 40px;
            content: " ";
        }

    <div class="box">

这里写图片描述

<style>
        body{
            background:#ccc;
        }
        .jiao{
            height:400px;
            width:500px;
            margin:30px auto;
            background:#fff;
            position: relative;
            overflow: hidden;
        }
        .jiao::before{
            display:block;
            content:"";
            width:130%;
            height:100px;
            background:#ccc;
            position: absolute;
            top:-100px;
            transform-origin: left bottom;
            transform: rotate(8deg);
        }
    </style>

<div class="jiao">

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值