我有一个在线网站,它是一个用ASP.NET编写的网络应用程序。当我复制网站的HTML代码时,将其放入html文件并在localhost(Apache服务器)上运行,一切正常,CSS3PIE正常工作。
问题是在服务器上它的工作方式不同。首先,它甚至根本不起作用,并且在css中附加了pie.htc行为的元素完全消失,或者说让它们变得透明。
我偶然发现一条建议,说position: relative;
对给定的元素将解决问题。它有点做,但它根本不令人满意。背景仍然是透明的,部分元素消失了,并且在悬停时它使其他元素以几个像素跳到一侧。阴影工作,圆角也有点工作,但没有渐变。
答案 0 :(得分:2)
有几种可能性:
1) .htc
文件未使用正确的mime-type提供。来自CSS3 PIE Known Issues
IE要求使用内容类型提供HTC行为 标题为“text / x-component”,否则只会忽略 行为。许多Web服务器都预先配置为正确提供服务 内容类型,但其他不是。
如果您没有应用PIE行为问题,请检查 您的服务器配置,如果可能的话,更新它以使用正确的 内容类型。对于Apache,您可以在.htaccess文件中执行此操作:
AddType text/x-component .htc
运行IIS的服务器上存在问题吗?如果是这样,什么版本的IIS? IIS 5 or higher should have the mime-type for .htc configured correctly
2)也许这是一个路径问题,再次来自CSS3 PIE known issues
相对路径
CSS中的相对路径有两个主要问题: 行为网址
IE解释相对于源的行为属性的URL HTML文档,而不是像其他人一样相对于CSS文件 CSS属性。这使得调用PIE行为不方便, 因为URL必须是:
PIE解释的CSS属性中的来自域根目录的绝对 - 这使得CSS不容易在目录之间移动 - 或者, 相对于HTML文档 - 这使得CSS不容易在不同的HTML文件之间重用。
URL
PIE不解析CSS样式表(这样做是不可接受的 慢);它让IE处理解析,选择器查询,级联, 等等,然后简单地询问结果属性值。这个 意味着当PIE获得属性值时,它不知道 该价值来源的背景。
因此,对于包含URL值的属性(例如 border-image或-pie-background),PIE无法解析这些URL 相对于它们出现的CSS文件。它解决了它们 而不是相对于JavaScript执行上下文,这是 源HTML文档的位置。