关闭iPhone / Safari输入元素舍入


374

我的网站在iPhone / Safari浏览器上的呈现效果很好,但有一个例外:我的文本输入字段具有一种怪异的圆形样式,与我的网站的其余部分完全不一样。

有没有一种方法可以指示Safari(通过CSS或元数据)不对输入字段进行舍入并按预期将其呈现为矩形?


1
我不知道为什么NO CSS复位似乎包含超级简单的CSS规则。真是死了
Toskan

1
我实际上基于eric meyer的css reset 2创建了一个CSS重置,并添加了在此处答案中找到的必要的CSS。它可以在github上找到:github.com/Jossnaz/JossiCssReset
Toskan

1
请注意-webkit-appearance: none;,我认为最好将此条件限制在特定输入元素的范围内。否则,如果页面上有单选输入元素,则可以隐藏它们。
quas

Answers:


659

在iOS 5和更高版本上,出色border-radius的技巧可以达到以下目的:

input {
    border-radius: 0;
}

如果您仅必须在iOS上删除圆角,否则由于某些原因无法在跨平台标准化圆角,请改用prefixed -webkit-border-radius属性,该属性仍受支持。当然,请注意,Apple可以随时选择放弃对prefix属性的支持,但考虑到其其他特定于平台的CSS功能,他们会保留它的机会。

在旧版中,您必须设置-webkit-appearance: none

input {
    -webkit-appearance: none;
}

1
从iOS 5开始,这只会删除内部阴影。检查Piyush的答案,也删除圆角。
乔纳森·弗里兰

6
-webkit-appearance实际上与内部阴影和圆角无关。请勿仅用于此目的。css-infos.net/property/-webkit-appearance
Rudie 2012年

13
“如果IOS想要圆角和阴影,请让IOS用户拥有它们”:在我的情况下,而且在大多数其他情况下,这也是完全不可接受的。
coredumperror 2014年

2
!!您不应该使用此方法,它使复选框似乎不可用。因此,我的许多网站用户未进行付款协议。
synthresin

10
对于<input type="search">iOS 10,我仍然需要-webkit-appearance: none;
加百利·斯莫加尔

54

input -webkit-appearance: none; 独自行不通。

尝试-webkit-border-radius:0px;另外添加。


1
我也需要添加-webkit-border-radius属性<input type="text">去除的iOS 5的圆角
乔纳森·弗里兰

不需要在0后添加px
mintedsky

42

这是删除IOS中四舍五入的最佳方法。

textarea,
input[type="text"],
input[type="button"],
input[type="submit"] {
     -webkit-appearance: none;
     border-radius: 0;
}

注意:请不要将此代码用于“选择选项”。我们选择的它将有问题。


2
我发现使用input[type]似乎可以解决所有输入问题。
JacobTheDev

11

接受的答案使单选按钮在Chrome上消失。这有效:

input:not([type="radio"]):not([type="checkbox"]) {
    -webkit-appearance: none;
    border-radius: 0;
}

7

这是Compass(SCSS)的完整解决方案:

input {
  -webkit-appearance: none;  // remove shadow in iOS
  @include border-radius(0);  // remove border-radius in iOS
}

14
请注意,@include border-radius(0);mixin仅在您自己定义或使用Compass框架时才可用,而不仅仅是vanilla SASS。
waffl

请注意,如果您使用的是SCSS,则可能也应该使用autoprefixer。
基督教徒

6

对于在iPhone 3GS上的iOS 5.1.1上的我来说,我必须清除搜索字段的样式并将其设置为预期的样式

input[type="search"] {-webkit-appearance: none; border-radius: 0 3px 3px 0;}

否则-webkit-border-radius: 0;单单没有明确的原生样式。这也是本机应用程序上的Webview。


4

我有同样的问题,但仅适用于提交按钮。需要去除内部阴影和圆角-

input[type="submit"] { -webkit-appearance:none; -webkit-border-radius:0; }

4

如果您使用normalize.css,则该样式表将执行类似的操作input[type="search"] { -webkit-appearance: textfield; }

它比单个类选择器具有更高的特异性.foo,因此请注意,这样做不能做到.my-field { -webkit-appearance: none; }。如果您没有更好的方法来实现正确的特异性,这将有帮助:

.my-field { -webkit-appearance: none !important; }



3

我使用了一个简单的border-radius:0; 删除文本输入类型的圆角。


0

为了在Safari和其他浏览器上正确呈现按钮,除了将webkit-appearance设置为none之外,您还需要为按钮提供特定的样式,例如:

border-radius: 0;
-webkit-appearance: none;
background-image: linear-gradient(to bottom, #e4e4e4, #f7f7f7);
border: 1px solid #afafaf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.