滑动门需注意的问题

2012年5月6日

之前写过一篇文章:滑动门的“2”种实现方法,介绍了滑动门的2种实现思路。这次说一下滑动门中需要注意的一个问题,问题出在所使用的图片是圆角的(4个角都是),且背景透明。

发现最后的效果是:右上角、右下角的圆角没有了。这与我们的期望不符。如下图所示:

详见有此问题的demo
我们期望的效果是这样:

对于以上存在的问题,为什么右上角右下角的圆角出不来,刚开始着实让人摸不着头脑,反反复复检查图片,检查代码,甚至换浏览器查看都没有找到问题所在。不过后来终于想明白了,问题出在所使用的图片上,并且和滑动门的实现原理密切相关。

本例中滑动门的实现原理简单说就是:外层标签“产生左上角、左下角”,“虚拟的右上角、右下角是直角”,内层标签“产生右上角、右下角”,并且内层标签覆盖在外层之上浮向最右边,“虚拟的左上角、左下角是直角”,二者叠加在一起刚好形成4个圆角。

本例中所使用的图片4个角都是圆角且背景透明。

结合以上2点可以看到:当内层标签“产生右上角、右下角”,并且内层标签覆盖在外层之上浮向最右边的时候,由于右上角、右下角是透明的,透明的右上角、右下角与外层虚拟的右上角、右下角直角叠加在一起,实际上看到的还是直角。这就是原因所在。

本例中所使用的图片还有一个特点:图片为一个整体的“连体图片”,如下图:

原因找到以后,可针对性的用2中方法解决此问题。
(1)将图片拆分。既然透明的右上角、右下角与外层虚拟的右上角、右下角直角叠加在一起,实际上看到的还是直角,那外层虚拟的右上角、右下角直角如果是透明的,叠加在一起的话,看起来不就是圆角了吗?
拆分后的图片如下:

详见拆分图片解决此问题的demo

(2)右上角右下角带背景切图。既然透明的右上角、右下角与外层虚拟的右上角、右下角直角叠加在一起,实际上看到的还是直角,如果右上角右下角带背景(不透明),与外层标签叠在一起,再与周围环境的背景叠在一起,看起来不就是圆角了吗?
带背景后的图片如下:

详见带背景解决此问题的demo

所以理解滑动门的原理很重要。

之路 前端开发

IE6下浮动元素3px问题导致的父元素padding-top同时作用在其padding-bottom处的问题

2012年4月23日

问题描述:在IE6下,父元素宽度比浮动的子元素的宽度和大3px以下(比如大2px或大1px)以下,浮动的子元素里面的a元素hover时,父元素padding-top同时作用在其padding-bottom并和原有的padding-bottom累加作用。

正常情况截图如下:

鼠标hover到价格上时,截图如下:

可以看到,父元素的padding-bottom明显改变。
详见有此问题的demo

解决方法(1):给最后一个浮动的子元素一个任意负值的margin-right,详见方法(1)解决此问题的demo

解决方法(2):不设置a:hover或者a:hover的的相关属性不改变a原有属性,详见方法(2)解决此问题的demo

相关推荐:

IE6下浮动元素”3px”问题导致的绝对定位元素不可见的问题
IE6下浮动元素”3px”问题导致的字符重复问题

之路 前端开发