Heim  >  Artikel  >  Web-Frontend  >  Tutorial-Beispiel für die Verwendung eines CSS-Clips zur Implementierung der Ring-Fortschrittsleiste für die Audiowiedergabe

Tutorial-Beispiel für die Verwendung eines CSS-Clips zur Implementierung der Ring-Fortschrittsleiste für die Audiowiedergabe

零下一度
零下一度Original
2017-05-13 13:09:472094Durchsuche

Plötzlich besteht die Notwendigkeit, einen Ring AudioWiedergabeFortschrittsbalken zu erstellen (der Effekt im Bild oben) aber es wurde nicht realisiert. Schließlich habe ich meine Mutter überprüft und herausgefunden, dass CSS auch ein Clip-Attribut hat, das die Anforderungen perfekt erfüllt. Teilen Sie es, vielleicht kann es anderen Freunden helfen. Ob es nützlich ist, weiß ich nicht, wen interessiert das? OK, hör auf zu reden, lass uns gehen!

CSS-Clip-Attribut

  Lassen Sie uns zunächst kurz das CSS-Clip-Attribut verstehen

Erklärung

Clip-Attribut 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.

Form Legen Sie die Form des Elements fest. Die einzigen zulässigen Formwerte sind: rect (oben, rechts, unten, links)

automatischer Standardwert. Es wird kein Clipping angewendet.

inherit gibt an, dass der Wert des Clip-Attributs vom übergeordneten Element geerbt werden soll.

Verwenden Sie

     Das Prinzip ist: Lassen Sie ein quadratisches p durch Ausschneiden nur die rechte Hälfte anzeigen und erstellen Sie dann durch Ausschneiden einen Rahmen mit einem Rand in diesem p (die Größe des Randes ist die Größe des Fortschrittsbalkens) Der linke Halbkreis, da p nur die rechte Hälfte anzeigt, ist dieser Halbkreis beschnitten und nicht sichtbar. Kombinieren Sie dann die Drehung, um den Fortschrittsbalken innerhalb von 50 % zu drehen. Wenn er 50 % überschreitet, brechen Sie das Abschneiden von p ab und verwenden Sie dann einen Halbkreis, um 50 % des Fortschrittsbalkens zu speichern, um einen Fortschrittsbalken von 100 % zu erzielen . Fügen Sie den Code ein und erläutern Sie dann den Schlüsselcode mit Kommentaren.

/*Css部分*/
.circleProgress_wrapper{/*设置圆环的大小*/
    margin: auto;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    cursor: pointer;
}
.slice{ /*这是一个裁去了左半部分,只显示右半部分的p*/
    position: absolute; /*必须是绝对定位元素,clip属性才会有效*/
    width: 100%;
    height: 100%;
    clip:rect(0,200px,200px,100px);/*top:0,right:200,bottom:200,left:100裁剪出右半部*/
}
.slice.gt50{/*当进度超过50%时,取消剪裁*/
    clip:rect(auto,auto,auto,auto);
}
.bar,.fill{ /*两个只显示左半部分的半圆*/
    position: absolute;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    border: 4px rgba(255, 249, 0, 0.77) solid;/*设置进度条大小和颜色值*/
    border-radius: 50%;
    clip: rect(0,100px,200px,0);/*top:0,right:100,bottom:200,left:0裁剪出左半部*/
}
.slice.gt50 .fill{/*当进度超过50%时,让fill旋转180度填充50%*/
    trans
for
m: rotate(180deg);
}
<!--html 部分 -->
<p class="circleProgress_wrapper">
    <p id="slice_wrapper" class="slice">    
        <p class="bar pre50"></p>
        <p class="fill"></p>
    </p>
</p>
//javscript部分
<script type="text/
javascript
" src="src/audioPlayPlugin.
js
"></script>
<script>
var bar=
document
.querySelector(".slice>.bar"),
    process=0,
    circleProgress=document.querySelector(".circleProgress_wrapper"),
    slice=document.getElementById("slice_wrapper");
var audio=
new
 audioController({ //创建一个音频
对象
        src:"
file
/test1.mp3",
        "
time
up
date
":function(){//监听timeupdate
事件
,也就是音频当前播放进度发生改变响应的事件
            /*
            *audio.getAttr("
current
Time" 获取当前播放的时间 s
            *audio.getAttr("duration") 获取音频时长
            *它们的比正好就是当前播放进度
            *再乘以360转换为进度条应该旋转的角度
            */
            process=audio.getAttr("currentTime")/audio.getAttr("duration")*360;
             parseInt(process)===180&&add
Class
(slice,"gt50");//当等于50%时,使用fill占满50%的进度条
              bar.style="transform:rotate("+(process)+"deg)";//根据播放进度设置
更新
进度条
            }
        }
    });
circleProgress.addEvent
List
ener("click",function(){ //点击播放
     if(audio.getAttr("paused")){                             
         audio.play()
     }
else
{
         audio.pause()
     }
 });
 function addClass(element,className){/*添加类名,完整代码已省略*/
    ...
 }
</script>

Vollständige Demo, hier habe ich ein audioPlayPlugin.js geschrieben, das einfach die allgemeinen Operationen von Audio-Tags kapselt. Github-Adresse, Codierungsadresse

Wenn ich schließlich etwas nicht klar erklärt oder falsch gesagt habe, können Sie gerne eine Nachricht hinterlassen, damit wir gemeinsam lernen und gemeinsam Fortschritte machen können.

【Verwandte Empfehlungen】

1. Besondere Empfehlung: „php Programmer Toolbox“ V0.1 Version herunterladen

2. Kostenloses CSS-Online-Video-Tutorial

3. php.cn Dugu Jiujian (2) - CSS-Video-Tutorial

Das obige ist der detaillierte Inhalt vonTutorial-Beispiel für die Verwendung eines CSS-Clips zur Implementierung der Ring-Fortschrittsleiste für die Audiowiedergabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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