0

我有一个在线网站,它是一个用 ASP.NET 编写的网络应用程序。当我复制站点的 HTML 代码时,将其放入 html 文件并在 localhost(Apache 服务器)上运行,一切正常,CSS3PIE 工作正常。

问题是在服务器上它的工作方式不同。首先,它甚至根本不起作用,并且在 css 中附加了 pie.htc 行为的元素完全消失了,或者说变得透明了。

我偶然发现了一个建议,说position: relative;在给定的元素上将解决问题。确实是这样,但一点也不令人满意。背景仍然是透明的,部分元素消失了,悬停时它使其他元素跳到一边几个像素。阴影有效,圆角也有效,但没有渐变。

4

1 回答 1

2

几种可能性:

1).htc未使用正确的 mime 类型提供文件。来自CSS3 PIE 已知问题

IE 要求 HTC 行为带有“text/x-component”的内容类型标头,否则它将简单地忽略该行为。许多 Web 服务器已预先配置为提供正确的内容类型,但其他的则不然。

如果您在未应用 PIE 行为方面遇到问题,请检查您的服务器配置,并在可能的情况下更新它以使用正确的内容类型。对于 Apache,您可以在 .htaccess 文件中执行此操作:

AddType text/x-component .htc

运行 IIS 的服务器上是否存在问题行为?如果是这样,什么版本的 IIS?IIS 5 或更高版本应正确配置 .htc 的 mime-type

2)也许这是一个路径问题,再次来自CSS3 PIE 已知问题

相对路径

CSS 中与相对路径相关的主要问题有两个: 行为 URL

IE 将行为属性的 URL 解释为相对于源 HTML 文档,而不是像其他所有 CSS 属性一样相对于 CSS 文件。这使得调用 PIE 行为不方便,因为 URL 必须是:

绝对来自域根——这使得 CSS 不容易在目录之间移动——或者,相对于 HTML 文档——这使得 CSS 不容易在不同的 HTML 文件之间重用。

PIE 解释的 CSS 属性中的 URL

PIE 不解析 CSS 样式表(这样做会非常慢);它让 IE 处理解析、选择器查询、级联等,然后简单地向它询问结果属性值。这意味着当 PIE 获取属性值时,它不知道该值源自的上下文。

因此,对于包含 URL 值的属性(例如 border-image 或 -pie-background),PIE 无法相对于它们出现的 CSS 文件解析这些 URL。而是相对于 JavaScript 执行上下文(即源 HTML 文档的位置)解析它们。

于 2012-03-29T04:47:12.630 回答