Heim Web-Frontend CSS-Tutorial Clip implementiert Ring-Fortschrittsbalken in CSS3

Clip implementiert Ring-Fortschrittsbalken in CSS3

Feb 09, 2018 am 11:14 AM
clip css css3

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zum Beispielcode des CSS3-Clips zur Implementierung des Ring-Fortschrittsbalkens vor. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Es gibt eine CSS-Eigenschaft namens „clip“, was „Trimmen“ bedeutet.

Clip-Eigenschaft schneidet absolut positionierte Elemente ab. Diese Eigenschaft wird verwendet, um ein Beschneidungsrechteck zu definieren. Bei einem absolut definierten Element ist nur der Inhalt innerhalb des Rechtecks ​​sichtbar. Inhalte außerhalb dieses Beschneidungsbereichs werden entsprechend dem Überlaufwert verarbeitet.

Ring-Fortschrittsbalken.gif

Wie kann man den Effekt eines solchen Ring-Fortschrittsbalkens erzielen? Lassen Sie uns heute darüber sprechen, wie Sie es mit CSS3 implementieren.

Implementierungsideen

Der Ring ist sehr einfach. Eine Zeile von cssborder-radius:50% kann implementiert werden, und es gibt kein Kompatibilitätsproblem IE, lass es raus...

Wir brauchen hier drei Ringe, einen vollen und zwei halbe. Ich habe das Bild unten grob gezeichnet

Hier habe ich einen Clip verwendet, um den halbkreisförmigen Ring auszuschneiden. Der Hauptcode lautet wie folgt:


.left{
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: 10px solid lightblue;
    position:absolute;
    top: -10px;   /* 10的原因是因为边框是10个像素 */
    right: -10px;
    clip: rect(0 100px 200px 0);  /* 上面为0 右边到100px 下面200px 左边到0 这个区域的我们裁剪出来 */ 
}
Nach dem Login kopieren

Die rechte Seite ist ähnlich, außer dass die Zuschneideposition geändert wurde


.right{
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: 10px solid lightblue;
    position:absolute;
    top: -10px;  /* 10的原因是因为边框是10个像素 */
    right: -10px;
    clip: rect(0 200px 200px 100px);  /* 位置更改,计算可以参考上图 */ 
}
Nach dem Login kopieren

Vollständiger Code


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        p{
            box-sizing: border-box;
        }
        .box{
            width: 200px;
            height: 200px;
            position: relative;
            background-color: #ccc;
            border-radius: 50%;
            left: 40%;
            top: 200px;

        }
        .num{
            position: absolute;
            top: 50%;
            left: 50%;
            background: #fff;
            border-radius: 50%;
            width: 180px; 
            height: 180px;
            transform: translate(-50%, -50%);
            text-align: center;
            line-height: 180px;
            font-size: 32px;
        }
        
        
        .clip{
            width: 200px;
            height: 200px;
            position: absolute;
            border: 10px solid #ccc;
            border-radius: 50%;
            clip: rect(0, 200px, 200px, 100px);
        }
        .left{
            width: 200px;
            height: 200px;
            position: absolute;
            border: 10px solid lightblue;
            border-radius: 50%;
            clip: rect(0 100px 200px 0);
            top: -10px;
            left: -10px;
        }
        .right{
            width: 200px;
            height: 200px;
            position: absolute;
            border: 10px solid lightblue;
            border-radius: 50%;
            clip: rect(0 200px 200px 100px);
            top: -10px;
            left: -10px;
        }
        .width-none{
            width: 0;
        }
        .auto{
            clip: auto;
        }
    </style>
</head>
<body>
    <p class="box">
        <p class="clip">
            <p class="left"></p>
            <p class="right width-none"></p>
        </p>
        <p class="num">

        </p>
    </p>
    <script >
        let clip = document.querySelector('.clip'),
        left = document.querySelector('.left'),
        right = document.querySelector('.right'),
        num = document.querySelector('.num'),
        rotate = 0;
    
        let loop = setInterval(() => {
            if(rotate >= 100){
                rotate = 0;
                right.classList.add('width-none');
                clip.classList.remove('auto');
            } else if(rotate > 50){
                right.classList.remove('width-none');
                clip.classList.add('auto');
            }
            rotate++;
            left.style.transform = 'rotate('+ 3.6*rotate + 'deg)';
            num.innerHTML = `${rotate}%`
        },100)

    </script>
