Polymer paper

I am trying to change the color of an item when a button is clicked. I want the ripple effect of the paper to work on this element when I press a button and change color.

How am I supposed to do this?

Target Element:

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

Trigger element:

<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"));
});
+4
source share
2 answers

Instead of manipulating styles directly on paper-toolbar, a more elementary approach is to add an element paper-ripplenext to yours paper-toolbarand manually call downAction/ upActionwhen mousedown/ mouseupis called on 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.

+3

, , . , docs :

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

, - toggles. ( Google )

HTML:

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

CSS

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

, , , active.

0

Source: https://habr.com/ru/post/1608132/


All Articles