博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
css pie.htc使用总结
阅读量:2427 次
发布时间:2019-05-10

本文共 2952 字,大约阅读时间需要 9 分钟。

pie.htc可以让ie支持css3的一些特性,但并不总是有效,使用时经常会碰到下面的一些问题

1. z-index相关问题

IE下这些CSS3效果实现是借助于VML,由VML绘制圆角或是投影效果的容器元素,然后这个容器元素作为目标元素的后兄弟节点插入,如果目标元素position:absolute 或是 position:relative,则这个css3-container元素将会设置与之一样的z-index值,在DOM tree中,同级的元素总是后面的覆盖前面的,所以这样就实现了覆盖,又避免了可能有其他元素正好插入其中。

所以,问题来了,如果目前元素的position属性为static,也就是默认属性,则z-index属性是没有用的,无覆盖可言,所以此时IE浏览器下CSS3的渲染是不会成功的。要解决也很简单,设置目标元素position:relative或是设置祖先元素position:relative并赋予一个z-index值(不可为-1)

2. 相当路径的问题

IE浏览器的behavior 属性是相对于HTML文档而言的,与CSS其他的属性不一样,不是相对于CSS文档而言的。这使得使用pie.htc文件不怎么方面。如果绝对路径于根目录,则CSS文件不方便移动;如果相对路径与HTML文档,则pie.htc文件在不同HTML页面见的重用性大大降低。同时,诸如border-image后面的URL属性路径也不好处理。

3. 缩写的问题

使用PIE实现IE下的CSS3渲染(其他方法也是一样),只能使用缩写的形式,例如圆角效果,我们可以设置border-top-left-radius表示左上圆角,但是PIE确实不支持这种写法的,只能是老老实实的缩写。

4. 提供正确的Content-Type

要想让IE浏览器支持htc文件,需要一个有着”text/x-component” 字样的content-type 头部,否则,会忽视behavior。绝大数web服务器提供了正确的content-type,但是还有一部分则有问题。例如的我的空间域名商就没有”text/x-component” 字样的content-type,可能是出于安全的考虑。

如果您发现在您的机子上PIE方法无效,也就是htc文件这里指pie.htc文件无效,检查您的服务器配置,可能其需要更新到最新的content-type。例如对于Apache,您可以在.htaccess文件中左如下处理:

在django中使用嗯PIE.htc的方式如下:
配置url.py:
from django.conf.urls.defaults import *from django.views.generic.simple import redirect_tofrom django.core.servers.basehttp import FileWrapperfrom django.http import HttpResponseimport osimport settings# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()def pie_with_headers(request):    filename = settings.STATIC_PATH + '/scripts/css/PIE.htc'    wrapper = FileWrapper(open(filename))    response = HttpResponse(wrapper, content_type='text/x-component')    response['Content-Length'] = os.path.getsize(filename)    return responseurlpatterns = patterns('',    # Uncomment the next line to enable the admin:    (r'^admin/service/appinfo/(?P
\d+)/delete','service.admin_views.app_delete'), (r'^admin/service/appinfo/(?P
\d+)','service.admin_views.app_edit'), (r'^admin/service/appinfo/add','service.admin_views.app_edit'), (r'^admin/', include(admin.site.urls)), (r'^media/(?P
.*)$', 'django.views.static.serve', {'document_root':'/opt/dev/website/kakaservice/media', 'show_indexes': True}), (r'^content/(?P
.*)$', 'django.views.static.serve', {'document_root':'/opt/dev/website/kakaservice/templates/content', 'show_indexes': True}), (r'^scripts/(?P
.*)$', 'django.views.static.serve', {'document_root':'/opt/dev/website/kakaservice/templates/scripts', 'show_indexes': True}), (r'^PIE\.htc',pie_with_headers,{}), (r'^$', 'service.views.index'),)

然后在相应的css文件中使用(使用时需要注意相对路径问题,最好通过django server的access信息来判断请求的路径):

.page .content .right .item .icon{

    width: 140px;
    height: 141px;
    padding: 5px;
    background-color: #ffffff;
    margin: 15px auto;
    font-size: 0;
    position: relative;
    -webkit-border-radius: 25px 25px 25px 25px;
    -moz-border-radius: 25px 25px 25px 25px;
    border-radius: 25px 25px 25px 25px;
    behavior: url(../PIE.htc);
}

转载地址:http://zwsmb.baihongyu.com/

你可能感兴趣的文章
“离开360时,它只给了我一块钱”
查看>>
PDF 翻译神器,再也不担心读不懂英文 Paper 了
查看>>
漫话:如何给女朋友解释什么是RPC
查看>>
@程序员,为什么别人比你优秀?!
查看>>
你的红包狂欢夜,互联网巨头们的流量争夺战
查看>>
35 岁程序员,年后第一天被辞退
查看>>
情人节她说:是的,嫁人当嫁程序员
查看>>
骚操作!代码写情诗 | 程序员有话说
查看>>
二线城市容不下程序员
查看>>
不要成为自己讨厌的那种程序员 | 程序员有话说
查看>>
为什么程序员下班后只关显示器从不关电脑?
查看>>
滴滴裁员 2000 人,具体补偿方案已出
查看>>
余生,做个不焦虑的程序员!
查看>>
世界排名第 3 的滴滴裁员,开春求职必知的独角兽排行榜
查看>>
Spring Boot 中的响应式编程和 WebFlux 入门
查看>>
阿里终结裁员危机!坚决不拿 10 万阿里人祭天!
查看>>
如何从零开始两天撸一个微信小程序?!(内含源码)
查看>>
女神?御姐?文艺?这样的程序媛你绝没见过! | 程序员有话说
查看>>
“软件外包城”下的马鞍山 | 程序员有话说
查看>>
那些上相亲网站的程序员,后来怎么样了?
查看>>