国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
アイデア
%%PRE_BLOCK_6%%
ホームページ ウェブフロントエンド CSSチュートリアル 純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法

純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法

Oct 19, 2018 pm 04:57 PM
css css3 css3アニメーション html 純粋なCSS実裝

この記事の內(nèi)容は、マテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)するための純粋な CSS の使用方法についてです。必要な方は參考にしていただければ幸いです。 。

このような特殊効果はよく見かけますよね、とてもかっこいいですよね

純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法

これが最も一般的ですGoogle マテリアル デザインの特殊効果では、この特殊効果をシミュレートする既製の JS ライブラリが市場に多數(shù)存在します。しかし、実際には、既存のプロジェクトでは、ユーザー エクスペリエンスを向上させるためにこのようなボタンを追加する必要がある場合があります。同時(shí)に、これらの JS ライブラリは少し大きすぎるように思えます。これらは js で実裝されているため、読み込みの問題にも注意が必要です。

それでは、CSS を使用してこの特殊効果を?qū)g現(xiàn)する方法はありますか?

アイデア

実際、これはアニメーションであり、完全な円が小さいものから大きいものへと成長します。 css3# を使用 ## のアニメーションは簡単に実裝できます

サンプル コード

@keyframes?ripple{
????from?{
????????transform:?scale(0);
????????opacity:?1;
????}
????to?{
????????transform:?scale(1);
????????opacity:?0;
????}
}
通常は

js を使用して実裝します非常に簡単な方法で、A class を追加し、class

サンプル コード

var?btn?=?document.getElementById('btn');
btn.addeventlistener('click',function(){
??addClass(btn,'animate')
},false)
btn.addeventlistener('transitionend',function(){//監(jiān)聽css3動(dòng)畫結(jié)束
??removeClass(btn,'animate')
},false)
## を削除します。 #それでは、CSS を介してそれを行うにはどうすればよいですか? アニメーションをトリガーするにはどうすればよいですか?

CSS の実裝

css でマウスと対話する疑似クラスには、主に

    hover# が含まれます。 ##マウス後
  • :active

    マウスプレス
  • :focus

    マウス フォーカス
  • :checked

    マウスが選択されました
  • 多くの場合、ページ上の効果は hover

    によって実現(xiàn)されます。これを?qū)g現(xiàn)するには、マウスを上に置くとエフェクトがトリガーされ、アニメーションが終了します。ただし、マウスを上に置いてすぐに離れると、アニメーションはすぐに終了します。
まずは試してみましょう。

構(gòu)造

これは私たちが書いたページの構(gòu)造とスタイルです

<style>
.btn{ 
  display: block; 
  width: 300px; 
  outline: 0; 
  overflow: hidden;  
  position: relative; 
  transition: .3s; 
  cursor: pointer; 
  user-select: none; 
  height: 100px; 
  text-align: center; 
  line-height: 100px; 
  font-size: 50px; 
  background: tomato; 
  color: #fff;  
  border-radius: 10px;
}
</style>
<a>button</a>
非常にシンプルで、普通のボタンのスタイルです

次に、ボタンに必要な正円を追加します。 純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法これを?qū)g現(xiàn)するために疑似要素を使用します

.btn:after{
????content:?'';
????position:?absolute;
????width:?100%;
????padding-top:?100%;
????background:?transparent;
????border-radius:?50%;
????left:?50%;
????top:?50%;
????transform:?translate(-50%,-50%)
}
オーバーフローを削除します: 上に隠れており、円を少し縮小して効果を確認(rèn)します

次に、ズーム アニメーションを作成します

@keyframes?ripple{
????from?{
????????transform:translate(-50%,-50%)?scale(0);
????????/**由于我們默認(rèn)寫了變換屬性,所以這里要補(bǔ)上translate(-50%,-50%),不然就會(huì)被替換了**/
????????background:?rgba(0,0,0,.25);
????}
????to?{
????????transform:translate(-50%,-50%)?scale(1);
????????background:?transparent;
????}
}
純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法ホバーの小さなインタラクティブ エクスペリエンス

マウスを渡してみますか?

.btn:hover:after{
??animation:?ripple?1s;
}

効果はまだ良好ですが、マウスがあまりにも早く離れると、新しく拡張された円がすぐに縮小してしまい、少し一貫性がありません。 純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法しかし、これは私たちが望んでいる効果ではありません。私たちが望んでいるのは、単に裝著するだけで再度トリガーされなくなるのではなく、1 回クリックして 1 回トリガーすることです。

active try

日常業(yè)務(wù)では、

active

も、通常はクリック効果のために使用されることが多いので、試してみましょう。

.btn:active:after{
??animation:?ripple?1s;
}

この効果も満足のいくものではなく、マウス ホールド 純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法 に少し似ています。完了するにはマウスを押し続ける必要があります。たとえば、上記の例では、アニメーションの実行中の実裝は 1s

です。その後、完全なアニメーション効果を確認(rèn)するには、そのボタンをクリックして

