html - 移动设备上的用户输入和占位符文本对齐
问题描述
我在 iOS 版本 12.4.9 上遇到了用户输入和占位符文本对齐的问题。我只在 Safari 和 Chrome 上使用 iPhone 6 进行了测试,这两种浏览器都存在问题。
在下面的图片中,
input
元素有red
边框,而::placeholder
伪元素有yellowgreen
边框;“NOT A PLACEHOLDER”和“IN”是实际输入,而“DIA”和“EMAIL ADDRESS”是占位符。
这是基本样式和结果:
div.bottom-container > form input,
div.bottom-container > form input::placeholder {
height: var(--fontSize);
text-transform: uppercase;
font-size: var(--fontSize);
border-radius: unset; /* for mobile only */
}
body[data-mod='mobile'] > div.bottom-container > form input {
border: solid red 1px;
}
body[data-mod='mobile'] > div.bottom-container > form input::placeholder {
border: solid greenyellow 1px;
}
通过添加以下样式,我已经能够根据需要对齐占位符文本。值得注意的是, theinput
和 the::placeholder
都必须有边框才能像这样正确对齐。
body[data-mod='mobile'] > div.bottom-container > form input {
padding: 0; /* new */
line-height: var(--fontSize); /* new */
border: solid red 1px;
}
我想像占位符文本一样对齐输入,但我很挣扎,无法访问 Mac,因此无法访问 iOS 开发人员控制台。(值得注意的是,我没有 Android 设备,因此我什至无法知道该平台上是否存在问题。)
从上面的结果来看,似乎input
元素被裁剪了,并且具有某种padding
无法更改的质量。
我知道这在匹配移动设备上的外观和元素display
方面发挥了作用,我尝试过摆弄其他属性,但无济于事。input
button
这是height
移除后的基本样式。
我怀疑这个问题可能是由于浏览器input
为了可用性或用户体验而影响了字段的最小尺寸。但这只是一个猜测。我真的不知道发生了什么。
#有人知道发生了什么或如何解决吗?
解决方案
例如,您可以将输入包装在 div 中,并将输入相对于容器对齐。
.wrapper {
padding: 0;
position: relative;
height: 20px;
background-color: coral;
border: 1px solid red;
}
.wrapper input {
position: relative;
top: 1px;
background-color: transparent;
border: 0;
font-size: 20px;
/* Uncomment following line to see input borders */
/* border: 1px solid lawngreen; */
}
<div class="wrapper">
<input type="text" value="EMAIL" />
</div>
推荐阅读
- wpf - WPF如何编写触发器来调用命令操作或根据条件设置属性
- swift - 试图找到一种更简单的方法来自动反转 .on 和 off。迅速状态
- ruby - ActiveRecord::ValueTooLong 与 Ruby Gem Mail
- javascript - 在这些代码中,如何使用执行上下文来解释输出结果?
- python - 无法在第二次迭代中获取元素
- python - 带有均值和变异系数的漂亮条形图
- javascript - 在对象中查找高于和低于给定数字的元素
- gstreamer - 将 RTSP 流保存到文件
- reactjs - 当 `open` 属性设置为 `true` 时,Material-UI Popper 仍然可见
- r - 在 For-Loop (r) 中将数据帧放入复杂的分层列表