【问题标题】:Angular material design ripple on md-list > md-itemmd-list > md-item 上的 Angular Material Design 波纹
【发布时间】:2015-02-09 12:09:52
【问题描述】:

我有一个项目列表(每个项目都包含多个元素),其中每个项目都是可点击的并切换视图。有没有办法让整个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}}">
                 ...

【问题讨论】:

  • 上的“波纹”?在thecodeplayer.com/walkthrough/… 中,它似乎在整个列表中,而不是在内容中。
  • #WeirdHackThatWorks &lt;md-item ng-click="{}"&gt;

标签: angularjs material-design angular-material


【解决方案1】:

如果你想在特定元素上使用涟漪效果,你可以使用md-ink-ripple

<div md-ink-ripple></div>

【讨论】:

  • 如何在 md-card 悬停时添加 md-ink-ripple 效果?
【解决方案2】:

只需将 md-ink-ripple 指令和 .md-clickable 类添加到 &lt;md-list-item&gt; 元素:

<md-list-item md-ink-ripple class="md-clickable">
    <p>Foo</p>
</md-list-item>

如果您愿意,您也可以将 font-weight 设置为 500(这是默认 clickable-item 的样子)。

【讨论】:

    【解决方案3】:

    其他答案涵盖了大多数情况,但您也可以使用自定义波纹效果的颜色

    <md-list-item md-ink-ripple="#03A9F4">
      <p></p>
    </md-list-item>
    

    这将产生淡蓝色的波纹颜色。

    Angular Material 背后的团队希望保持这种内部结构并减少自定义,这就是他们没有很好地记录它的原因。但是,我认为这是一个有用的自定义。希望能帮助到你!干杯!

    【讨论】:

      【解决方案4】:

      实际上,没有这方面的文档。

      我正在寻找解决方案,并在这里找到了您的问题,所以我去检查了他们的源代码。

      您可以使用md-list &gt; 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-list-item 指令的preLink 函数内,md-checkboxmd-switch 是唯一被接受的子进程。

      另一种方法是将ng-click 放在md-list-item 本身上,或者在其中的子元素中。

      preLink 进程是一个包装器,使用“非样式化”按钮在点击时执行“代理”,并在视觉上完成涟漪效果。

      其他东西,比如属性,也没有被转移到这个“代理”,所以不能直接使用disabled,你需要模拟它的结果。在我的例子中,我中断了 ng-click 动作,并将一个类放入元素中。

      【讨论】:

        【解决方案5】:

        如果你想要涟漪而不是anchor,我建议使用md-button。然后只需在控制器中更改您的 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>
        

        【讨论】:

          【解决方案6】:

          这是最好的方法:

          <div md-ink-ripple class="ripple">Div like an md-button</div>
          
          1. 添加到您的 div md-ink-ripple 指令中
          2. 将波纹类添加到您的 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%;}
          }
          

          `

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-05-26
            • 1970-01-01
            • 2017-03-28
            • 2016-10-31
            • 1970-01-01
            • 2016-04-18
            • 2016-05-03
            相关资源
            最近更新 更多