为什么应用背景颜色时文本输入会更改其边框属性?

发布于 2024-09-02 19:32:07 字数 188 浏览 1 评论 0原文

这是一个例子,我在 FF 3.6 中查看,带有 background:transparent 的输入与未触及的输入具有不同的边框。

http://jsfiddle.net/Pa2Kd/

Here's an example, I'm looking at in in FF 3.6 and the input with background: transparent has a different border to the untouched one.

http://jsfiddle.net/Pa2Kd/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哆兒滾 2024-09-09 19:32:07

我的假设是,当样式未更改时,将使用本机 Win32 控件及其默认设置(或多或少)。但是,当您确实更改样式时,将使用自定义控件,或者更自定义的 Win32 控件版本。

我记得小时候玩弄 Internet Explorer 4 中的滚动条时发生过类似的事情:如果你不乱动它们(操作系统的主题),它们看起来很正常,但如果你乱动,它们就会变得“扁平”。另一件事是按钮:Windows Aero 按钮看起来就像它们一样 - 没有太多需要改变的地方。如果您想更改按钮的颜色,则需要“禁用”按钮的 Aero 主题,然后您会得到一个旧式 3D 或平面按钮,具体取决于您的浏览器。

只是一些想法。我可能完全错了,因为网页设计不是我的专业领域。

My hypothesis is that, when the style is unaltered, a native Win32 control is used, with its default settings (more or less). But when you do alter the style, a custom control is used, or a more customized version of the Win32 control.

I remember similar things from when I was a boy and toyed with the scrollbars in Internet Explorer 4: They look normal if you do not mess with them (the theme of the OS), but if you do, they get "flat". Another thing is buttons: Windows Aero buttons look like they do - there is not really much to change. If you want to change the color of the button, you need to "disable" Aero theming of the button, and you get an old-style 3D, or flat, button, depending on your browser.

Just some thought. I might be entirely wrong, for web design is not my major field.

吾性傲以野 2024-09-09 19:32:07

我赞同安德烈亚斯所说的。

我不知道为什么这两者都不是。我根据经验推断,当 border background-color 视觉属性之一发生更改时,浏览器会从“操作系统渲染样式”模式切换到“自己创建渲染规则”模式。遗憾的是,据我所知,没有 CSS 方法可以恢复操作系统渲染风格。

我认为处理这个问题的唯一方法是为控件定义一致的规则集 - 这是一个耻辱,因为将这些样式规则留给用户的操作系统是一个完全合乎逻辑的选择。

I second what Andreas says.

I don't know why exactly this is neither. I deduct from experience that when one of the border background-color visual attributes is altered, the browser switches from "OS rendering style" mode to "create rendering rules yourself" mode. Sadly, to my knowledge there is no CSS way of getting back to the OS rendering style.

The only way I can see to deal with this is to define a consistent ruleset for controls - which is a shame, because it's a perfectly logical choice to leave those styles rules to the user's OS.

残龙傲雪 2024-09-09 19:32:07

正如其他人所说,这是由于默认的操作系统样式在您添加任何属性后立即被清除。您可以使用 CSS 模仿默认样式,但进行操作系统检测并相应地应用不同的 CSS 规则可能会有些过分。相反,您可以选择您喜欢的操作系统样式并将其应用为所有文本输入的默认样式。 Mac OSX 样式可以使用以下 CSS 合理地再现:

#background {
    background: transparent;
    border:1px solid #ddd;
    padding:2px;
    -webkit-box-shadow:inset 0px 1px 2px #333;
    -moz-box-shadow:inset 0px 1px 2px #333;
    box-shadow:inset 0px 1px 2px #333;
}
​

季节口味。

Like the others said, this is due to default OS styling that is cleared as soon as you add any properties. You can mimick the default styling with CSS, though it would probably be overkill to do an OS detection and apply different CSS rules accordingly. Instead you could choose an OS styling that you like and apply that as the default for all text-inputs. Mac OSX styling can be reasonably reproduced with the following CSS:

#background {
    background: transparent;
    border:1px solid #ddd;
    padding:2px;
    -webkit-box-shadow:inset 0px 1px 2px #333;
    -moz-box-shadow:inset 0px 1px 2px #333;
    box-shadow:inset 0px 1px 2px #333;
}
​

Season to taste.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文