1s を続行する必要があります。そうでない場合は、上記のようなものです マウスが離れるとすぐに、アニメーションはすぐに撤回されます フォーカスエクスペリエンス 任意の要素にフォーカスする必要がある場合は、tabindex

屬性を指定できます

<a>button</a>
.btn:focus:after{
??animation:?ripple?1s;
}

foucs もトリガーできますが、トリガーされた後は、フォーカスを失った後にのみ再度トリガーできます。実際の操作パフォーマンスは、一度クリックした後、外側(cè)の空間純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法をクリックする他に方法はありませんか?

もちろんまだいくつかありますが、最後のものが間違いなく解決策です。笑checked

checked

は直接トリガーできません。 form 要素 選択後にトリガーされます。これを行うには、ページ構(gòu)造

<label>
??<input><span>button</span>
</label>

lable

に変更し、input[type=checkbox] を含めます。 tag 。主に、ボタンがクリックされたときに

input

の選択をトリガーします。 ちょっとしたスタイルを追加する<pre class="brush:php;toolbar:false">.btn&gt;span:after{ ??/**換一下選擇器**/ } .btn&gt;input[type=checkbox]{ ??display:?none } .btn&gt;input[type=checkbox]:checked+span:after{ ??animation:?ripple?1s; }</pre> <p>這樣也能觸發(fā)動(dòng)畫,但問題是,當(dāng)再次點(diǎn)擊的時(shí)候就成了非選中狀態(tài)了,怎么觸發(fā)動(dòng)畫呢?</p> <p>其實(shí)可以用<code>:not來實(shí)現(xiàn)

.btn>input[type=checkbox]:not(:checked)+span:after{
??animation:?ripple?1s;
}

乍一看好像挺聰明的,仔細(xì)一想,正反兩個(gè)都寫了動(dòng)畫,不就跟:checked沒關(guān)系了?還不如直接

.btn>input[type=checkbox]+span:after{
??animation:?ripple?1s;
}

無限輪回中...

這個(gè)問題困擾了我好久,不過皇天不負(fù)有心人,后來試著在兩種狀態(tài)下觸發(fā)不同的動(dòng)畫是可以分別觸發(fā)的,如下

.btn>input[type=checkbox]:checked+span:after{
??animation:?ripple1?1s;
}
.btn>input[type=checkbox]:not(:checked)+span:after{
??animation:?ripple2?1s;
}

這個(gè)應(yīng)該很好理解吧。

那么,重點(diǎn)來了,現(xiàn)在把動(dòng)畫ripple1ripple2里面的動(dòng)畫過程都改成一樣,也是可以分別觸發(fā)的,也就是說,只要?jiǎng)赢嬅Q不一樣,css都會(huì)當(dāng)成不同的動(dòng)畫來處理

這樣就簡單了,我們只需要默認(rèn)一個(gè)狀態(tài),選中一個(gè)狀態(tài),然后分別觸發(fā)名稱不同的動(dòng)畫就行了~

.btn>input[type=checkbox]+span:after{
??animation:?ripple-in?1s;
}
.btn>input[type=checkbox]:checked+span:after{
??animation:?ripple-out?1s;
}
@keyframes?ripple-in{
????from?{
????????transform:translate(-50%,-50%)?scale(0);
????????background:?rgba(0,0,0,.25);
????}
????to?{
????????transform:translate(-50%,-50%)?scale(1);
????????background:?transparent;
????}
}
@keyframes?ripple-out{/*僅僅名稱不同*/
????from?{
????????transform:translate(-50%,-50%)?scale(0);
????????background:?rgba(0,0,0,.25);
????}
????to?{
????????transform:translate(-50%,-50%)?scale(1);
????????background:?transparent;
????}
}

效果就如文章一開始所示,完美

完整demo如下

https://codepen.io/xboxyan/pe...

一些不足

由于上述動(dòng)畫樣式在默認(rèn)情況下就會(huì)被觸發(fā),所以頁面加載進(jìn)來就會(huì)看到按鈕上的水滴動(dòng)畫運(yùn)動(dòng)一次,不過也不是特別明顯,還可以接受。

其次,實(shí)際效果肯定是希望鼠標(biāo)點(diǎn)擊哪里,就以該點(diǎn)為中心擴(kuò)散,我們css肯定是做不到這點(diǎn)的,只能從中心擴(kuò)散,這也只能妥協(xié)了。這里提供一個(gè)思路,可以使用css的變量,每次點(diǎn)擊的時(shí)候吧相應(yīng)的值存在style里面,這樣css中也能用上。

希望能用css今后挖掘出更多有趣的效果^

以上が純粋な CSS を使用してマテリアル デザインでボタンの水滴アニメーション効果を?qū)g現(xiàn)する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CSSバックドロップフィルタープロパティを使用する方法は? CSSバックドロップフィルタープロパティを使用する方法は? Aug 02, 2025 pm 12:11 PM