</body>
</html>
Nach dem Login kopieren

Erklären Sie kurz den obigen Code

1. Der rechte Halbkreis ist ausgeblendet. Dies liegt daran, dass wir den linken Halbkreis drehen müssen Damit sich der linke Halbkreis an die Position des rechten Kreises bewegt und dann die rechte Seite anzeigt, warten Sie einfach, bis er sich um 180 Grad dreht.

Gleichzeitig sehen wir, dass der Clip: rect(0, 200px, 200px, 100px); zum Hauptkreis hinzugefügt wird. Dies liegt daran, dass unser Fortschritt standardmäßig 0 % beträgt. und wir können es nur verbergen, wenn wir die rechte Seite auf der linken Seite anzeigen, aber ist unsere rechte Seite nicht verborgen? Was zeigt es dann? Denn wenn man es nach links dreht, sieht man den Kreis, der sich nach rechts dreht. Es ist etwas kompliziert, bitte kombinieren Sie es mit dem Code und verstehen Sie es besser

3. Wenn die linke Seite um 180 gedreht wird, müssen wir die rechte Seite anzeigen und den Zuschnitt des Box-Elements auf die Standardeinstellung setzen Wert, der kein Zuschneiden ist, sodass die linken und rechten Kreise vollständig angezeigt werden können.

4. Schließlich verwenden wir js, um den Drehwinkel zu steuern und den Prozentsatz auf der Seite anzuzeigen

Schreiben Sie am Ende

Wenn Sie können Ich sehe die obige Erklärung nicht. Verstehen Sie sie, lesen Sie sie einfach nicht, fügen Sie den Code in das lokale Debugging ein und verstehen Sie ihn selbst.

Seien Sie nicht zu ungeduldig, Code ist die beste Sprache.

Verwandte Empfehlungen:

CSS3-Methode zum Implementieren eines kreisförmigen Fortschrittsbalkens

Detaillierte Erläuterung der Leinwand zum Implementieren eines bogenförmigen und kreisförmigen Fortschritts bar-Instanzmethode

Verwenden eines CSS-Clips zum Implementieren eines Tutorialbeispiels für den Audiowiedergabering-Fortschrittsbalken

Das obige ist der detaillierte Inhalt vonClip implementiert Ring-Fortschrittsbalken in CSS3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet Platzhalter in Vue? Was bedeutet Platzhalter in Vue? May 07, 2024 am 09:57 AM

Was bedeutet Platzhalter in Vue?

So schreiben Sie Leerzeichen in Vue So schreiben Sie Leerzeichen in Vue Apr 30, 2024 am 05:42 AM

So schreiben Sie Leerzeichen in Vue

Was bedeutet span in js Was bedeutet span in js May 06, 2024 am 11:42 AM

Was bedeutet span in js

Wie man Dom in Vue bekommt Wie man Dom in Vue bekommt Apr 30, 2024 am 05:36 AM

Wie man Dom in Vue bekommt

Was bedeutet rem in js Was bedeutet rem in js May 06, 2024 am 11:30 AM

Was bedeutet rem in js

So führen Sie Bilder in Vue ein So führen Sie Bilder in Vue ein May 02, 2024 pm 10:48 PM

So führen Sie Bilder in Vue ein

Welche Funktion hat das Span-Tag? Welche Funktion hat das Span-Tag? Apr 30, 2024 pm 01:54 PM

Welche Funktion hat das Span-Tag?

In welcher Sprache ist das Browser-Plugin geschrieben? In welcher Sprache ist das Browser-Plugin geschrieben? May 08, 2024 pm 09:36 PM

In welcher Sprache ist das Browser-Plugin geschrieben?

See all articles