【发布时间】:2013-03-18 19:57:48
【问题描述】:
我试图标记这个问题[subjective](它不会让我这样做),因为我意识到它可能无法回答,可能是我不知道如何找到的常识,或者可能是意见问题。
几个月来,我一直在使用已编译 (LESS) 样式表构建商业网站,每次将背景渐变应用于元素时,都会使用如下规则:
body {
background: #592a0e;
background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZyIgeDE9IjAiIHkxPSIwIiB4Mj0iMSIgeTI9IjAiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzJkMTUwNyIgLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NTNmMTUiIC8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2cpIiAvPjwvc3ZnPg==);
background: -webkit-gradient(linear, 0 0, 100% 0, from(#2d1507), to(#853f15));
background: -webkit-linear-gradient(left, #2d1507, #853f15);
background: -moz-linear-gradient(left, #2d1507, #853f15);
background: -ms-linear-gradient(left, #2d1507, #853f15);
background: -o-linear-gradient(left, #2d1507, #853f15);
background: linear-gradient(left, #2d1507, #853f15);
filter: progid:dximagetransform.microsoft.gradient(StartColorStr='#2d1507', EndColorStr='#853f15', GradientType=1);
-ms-filter: "progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#2d1507', EndColorStr='#853f15', GradientType=1)";
zoom: 1;
}
在 LESS 中从开始和结束颜色编译的 SVG 内联渐变适用于 IE9。否则 IE9 将显示矩形 IE 过滤器渐变超出具有非零 border-radius 的元素的圆角。 (CSS 中的其他地方设置为 .ie9 a, .ie9 div { filter: none !important; } 以仅抑制 IE9 的 IE 过滤器。)
我的问题:我担心可能出现的性能问题,并想了解如何全面调查这些问题,或者如果这些问题很小以消除这些担忧好的。例如,this site 基于所有水平和垂直渐变、菜单项、标题、按钮和悬停属性,使用了这样的背景声明 21 次。
我没有证据表明此类网站存在性能问题,但我如何确定以下假设性问题是否会导致性能问题,我该如何调查它,以及我如何重新编码以避免它?
- 更复杂的 CSS 是否会导致渲染时间变慢?所有此类网站都设计为适合移动设备使用,因此我担心渲染和解析可能会在旧版移动浏览器上成为问题。
- 为了简化 CSS,并避免过度使用浏览器类
ie9(我们通常使用modernizr进行特征检测),SVG 渐变和 CSS 渐变声明保持在同一个规则集中。替代方案将是更复杂的 CSS,为每个具有渐变的元素使用单独的 IE9 规则(带有 SVG 渐变)。在我决定保持 CSS 简单时,我担心上面的代码可能会绘制两次背景,这可能会导致性能问题。 - 对于已经了解 CSS 背景渐变的非 IE 浏览器,解析内联 SVG 渐变是否繁琐?这会导致每次呈现页面时性能下降,还是仅在最初读取和解析 CSS 时导致性能下降?
如果我犯了任何严重错误、遗漏了任何重要的浏览器或忽略了任何其他性能问题,我当然愿意更正。如果有人有兴趣,我会发布编译 SVG 渐变的 LESS 代码,尽管它与我的问题没有具体关系。
【问题讨论】:
-
当然它不会让你标记问题 [主观] - 主观问题违背了网站的基本 前提...
-
有一个[主观]标签会很棒。为什么要假装一切都有正确的答案?
-
因为它是一个问答网站?
-
@Omega AKA 一个辩论答案网站。
-
@watson 如果您对 Stack Overflow 的操作感兴趣,请查看 meta.stackoverflow.com。以下是关于移除标签的一些争论:meta.stackexchange.com/questions/51627/…