关于表单
表单
关于input表单的一些样式和JS问题:
input的placeholder属性字体颜色:
1 | input::-webkit-input-placeholder { |
1 | input:focus{ border:1px solid red } |
input标签
IE:不管该行有没有文字,光标高度与font-size一致。
FF:该行有文字时,光标高度与font-size一致。该行无文字时,光标高度与input的height一致。
Chrome:该行无文字时,光标高度与line-height一致;该行有文字时,光标高度从input顶部到文字底部(这两种情况都是在有设定line-height的时候),如果没有line-height,则是与font-size一致。
解决的方案:
给input的height设定一个较小的高度(或者不设置高度),然后用padding去填充,基本上可以解决所有浏览器的问题
CSS控制输入文本大小写
text-transform:none;capitalize;uppercase;lowercase;inherit;
none默认。定义带有小写字母和大写字母的标准的文本。
capitalize文本中的每个单词以大写字母开头。
uppercase定义仅有大写字母。lowercase定义无大写字母,仅有小写字母。
inherit规定应该从父元素继承 text-transform 属性的值。
控制input标签的placeholder属性实现获取焦点显示暗文,失去焦点隐藏(其实就是改变placeholder中的文字颜色)
1 | &::-webkit-input-placeholder { color:transparent; } |
ios在fixed布局下出现bug问题
软键盘唤起后,页面的fixed 元素将失效(即无法浮动,也可以理解为变成了absolute定位),所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。
这便是 iOS 上 fixed 元素和输入框的 bug 。其中不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样地问题。
解决方法:
将原 body 滚动的区域域移到 main 内部,而 header 和footer 的样式不变。
.main{
position: absolute;
top: 50px;
bottom: 34px;
overflow-y: scroll;
}
.main .content {
height: 2000px;
}
这样布局可能会是的滚动失去原来的流畅,加以下代码,恢复之前丝滑般的滚动:
1 | .box{ |
这样的布局在h5是行不通的,所以需要用JS来控制内部滚动元素的高度:
1 | // 1. 内部滚动 |
定义插入光标(caret)的颜色
1 | caret-color: red; |
修改 chrome 记住密码后自动填充表单的黄色背景
1 | /* chrome表单自动填充后,input文本框的背景会变成黄色的,通过审查元素可以看到这是由于chrome会默认给自动填充的in |