首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有jquery的情况下单击Polymer展开div。

在没有jquery的情况下单击Polymer展开div。
EN

Stack Overflow用户
提问于 2017-06-29 21:29:29
回答 3查看 372关注 0票数 1

我用的是聚合物,但我在事件之类的事情上遇到了一些麻烦。我想创建一个扩展的搜索栏,类似于

我的当前代码如下所示:

代码:

代码语言:javascript
复制
// This is where things are a little unclear for me. So far, I have tried the following:
expand: function() {
  var divToStretch = this.$.stretchMe;
  if ( /*search bar is open*/ ) {
    //remove "stretched" css from "stretch" div
  } else {
    //add "stretched" css to "stretch" div
  }
}
代码语言:javascript
复制
div.stretch {
  border: 1px solid black;
  width: 25px;
  height: 25px;
  border-radius: 25px;
  transition: width 1s;
}

.stretched {
  width: 500px;
}
代码语言:javascript
复制
<div class="stretch" id="stretchMe">
  <iron-icon class="search" icon="search" on-click="expand"></iron-icon>
</div>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-29 21:36:40

我可以建议一个纯CSS替代吗?通过添加tabIndex="0",可以使搜索栏接收焦点。通过这种方式,您可以为div.stretch:focus提供一种样式,允许您在用户单击或聚焦元素时动态更改其大小,并在用户关注其他内容时再次使其变小。

它非常简单,优雅,不需要太多的代码,并且可以满足您的需要。试试看!

代码语言:javascript
复制
div.stretch {
  border: 1px solid black;
  width: 25px;
  height: 25px;
  border-radius: 25px;
  transition: width 1s;
}

div.stretch:focus {
  width: 500px;
}
代码语言:javascript
复制
<div class="stretch" id="stretchMe" tabIndex="0">
  <iron-icon class="search" icon="search" on-click="expand"></iron-icon>
</div>

或者,您可以让它在:hover上做同样的事情,如果这是您想要做的,只需更改选择器即可。或者两者结合,如果你愿意的话。下面是一个:hover示例。

代码语言:javascript
复制
div.stretch {
  border: 1px solid black;
  width: 25px;
  height: 25px;
  border-radius: 25px;
  transition: width 1s;
}

div.stretch:hover {
  width: 500px;
}
代码语言:javascript
复制
<div class="stretch" id="stretchMe">
  <iron-icon class="search" icon="search" on-click="expand"></iron-icon>
</div>

票数 2
EN

Stack Overflow用户

发布于 2017-06-29 21:35:22

为此,可以使用classListclassList方法:

代码语言:javascript
复制
expand : function() {
  this.$.stretchMe.classList.toggle('stretched');
}
票数 0
EN

Stack Overflow用户

发布于 2017-06-29 21:36:50

经典的方法如下:

代码语言:javascript
复制
if (/*search bar is open*/) {
    divToStretch.style.width = "auto";
 } else {
    divToStretch.style.width = "500px";
 }

但我强烈建议使用this.$.stretchMe.classList.toggle('stretched');

阅读更多这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44835278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档