アイテムのリスト(それぞれに複数の要素が含まれています)があり、各アイテムはクリック可能であり、ビューを切り替えます。全体に波及効果を与える方法はありますかmd-item-content
?私は試した class="ripple"
しかし、それだけでは不十分でした。
<md-content>
<md-list layout="column" md-padding>
<md-item ng-repeat="resto in list.data.recommendations">
<a ui-sref="resto({qname: resto.qname})" class="ripple">
<md-item-content id="resto{{$index}}">
...
特定の要素にリップル効果を使用したい場合は、md-ink-ripple
。
<div md-ink-ripple></div>
md-ink-rippleディレクティブと。md-clickableクラスを<md-list-item>
要素に追加するだけです。
<md-list-item md-ink-ripple class="md-clickable">
<p>Foo</p>
</md-list-item>
また、必要に応じてfont-weightを5に設定することもできます(これがデフォルトのクリック可能なアイテムのようになります)。
他の回答はほとんどの場合をカバーしていますが、次のコマンドを使用して波紋効果の色をカスタマイズすることもできます
<md-list-item md-ink-ripple="#03A9F4">
<p></p>
</md-list-item>
これにより、水色のリップルカラーが得られます。
Angular資料の背後にあるチームは、これを内部的に維持し、カスタマイズを減らしたいと考えていたため、十分に文書化されていませんでした。しかし、それは有用なカスタマイズであると思いました。それが役に立てば幸いです!乾杯!
実際には、これに関するドキュメントが不足しています。
私は解決策を探していて、あなたの質問をここで見つけたので、私は彼らのソースコードをチェックしに行きました。
いくつかの制限付きでmd-list > md-list-item
を使用できます。あなたの場合、アイデアはsidenavのドキュメントメニューに近づくことです(それらはリンク自体のmenu-link
と呼ばれるディレクティブです)。元のコードにいくつかの変更を加えました(あなたのものに近い):
<md-list>
<md-list-item
ng-repeat="section in ::admin.sections"
ng-class="{
'active': $state.includes(section.active),
'disabled': section.disabled
}"
ng-click="!section.disabled && $state.go(section.state)">
<span ng-bind="::section.label"></span>
</md-list-item>
</md-list>
基本的に、md-list-item
内でアクショントリガーとして受け入れられる要素はすべてではありません。 md-checkbox
ディレクティブのpreLink
関数内で、md-switch
およびmd-list-item
は、プロセスの実行が許可されている唯一の子です。
もう1つの方法は、ng-click
をmd-list-item
自体に配置するか、その内部の子要素に配置することです。
preLink
プロセスはラッパーであり、クリック時に「プロキシ」を実行する「非スタイル」ボタンを使用して、視覚的にリップル効果を実現します。
属性のような他のものもこの「プロキシ」に転送されないため、disabled
を直接使用することはできません。その結果をシミュレートする必要があります。私の場合、ng-clickアクションを中断して、クラスを要素に配置します。
これを行う最良の方法は次のとおりです。
<div md-ink-ripple class="ripple">Div like an md-button</div>
`
.ripple {
position: relative;
&:active > .wave {
animation: ripple 0.25s;
}
.wave{
position:absolute;
width:100%;
height:100%;
background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
background-repeat: no-repeat;
background-position: 50%;
background-size: 0 0;
top:0;
left:0;
transform: scale(0);
opacity:0;
}
}
@keyframes ripple {
0% {transform: scaleX(0);}
50%{transform: scaleX(1);opacity:0.3;}
100%{transform: scaleX(1);opacity:0;background-size: 1000% 1000%;}
}
`
anchor
の代わりに波紋が必要な場合は、md-button
の使用をお勧めします。次に、コントローラーでuiルーターの状態を変更します。
例については、 https://github.com/angular/material-start/blob/master/app/index.html#L を参照してください。
<md-list layout="column" md-padding>
<md-item ng-repeat="resto in list.data.recommendations">
<md-button ng-click="vm.navigateToResto(resto)" ng-class="{'selected' : it === vm.selected }" id="resto{{$index}}">
...
</md-button>
</md-item>
</md-list>