css - 为什么要加before,有何作用?
迷茫
迷茫 2017-04-17 13:57:21
[HTML讨论组]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>loading</title>
    <style>
        .loader { 
            position: relative;
            margin: 0 auto;
            width: 100px;/*改变这个值可以改变loading大小*/

        }

        .loader:before {
            content: '';
            display: block;
            padding-top: 100%;
        }

        .circular {
            -webkit-animation: rotate 2s linear infinite;
            -o-animation: rotate 2s linear infinite;
            animation: rotate 2s linear infinite;
            height: 100%;
            transform-origin: center center;
            width: 100%;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
        }

        .path {
            stroke-dasharray: 1,200;
            stroke-dashoffset:0;
            -webkit-animation: dash 1.5s ease infinite , color 6s ease infinite;
            -o-animation: dash 1.5s ease infinite , color 6s ease infinite;
            animation: dash 1.5s ease infinite , color 6s ease infinite;
            stroke-linecap: round;
        }

        @keyframes rotate {
            100%{
                transform: rotate(360deg);
            }
        }

        @keyframes dash {
            0%{
                stroke-dasharray: 1,200;
                stroke-dashoffset:0;
            }
            50%{
                stroke-dasharray: 89,200;
                stroke-dashoffset:-35px;
            }
            100%{
                stroke-dasharray: 89,200;
                stroke-dashoffset:-124px;
            }
        }

        @keyframes color {
            100%,0%{
                stroke: red;
            }
            40%{
                stroke: blue;
            }
            60%{
                stroke: green;
            }
            90%{
                stroke: yellow;
            }
        }
    </style>
</head>
<body>
    <p class="loader">
        <svg class="circular" viewBox="25 25 50 50">
            <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" ></circle>
        </svg>
    </p>
</body>
</html>

这是一个loading的svg图,不理解其中.loader:before 的作用,求大神解答。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
巴扎黑

:before 绑定到loader上的伪元素,可以不要 但是loader样式就得加上高度
这里的before是为了占位,等同于

<p class="loader">
  <p class="before">
    <svg class="circular" viewBox="25 25 50 50">
        <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2"></circle>
    </svg>
  </p>
</p>


.before {
  padding-top: 100%;
}
黄舟

这种问题 应该直接问 baidu 或者 google 就可以标准详细的知道了

巴扎黑

有时候可以使用伪元素来实现标签的效果,在标签的类名中书写before和after,使用定位的方式,制作图标、层叠等,页面渲染的标签个数减少了,实际效果一样可以用JS去控制。

大家讲道理

你可以把before那段代码去掉,然后就知道为什么了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号