バックドロップフィルターは、要素の背後にあるコンテンツに視覚効果を適用するために使用されます。 1。バックドロップフィルター:Blur(10px)およびその他の構(gòu)文を使用して、つや消しガラス効果を?qū)g現(xiàn)します。 2。ぼやけ、明るさ、コントラストなどの複數(shù)のフィルター関數(shù)をサポートし、重ねることができます。 3.ガラスカードの設(shè)計(jì)でよく使用されており、要素が背景と重複するようにする必要があります。 4.最新のブラウザには優(yōu)れたサポートがあり、@Supportsを使用してダウングレードソリューションを提供できます。 5。パフォーマンスを最適化するために、過度のぼかしと頻繁な再描畫を避けてください。この屬性は、要素の背後にコンテンツがある場合にのみ有効になります。

ユーザーエージェントスタイルシートとは何ですか? ユーザーエージェントスタイルシートとは何ですか? Jul 31, 2025 am 10:35 AM

ユーザーエージェントスタイルシートは、カスタムスタイルを追加していないHTML要素がまだ基本的な読み取り可能であることを確認(rèn)するために、ブラウザーが自動(dòng)的に適用するデフォルトのCSSスタイルです。それらはページの最初の外観に影響しますが、ブラウザには違いがあり、一貫性のないディスプレイにつながる可能性があります。開発者は、多くの場合、スタイルをリセットまたは標(biāo)準(zhǔn)化することにより、この問題を解決します。 Developer ToolsのComputeまたはStyleパネルを使用して、デフォルトのスタイルを表示します。一般的なカバレッジ操作には、內(nèi)側(cè)および外側(cè)のマージンのクリア、リンクのアンダースコアの変更、タイトルサイズの調(diào)整、統(tǒng)一ボタンスタイルが含まれます。ユーザーエージェントスタイルを理解することで、クロスブラウザーの一貫性を改善し、正確なレイアウト制御を可能にすることができます。

CSSでバウンスアニメーションを作成する方法は? CSSでバウンスアニメーションを作成する方法は? Aug 02, 2025 am 05:44 AM

@keyframesbouncewith0%、100%attranslatey(0)および50%attranslatey(-20px)tocreateabasicbounce.2.applytheanimation to nelementusinginimation:Bounce0.6 sease-inutinfiniteforsmoth.

HTMLフォームで検索入力フィールドを作成する方法 HTMLフォームで検索入力フィールドを作成する方法 Aug 02, 2025 pm 04:44 PM

usetheelementwithinatagtocreateasemanticsearchfield.2.includeaforAccessibility、settheform'sactionandmethod = "astributesenddatatoaseandpointwitharaibleableurl.3.addname =" q "dodefinethequeryparameter、umeplyholdertoguideuse

CSSの要素をオーバーラップする方法は? CSSの要素をオーバーラップする方法は? Jul 30, 2025 am 05:43 AM

CSS要素のオーバーラップを?qū)g現(xiàn)するには、ポジショニングとz-index屬性を使用する必要があります。 1。位置とZ-indexを使用します。要素を非靜的な位置(絶対、相対など)に設(shè)定し、z-indexを介してスタッキング順序を制御すると、値が大きくなるほど値が高くなります。 2。一般的な位置決め方法:絶対は正確なレイアウトに使用されます。 3.実際の例:親コンテナの位置を設(shè)定することにより:相対、子要素の位置:絶対および異なるZインデックスでは、カードのオーバーラップ効果を?qū)g現(xiàn)できます。

HTMLのリンクタグのREL屬性の目的は何ですか? HTMLのリンクタグのREL屬性の目的は何ですか? Aug 03, 2025 pm 04:50 PM

rel = "styleSheet" linkscssfilesforstylingthepage; 2.Rel = "preoad" hintstopreloadcriticalResourcesforPerformance; 3.REL = "ICON" setSthewebsite’sfavicon;

HTMLのアンカータグのターゲット屬性の目的は何ですか? HTMLのアンカータグのターゲット屬性の目的は何ですか? Aug 02, 2025 pm 02:23 PM

thetargetattributeinanhtmlanchortagswheretoopenthelinkeddocument.1._ selfopensthelinkinthesametab(デフォルト).2._blankpensthelinkinewtaborwindow.3.__parentopensthelinkinkintheparentframe.4._topensthelinkinthefuntowdowing

htmlでフォームデータを送信する送信ボタンを作成する方法 htmlでフォームデータを送信する送信ボタンを作成する方法 Aug 02, 2025 pm 04:46 PM

要素を使用し、アクションとメソッドの屬性を設(shè)定して、データ提出アドレスとメソッドを指定します。 2.名前屬性を持つ入力フィールドを追加して、サーバーによってデータが認(rèn)識(shí)できることを確認(rèn)します。 3. [送信]ボタンを使用または作成し、クリックした後、ブラウザはフォームデータを指定されたURLに送信します。これは、バックエンドで処理され、データ送信を完了します。

See all articles