【问题标题】:SELECT border in Chrome renders 3DChrome 中的 SELECT 边框呈现 3D
【发布时间】:2012-04-20 19:05:07
【问题描述】:

这看起来很简单,但我无法解决。

我有一个像这样的简单下拉菜单...

<select>
    <option value="1">Option 1</option>
</select>

...我想应用一个平面边框(没有 3D 效果),所以我正在使用:

select {
    border:1px solid #CCC;                
}

在此处查看实时示例:http://jsfiddle.net/GqGr3/

在 Firefox 和 IE 中运行良好:


(来源:re-moto.com

但它在 Chrome 中呈现 3D:


(来源:re-moto.com

这就是它在我的计算机中的工作方式。我在第二台电脑上测试了它,它呈现正常。如果这发生在我身上,我也会发生在其他用户身上。

我没有在 Chrome 中安装任何扩展程序,并且浏览器是最新的 (18.0.1025.151 m),在 Windows 7 上。

这些是样本的计算样式(包括继承的),我看不出有什么奇怪的:

-webkit-animation-delay: 0s;
-webkit-animation-direction: normal;
-webkit-animation-duration: 0s;
-webkit-animation-fill-mode: none;
-webkit-animation-iteration-count: 1;
-webkit-animation-name: none;
-webkit-animation-play-state: running;
-webkit-animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
-webkit-appearance: menulist-button;
-webkit-backface-visibility: visible;
-webkit-background-clip: border-box;
-webkit-background-composite: source-over;
-webkit-background-origin: padding-box;
-webkit-background-size: auto;
-webkit-border-fit: border;
-webkit-border-horizontal-spacing: 0px;
-webkit-border-image: none;
-webkit-border-vertical-spacing: 0px;
-webkit-box-align: center;
-webkit-box-direction: normal;
-webkit-box-flex: 0;
-webkit-box-flex-group: 1;
-webkit-box-lines: single;
-webkit-box-ordinal-group: 1;
-webkit-box-orient: horizontal;
-webkit-box-pack: start;
-webkit-box-reflect: none;
-webkit-box-shadow: none;
-webkit-color-correction: default;
-webkit-column-axis: auto;
-webkit-column-break-after: auto;
-webkit-column-break-before: auto;
-webkit-column-break-inside: auto;
-webkit-column-count: auto;
-webkit-column-gap: normal;
-webkit-column-rule-color: rgb(0, 0, 0);
-webkit-column-rule-style: none;
-webkit-column-rule-width: 0px;
-webkit-column-span: 1;
-webkit-column-width: auto;
-webkit-flex-align: stretch;
-webkit-flex-direction: row;
-webkit-flex-flow: row nowrap;
-webkit-flex-item-align: auto;
-webkit-flex-order: 0;
-webkit-flex-pack: start;
-webkit-flex-wrap: nowrap;
-webkit-flow-from: none;
-webkit-flow-into: auto;
-webkit-font-kerning: auto;
-webkit-font-smoothing: auto;
-webkit-font-variant-ligatures: normal;
-webkit-highlight: none;
-webkit-hyphenate-character: auto;
-webkit-hyphenate-limit-after: auto;
-webkit-hyphenate-limit-before: auto;
-webkit-hyphenate-limit-lines: no-limit;
-webkit-hyphens: manual;
-webkit-line-box-contain: block inline replaced;
-webkit-line-break: normal;
-webkit-line-clamp: none;
-webkit-line-grid: none;
-webkit-line-grid-snap: none;
-webkit-locale: auto;
-webkit-margin-after-collapse: collapse;
-webkit-margin-before-collapse: collapse;
-webkit-marquee-direction: auto;
-webkit-marquee-increment: 6px;
-webkit-marquee-repetition: infinite;
-webkit-marquee-style: scroll;
-webkit-mask-attachment: scroll;
-webkit-mask-box-image: none;
-webkit-mask-box-image-outset: 0px;
-webkit-mask-box-image-repeat: stretch;
-webkit-mask-box-image-slice: 0 fill;
-webkit-mask-box-image-source: none;
-webkit-mask-box-image-width: auto;
-webkit-mask-clip: border-box;
-webkit-mask-composite: source-over;
-webkit-mask-image: none;
-webkit-mask-origin: border-box;
-webkit-mask-position: 0% 0%;
-webkit-mask-repeat: repeat;
-webkit-mask-size: auto;
-webkit-nbsp-mode: normal;
-webkit-perspective: none;
-webkit-perspective-origin: 37px 10px;
-webkit-print-color-adjust: economy;
-webkit-region-break-after: auto;
-webkit-region-break-before: auto;
-webkit-region-break-inside: auto;
-webkit-region-overflow: auto;
-webkit-rtl-ordering: logical;
-webkit-svg-shadow: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0.199219);
-webkit-text-combine: none;
-webkit-text-decorations-in-effect: none;
-webkit-text-emphasis-color: black;
-webkit-text-emphasis-position: over;
-webkit-text-emphasis-style: none;
-webkit-text-fill-color: rgb(0, 0, 0);
-webkit-text-orientation: vertical-right;
-webkit-text-security: none;
-webkit-text-stroke-color: rgb(0, 0, 0);
-webkit-text-stroke-width: 0px;
-webkit-transform: none;
-webkit-transform-origin: 37px 10px;
-webkit-transform-style: flat;
-webkit-transition-delay: 0s;
-webkit-transition-duration: 0s;
-webkit-transition-property: all;
-webkit-transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
-webkit-user-drag: auto;
-webkit-user-modify: read-only;
-webkit-user-select: text;
-webkit-wrap-flow: auto;
-webkit-wrap-margin: 0px;
-webkit-wrap-padding: 0px;
-webkit-wrap-through: wrap;
-webkit-writing-mode: horizontal-tb;
alignment-baseline: auto;
background-attachment: scroll;
background-clip: border-box;
background-color: white;
background-image: none;
background-origin: padding-box;
background-position: 0% 0%;
background-repeat: repeat;
background-size: auto;
baseline-shift: baseline;
border-bottom-color: #CCC;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
border-bottom-style: solid;
border-bottom-width: 1px;
border-collapse: separate;
border-image-outset: 0px;
border-image-repeat: stretch;
border-image-slice: 100%;
border-image-source: none;
border-image-width: 1;
border-left-color: #CCC;
border-left-style: solid;
border-left-width: 1px;
border-right-color: #CCC;
border-right-style: solid;
border-right-width: 1px;
border-top-color: #CCC;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-top-style: solid;
border-top-width: 1px;
bottom: auto;
box-shadow: none;
box-sizing: border-box;
caption-side: top;
clear: none;
clip: auto;
clip-path: none;
clip-rule: nonzero;
color: black;
color-interpolation: srgb;
color-interpolation-filters: linearrgb;
color-rendering: auto;
cursor: default;
direction: ltr;
display: inline-block;
dominant-baseline: auto;
empty-cells: show;
fill: #000000;
fill-opacity: 1;
fill-rule: nonzero;
filter: none;
float: none;
flood-color: rgb(0, 0, 0);
flood-opacity: 1;
font-family: Arial;
font-size: 13px;
font-style: normal;
font-variant: normal;
font-weight: normal;
glyph-orientation-horizontal: 0deg;
glyph-orientation-vertical: auto;
height: 20px;
image-rendering: auto;
kerning: 0;
left: auto;
letter-spacing: normal;
lighting-color: rgb(255, 255, 255);
line-height: normal;
list-style-image: none;
list-style-position: outside;
list-style-type: disc;
margin-bottom: 2px;
margin-left: 2px;
margin-right: 2px;
margin-top: 2px;
marker-end: none;
marker-mid: none;
marker-start: none;
mask: none;
max-height: none;
max-width: none;
min-height: 0px;
min-width: 0px;
opacity: 1;
orphans: 2;
outline-color: black;
outline-style: none;
outline-width: 0px;
overflow-x: visible;
overflow-y: visible;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px;
padding-top: 0px;
page-break-after: auto;
page-break-before: auto;
page-break-inside: auto;
pointer-events: auto;
position: static;
resize: none;
right: auto;
shape-rendering: auto;
speak: normal;
stop-color: rgb(0, 0, 0);
stop-opacity: 1;
stroke: none;
stroke-dasharray: none;
stroke-dashoffset: 0;
stroke-linecap: butt;
stroke-linejoin: miter;
stroke-miterlimit: 4;
stroke-opacity: 1;
stroke-width: 1;
table-layout: auto;
text-align: -webkit-auto;
text-anchor: start;
text-decoration: none;
text-indent: 0px;
text-overflow: clip;
text-rendering: auto;
text-shadow: none;
text-transform: none;
top: auto;
unicode-bidi: normal;
vector-effect: none;
vertical-align: baseline;
visibility: visible;
white-space: pre;
widows: 2;
width: 75px;
word-break: normal;
word-spacing: 0px;
word-wrap: normal;
writing-mode: lr-tb;
z-index: auto;
zoom: 1;

有什么线索吗?

【问题讨论】:

  • 这不仅仅是(仅)浏览器,而是操作系统/桌面环境。这是 Linux 上的 Gnome,最新的 Chrome:stommepoes.nl/tempscreenshotso.png 看起来与您的 Windows 屏幕截图完全不同。我给你的建议是:如果你想保留你的头发,请将表单控件的样式单独留在这个级别。要么就是这样,要么是一大堆 Javascript 试图用你的图形设计来模仿表单控件。

标签: html css google-chrome border


【解决方案1】:

有趣...我也在使用 Windows 7/Chrome 18,边框的 CSS 样式按预期工作,直到我从 Aero 切换到“Windows Classic”主题,您所描述的行为发生在哪一点。上面已经说明这是一个 Windows 操作系统问题,但我只是认为这可能会提供一些额外的清晰度。

更新:使用-webkit-appearance: none; CSS 规则,似乎可以避免select 元素的默认操作系统样式。但是,它需要一些额外的 CSS 来维护元素的主要 UI 功能(即右侧的箭头按钮)。此处提供了一个工作示例:http://jsfiddle.net/qZF4B/

【讨论】:

  • 你是对的!我从 Windows Classic 主题切换到 Aero 主题,重新启动 Chrome,渲染工作正常(至少在我的环境中)。
  • @Gustavo 我已经用你可能感兴趣的纯 CSS 解决方案更新了我的答案。
【解决方案2】:

有一个简单的技巧。 使用“大纲”

例如){ border:0; outline:1px solid #CCC; }

我搜索这个的原因是我在 Windows 7 Classic 主题上遇到了同样的问题。许多人建议使用“-webkit-appearance:none;”选项,但此选项也会删除箭头按钮。然后我想起了“大纲”。看起来像我预期的那样工作,代码也很简单。

【讨论】:

  • 请注意,虽然该轮廓不适用于边界半径。
【解决方案3】:

这是在购买之前在某处被问到的,我找不到原来的问题。

这本质上是 chrome 的一个限制。显然,至少在 Windows 中,它不会尝试通过 CSS 完全控制每种输入元素类型的呈现。

如果您想完全控制控件的外观,请编写 javascript 代码来复制它们的功能,或使用现有的 UI 工具包,例如JQuery easyuidojo

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2012-03-23
    相关资源
    最近更新 更多