在 Safari 中跳转输入字段

2023-12-27

我正在尝试重新创建一个非常酷的占位符用户界面 http://dribbble.com/shots/1254439--GIF-Mobile-Form-Interaction?list=users只使用 HTML 和 CSS,我就差不多明白了(demo http://jsbin.com/aCUvOnI/18)。但是,如果您在输入字段和选项卡中键入内容以关注下一个,则您刚刚输入的值将在 Safari (6.0.5) 和 MobileSafari (iOS 6.1) 中稍微偏移。它在 Chrome (30) 中运行良好。

重现:

  1. 关注“价格”输入字段
  2. 输入一个值
  3. Tab 键以聚焦下一个输入字段
  4. 当形式吞噬自己时,请观看并惊叹不已

所以问题是:是什么导致了这个问题以及如何解决它?

注意:我只关心让它在 MobileSafari 中工作,除此之外的任何东西都是额外的好处。

HTML

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <input name="title" type="text" placeholder="Title">
  <input name="price" type="text" placeholder="Price">
  <input name="location" type="text" placeholder="Specific location (optional)">
  <textarea name="desc" rows='4' placeholder="Description"></textarea>
</body>
</html>

CSS

* {
  box-sizing: border-box; 
}

body {
  padding: 0;
  margin: 0;
  font-size: 0;
}

input, textarea {
  position: relative;
  display: inline-block;
  margin: 0;
  outline: none;
  border: 0;
  border-radius: 0;
  padding: 2pt 4pt;
  padding-top: 8pt;
  font-family: "Helvetica Neue";
  font-size: 14pt;
  font-weight: lighter;
}

::-webkit-input-placeholder {
  color: lightgrey;
  position: relative;
  top: 0;
  left: 0;
  -webkit-transition-property: top, color;
  -webkit-transition-duration: .1s;
          transition-property: top, color;
          transition-duration: .1s;
}


::-webkit-input-placeholder[style*=hidden] {
  color: rgb(16,124,246);
  font-size: 8pt;
  font-weight: normal;
  top: -8pt;
  opacity: 1;
  visibility: visible !important;
}

[name=title] {
  width: 100%;
  border-bottom: 1px solid lightgrey;
  margin-bottom: 1px;
}

[name=price] {
  width: 30%;
  margin-bottom: 1px;
  border-bottom: 1px solid lightgrey;
  border-right: 1px solid lightgrey;
}

[name=location] {
  width: 70%;
  border-bottom: 1px solid lightgrey;
}

[name=desc] {
  width: 100%;
}

将其添加到您的 input 和 textarea 元素可以解决问题:

float: left;

在 Safari 版本 6.0.5 (8536.30.1) 和 Mobile Safari 上测试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Safari 中跳转输入字段 的相关文章