为什么五角星上/左方的定位不是从0开始?

为什么五角星上/左方的定位不是从0开始?

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>2-9编程练习-五星红旗</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        main{
            width: 460px;
            height: 310px;
            background-color: red;
        position: relative ;
            margin: 0 auto;
        }
        div{
            width: 0;
            height: 0;
            position: absolute;
            border-bottom: 70px solid yellow;
            border-left: 100px solid transparent;
            border-right: 100px solid transparent;
            /* 以上是一个等腰三角形 */
            transform: rotate(35deg);/* 顺时针旋转30度,整体缩小70% */
        }
        div::before{
            width: 0;
            height: 0;
            position: absolute;
            content: "";
            border-bottom: 80px solid yellow;
            border-left: 30px solid transparent;
            border-right: 30px solid transparent;
            transform: rotate(-35deg);/* 逆时针旋转35度,并继承div的缩小属性 */
            top: -45px;
            left: -65px;
        }
        div::after{
            width: 0;
            height: 0;
            position: absolute;
            content: "";
            border-bottom: 70px solid yellow;
            border-left: 100px solid transparent;
            border-right: 100px solid transparent;
            transform: rotate(-70deg);/* 逆时针旋转70度,并继承div的缩小属性 */
            top: 3px;
            left: -105px;
        }
        .div1{
            top: 40px;
            left: -30px;
            transform: rotate(35deg) scale(0.4,0.4);
        }
        .div2{
            top: -5px;
            left: 50px;
            transform: rotate(-15deg) scale(0.15,0.15);
        }
        .div3{
            top: 25px;
            left: 80px;
            transform: rotate(0deg) scale(0.15,0.15);
        }
        .div4{
            top: 69px;
            left: 80px;
            transform: rotate(35deg) scale(0.15,0.15);
        }
        .div5{
            top: 100px;
            left: 50px;
            transform: rotate(55deg) scale(0.15,0.15);
        }
    </style>
</head>
<body>
    <main>
        <div class="div1"></div>
        <div class="div2"></div>
        <div class="div3"></div>
        <div class="div4"></div>
        <div class="div5"></div>
    </main>
</body>
</html>


正在回答

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

2回答

同学你好, 是指如下这种改法吗?

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

如果是这样的话,那么是因为给div以及它的伪元素before和after设置了transform属性中旋转和缩放影响了元素的显示位置,让同学误以为定位没有参考父元素的边框,实际上绝对定位元素一定是参考有定位属性(static除外)的先辈元素进行定位的。

示例: 可以将元素的tansform属性去除查看效果

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

效果图:可以看出是从父元素的左上角开始定位的

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

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

好帮手慕星星 2019-11-27 17:57:11

同学你好,代码实现效果不错,很棒!

另外,同学的‘为什么五角星上/左方的定位不是从0开始?’这句话老师不太明白意思,建议描述具体一些,便于准确定位问题所在,帮助你解决。

祝学习愉快!

  • 提问者 慕神4155339 #1
    五角星的绝对定位为什么不是从父元素main的边框处开始定位,你把定位left和top的数值改成0就能看出来
    2019-11-27 19:29:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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