【问题标题】:Polymer paper ripple聚合物纸波纹
【发布时间】:2015-12-16 13:49:48
【问题描述】:

我试图在按下按钮时更改元素的颜色。 我希望在按下按钮并且颜色发生变化时在该元素中触发纸张波纹效果。

我该怎么做?

目标元素:

<paper-toolbar class="abc">
    <paper-icon-button icon="menu" paper-drawer-toggle></paper-icon-button>
    <div flex class="indent title">Heading</div>
</paper-toolbar>                

触发元素:

<paper-button class="def background-blue"></paper-button>
<paper-button class="def background-red"></paper-button>

Javascript:

$(".def").click(function(){
    $(".abc").css("background-color", $(this).css("background-color"));
});

【问题讨论】:

    标签: javascript jquery polymer material-design polymer-1.0


    【解决方案1】:

    不是直接在paper-toolbar 上操作样式,更多元素 的方法是在您的paper-toolbar 旁边添加一个paper-ripple 元素并手动调用downAction/upActionmousedown/mouseup 在您的 paper-buttons 上调用。

    <paper-header-panel class="fit">
        <paper-toolbar class="toolbar">
            <paper-icon-button icon="menu" paper-drawer-toggle></paper-icon-button>
            <div flex class="indent title">Heading</div>
    
            <paper-ripple id="ripple" center></paper-ripple>
        </paper-toolbar> 
    
        <div>
            <paper-button class="def background-blue"raised on-mousedown="_onMousedown" on-mouseup="_onMouseup">Go blue</paper-button>
            <paper-button class="def background-red" raised on-mousedown="_onMousedown" on-mouseup="_onMouseup">Go red</paper-button>
        </div>
    </paper-header-panel>
    

    注意paper-ripple背景色color

    _assignColor: function(e) {
         var button = Polymer.dom(e).localTarget;
         var ripple = this.$.ripple;
    
         $(ripple).css("color", $(button).css("background-color"));  
    
         // or without jQuery
         //var buttonStyle = getComputedStyle(button, null);
         //ripple.style.color = buttonStyle.backgroundColor;        
    },
    
     _onMousedown: function (e) {
        this._assignColor(e);
    
         this.$.ripple.downAction({x: e.x, y: e.y});
     },
    
     _onMouseup: function (e) {
         this._assignColor(e);
    
         this.$.ripple.upAction();
     }   
    

    看看这个plunker

    【讨论】:

    • 谢谢 :) 这正是我想做的link
    • 如果有帮助,请考虑接受它作为答案! :)
    【解决方案2】:

    我不完全确定您要在这里做什么,但 Polymer 会为您完成大部分繁重的工作。如果你只想设置波纹效果的颜色,docs 建议使用选择器:

    #my-button::shadow paper-ripple {
      color: blue;
    }
    

    如果您想更永久地更改按钮的颜色,toggles 属性可能会有所帮助。 (谷歌的演示是here

    html:

    <paper-button toggles>button text</paper-button>
    

    css:

    #my-button[active] {
      background-color: red;
    } 
    

    虽然如果你想保持它的颜色,你必须设置按钮忽略更多的点击事件,所以它保持它的active属性。

    【讨论】:

    • 我猜你没有明白我想要做什么。反正问题已经解决了。这是我真正想做的事情的链接link
    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多