如何在悬停/焦点上为输入占位符位置设置动画

Posted

技术标签:

【中文标题】如何在悬停/焦点上为输入占位符位置设置动画【英文标题】:How to animate input placeholder position on hover/focus 【发布时间】:2014-03-31 07:02:36 【问题描述】:

在这个网站上:http://www.cinemec.nl/homepage/ 他们在角落的搜索字段中有一个占位符,点击后会浮动。

我想在我的网站上使用它,但我找不到如何做到这一点,是否有使用 onclick 或其他方式的简单方法?

【问题讨论】:

【参考方案1】:

这可以通过 CSS 来完成。占位符padding 属性的想法在:hover:focus 上进行了更改,因此它从左向右移动。结合 CSS transition,我们可以为移动设置动画。

input 
  background-color: #FFFFFF;
  width: 160px;
  padding: 5px 0 5px 5px;
  border: 1px solid gray;


input::-webkit-input-placeholder 
  color: #CCCCCC;
  position: relative;
  padding-left: 0;
  -webkit-transition: padding 0.5s;
  /* For Safari 3.1 to 6.0 */
  transition: padding 0.5s;


input:-moz-placeholder 
  /* Firefox 18- */
  color: #CCCCCC;
  position: relative;
  padding-left: 0;
  -moz-transition: padding 0.5s;
  /* For Safari 3.1 to 6.0 */
  transition: padding 0.5s;


input::-moz-placeholder 
  /* Firefox 19+ */
  color: #CCCCCC;
  position: relative;
  padding-left: 0;
  -moz-transition: padding 0.5s;
  /* For Safari 3.1 to 6.0 */
  transition: padding 0.5s;


input:-ms-input-placeholder 
  color: #CCCCCC;
  position: relative;
  padding-left: 0;
  -ms-transition: padding 0.5s;
  /* For Safari 3.1 to 6.0 */
  transition: padding 0.5s;



/*
    * On hover
    */

input:hover::-webkit-input-placeholder,
input:focus::-webkit-input-placeholder 
  padding-left: 90px;


input:hover:-moz-placeholder,
input:focus:-moz-placeholder 
  /* Firefox 18- */
  padding-left: 90px;


input:hover::-moz-placeholder,
input:focus::-moz-placeholder 
  /* Firefox 19+ */
  padding-left: 90px;


input:hover:-ms-input-placeholder,
input:focus:-ms-input-placeholder 
  padding-left: 90px;
<input type="search" placeholder="Search" />

【讨论】:

我误解了你的问题。即将更新。

以上是关于如何在悬停/焦点上为输入占位符位置设置动画的主要内容,如果未能解决你的问题,请参考以下文章

IE 10, 11. 如何防止使用占位符的文本输入触发焦点输入事件?

在焦点上更改占位符文本

如何在 HTML5 的数字输入中显示占位符的文本

如何删除焦点上的占位符[重复]

如何使用 CosmicMinds 材质库减少材质 Textfield 中动画占位符文本的空间?

当输入字段处于焦点时,占位符不会消失