我有一个项目列表(每个项目包含多个元素),每个项目都可以点击并切换视图。有没有办法在整个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}}">
...
答案 0 :(得分:31)
如果您想对特定元素使用涟漪效果,可以使用md-ink-ripple
。
<div md-ink-ripple></div>
答案 1 :(得分:11)
只需将 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 设置为 500 (这是默认 clickable-item 的样子)。
答案 2 :(得分:5)
其他答案涵盖了大多数情况,但您也可以使用
自定义涟漪效果的颜色<md-list-item md-ink-ripple="#03A9F4">
<p></p>
</md-list-item>
这将产生浅蓝色波纹颜色。
Angular Material背后的团队希望保持内部并减少定制,这就是为什么他们没有很好地记录它。但是,我认为这是一个有用的定制。希望能帮助到你!干杯!
答案 3 :(得分:2)
实际上,缺乏相关文档。
我正在寻找解决方案,并在此处找到了您的问题,所以我去查看他们的源代码。
您可以使用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
指令的md-switch
函数内,preLink
和md-list-item
是唯一被接受执行流程的子项。
另一种方法是将ng-click
放在md-list-item
本身或其中的子元素中。
preLink
进程是一个包装器,使用&#34;非样式的&#34;执行&#34;代理&#34;的按钮点击,并在视觉上完成涟漪效应。
其他内容,如属性,也没有被转移到此代理&#34;,因此无法直接使用disabled
,您需要模拟其结果。在我的例子中,我中断了ng-click操作,并将一个类放入元素中。
答案 4 :(得分:0)
如果您想要涟漪而不是md-button
,我建议您使用anchor
。然后在控制器中进行ui-router状态更改。
有关示例,请参阅https://github.com/angular/material-start/blob/master/app/index.html#L30。
<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>
答案 5 :(得分:0)
这是最好的方法:
<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%;}
}
`