关于::before 和::after的疑问。

关于::before 和::after的疑问。

http://img1.sycdn.imooc.com//climg/5e6e295f09ea125303360201.jpg

   div{

            width:0;

            height:0;

            border-top:40px solid yellow;

            border-left:60px solid transparent;

            border-right:60px solid transparent;

        }

        div:before{

            content:'';

            display:block;

            width:0;

            height:0;

            border-top:40px solid yellow;

            border-left:60px solid transparent;

            border-right:60px solid transparent;

        }

        div:after{

            content:'';

            display:block;

            width:0;

            height:0;

            border-top:40px solid yellow;

            border-left:60px solid transparent;

            border-right:60px solid transparent;

        }

老师解答一下:

1)为什么before和after产生的盒子没有出现在最左边了而是与左边产生了一段距离?

2)before和after他们一个是第一个子元素一个是最后一个子元素他和div自身设置得到的那个三角形是父子关系还是兄弟关系?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,对于你的问题解答如下:

  1. 因为:before和:after添加的伪元素是作为div的子元素. 默认是从父元素内容的左上角开始显示的

    http://img1.sycdn.imooc.com//climg/5e6ee8bd09cf358019660554.jpg

    可以给div四个边框都设置颜色方便查看效果

    http://img1.sycdn.imooc.com//climg/5e6ee8fd0945eba212420650.jpg

    http://img1.sycdn.imooc.com//climg/5e6ee91309a648ed05860310.jpg

    可以看出, 由于div盒子宽高为0, 图片中四个边框的交点位置,就是内容的位置,所以伪元素从内容位置开始显示,覆盖到边框上了

  2. before和after是是兄弟关系,与div是父子关系。可以检查元素,如下:

    http://img1.sycdn.imooc.com//climg/5e6ee82709759e4117020480.jpg

同学可以结合示例,测试理解下

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师