CSS 移除 iOS 输入阴影

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23211656/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 02:17:59  来源:igfitidea点击:

Remove iOS input shadow

ioscssinput

提问by WHITECOLOR

On iOS (Safari 5) I have to following for input element (top inner shadow):

在 iOS (Safari 5) 上,我必须关注输入元素(顶部内阴影):

example

例子

I want to remove top shadow, bug -webkit-appearancedoesn't save.

我想删除顶部阴影,错误-webkit-appearance不保存。

Current style is:

目前的风格是:

input {    
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
    -webkit-appearance: none;
    -moz-appearance: none;
}

回答by Mastrianni

You'll need to use -webkit-appearance: none;to override the default IOS styles. However, selecting just the inputtag in CSS will not override the default IOS styles, because IOS adds it's styles by using an attribute selector input[type=text]. Therefore your CSS will need to use an attribute selector to override the default IOS CSS styles that have been pre-set.

您需要使用-webkit-appearance: none;来覆盖默认的 IOS 样式。但是,只选择inputCSS 中的标签不会覆盖默认的 IOS 样式,因为 IOS 使用属性选择器添加它的样式input[type=text]。因此,您的 CSS 将需要使用属性选择器来覆盖已预设的默认 IOS CSS 样式。

Try this:

尝试这个:

input[type=text] {   
    /* Remove First */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;

    /* Then Style */
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
}

Helpful Links:

有用的网址:

You can learn more about appearancehere:

您可以appearance在此处了解更多信息:

http://css-tricks.com/almanac/properties/a/appearance/

http://css-tricks.com/almanac/properties/a/appearance/

If you'd like to learn more about CSS attribute selectors, you can find a very informative article here:

如果您想了解有关 CSS 属性选择器的更多信息,可以在此处找到一篇内容丰富的文章:

http://css-tricks.com/attribute-selectors/

http://css-tricks.com/attribute-selectors/

回答by jstnrs

background-clip: padding-box;

Seems to remove the shadows as well.

似乎也消除了阴影。

As @davidpauljuniormentioned; be careful setting -webkit-appearanceon a general input selector.

正如@davidpauljunior 所提到的;-webkit-appearance在通用输入选择器上小心设置。

回答by ShinyJos

webkit will remove all properties

webkit 将删除所有属性

-webkit-appearance: none;

Try using the property box-shadow to remove the shadow on your input element

尝试使用属性 box-shadow 去除输入元素上的阴影

box-shadow: none !important;

回答by Andreas Riedmüller

I tried to come up with a solution that a.) worksand b.) I am able to understand why it works.

我试图想出一个解决方案,a.) 有效b.) 我能够理解它为什么有效

I do know that the shadow for inputs (and the rounded border for input[type="search"]) comes from a background-image.

我知道输入的阴影(以及输入 [type="search"] 的圆形边框)来自背景图像。

So obviously setting background-image: nonewas my first attempt, but this does not seem work.

所以显然设置background-image: none是我的第一次尝试,但这似乎不起作用。

Setting background-image: url()works, but i am still concerned about having a empty url(). Altough it currently is just a bad feeling.

设置background-image: url()有效,但我仍然担心有一个空的url(). 虽然现在只是一种不好的感觉。

background-clip: padding-box;seems to do the job as well, but even after reading the "background-clip" docs I don't get why this completly removes the background.

background-clip: padding-box;似乎也能完成这项工作,但即使在阅读了“背景剪辑”文档之后,我也不明白为什么这会完全删除背景。

My favorite solution:

我最喜欢的解决方案:

background-image: linear-gradient(transparent, transparent);

This is valid css and I do understand how it works.

这是有效的 css,我确实了解它是如何工作的。

回答by Tom Spencer

Whilst the accepted answer is a good start, as others have pointed out, it only works for inputs whose typeis "text". There are a myriad of other input types which also render as text boxes on iOS, and so we need to expand this rule to take into account these other types.

虽然接受的答案是一个良好的开端,正如其他人所指出的,它仅适用于输入其type"text"。还有无数其他输入类型在 iOS 上也呈现为文本框,因此我们需要扩展此规则以考虑这些其他类型。

Here's the CSS I'm using to rid input text fields and textareas of the inner shadow, whilst preserving the default styling for buttons, checkboxes, range sliders, date/time dropdowns and radio buttons, all of which are authored using the humble <input>tag too.

这是我用来去除内部阴影的输入文本字段和文本区域的 CSS,同时保留按钮、复选框、范围滑块、日期/时间下拉列表和单选按钮的默认样式,所有这些也是使用谦虚<input>标签创作的.

textarea,
input:matches(
  [type="email"],
  [type="number"],
  [type="password"],
  [type="search"],
  [type="tel"],
  [type="text"],
  [type="url"]
) {
  -webkit-appearance: none;
}

回答by Reado

This works better for me. Plus it means I don't have to apply it to every different type of input (i.e. text, tel, email, etc).

这对我来说效果更好。另外,这意味着我不必将其应用于每种不同类型的输入(即文本、电话、电子邮件等)。

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}