华易动力天津网站制作公司 免费咨询热线:400-0022-823 电话:022-28261501 28335110
地址:天津市河西区围堤道146号华盛广场B座22楼
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息
  首页 关于我们 建网站:从这里开始 域名空间服务 案例展示 新闻中心 网站制作知识 网站设计技巧 人才招聘 联系我们  
  网站制作知识
程序制作
数据库知识
域名空间知识
SEO网站优化
天津网站制作方案 更多..
如何获得了大量的好的外链资源
常见的长尾关键词组合方法
如何利用百度平台获取流量
营销优化型网站的简介
新顶级域名的形式
网站建设分为如下八步
网站专题设计
关于门户网站设计方案
华易动力售后服务规范
服务器机房介绍
优秀客户展示(排名无先后) 更多..
环化(天津)燃气设备安装有限公司
天津市国信投资担保有限公司
天津城市职业学院
天津大学EMBA
南开大学CID
北京同仁堂天津药店有限公司
金权道(天津)餐饮管理有限公司
天津市友好合作城市企业促进会
天津天大求实电力新技术股份有限公司
天津红旗农贸投资控股有限公司
天津二人锅餐饮管理有限公司
天津市滨湖剧院
渤海产业投资基金管理有限公司
天津天富软管工业有限公司
新闻中心-行业资讯 更多..
· 企业为什么要做APP   2016-11-24
· 如何搭配网站   2016-11-16
· css表单布局的五个小技巧   2016-11-16
· 服务器维护的重点   2016-11-14
· 如何建设你想要的网站类型   2016-11-14
· 阿里设计师用这2方法提升设计创新力   2016-11-3
· 我们看过的各种设计理论法则   2016-11-3
· Windows 8设计时的安全性   2013-12-27
· 未来网站技术的发展   2013-10-12
· 企业网站建设规划   2013-7-30
全部信息 当前位置:首页网站制作知识 → 详细内容
制作网站的技巧
更新时间:2013/7/5 点击:1838次
一、        IE6 下z-index无效。
在CSS中,通过z-index这个属性改变层级,要让z-index起作用有个前提,就是元素的position属性要 是relative,absolute或是fixed。
z-index层级越高,内容越应该在上面显示。在大部分的浏览器在大部分的情况下,确实如此,但是不绝对,尤其遇到IE6。
 
1、关于效果截图的些必要说明
下面的不是废话,是为了更容易的理解我下面唾沫横飞的内容。
以下所有结果截图的大背景如下:
1、页面上固定不动的,一成不变的,送豪宅也不会从良的是一个黑色背景,透明度40%,几乎满屏显示的层级为1的绝对定位层。HTML为:
<div></div>
对应CSS为:#blank{width:100%; height:600px; background:black; opacity:0.4; filter:alpha(opacity=40); position:absolute; left:0; top:0; z-index:1;}
作用是为了让层级关系一目了然。看:
这说明内容在z-index为1的绝对定位层之下。

这说明内容在z-index为1的绝对定位层之上。
2、页面上做对比的是美女图片,图片在半透明黑色绝对定位层的上面还是下面很容易辨别,这样,您就能够对我所说的z-index不起作用有很直观的认识了。
2、IE6的抱怨:浮动让我沉沦
现在开始真正的讲述问题的产生,原因以及解决了。首先讲讲第一种z-index无论设置多高都不起作用情况。这种情况发生的条件有三个:1、父标签 position属性为relative;2、问题标签无position属性(不包括static);3、问题标签含有浮动(float)属性。
您可以拿下面的代码自己做个简单测试:
<div></div>
<div style="position:relative; z-index:9999;">
 <img style="float:left;" src="http://image.zhangxinxu.com/image/study/s/s256/mm2.jpg" />
</div>
丫的,这z-index都9999了,层级够高吧,但是,看下面的图:
 
这一对比就知道问题了,可能有人会疑问,这会不会是IE6的relative自己感冒了,而不是浮动(float)携带了“甲流病毒”。好,我现在去掉浮动,HTML代码如下:
<div></div>
<div style="position:relative; z-index:9999;">
 <img src="http://image.zhangxinxu.com/image/study/s/s256/mm2.jpg" />
</div>
结果IE6下:
我想,问题应该都清楚了,至于原因,我起初以为是haslayout搞的鬼,后来,用zoom一测试,发现不是(IE7下无此bug也证明不是 haslayout的原因),似乎就是这个float会让z-index失效。由于将外部div的position:relative属性改为 absolute可以解决这一问题,我就怀疑是不是浮动让relative发生了些变化,float与relative在水平定位上可以说是近亲,会不会 是因为这两者搅和在一起所以什么“畸形”“体弱多病”就出现了。这仅是我的猜测而已,真正的原因还是去问IE6的后妈吧。
解决方法,解决方法有三,1、position:relative改为position:absolute;2、去除浮动;3、浮动元素添加position属性(如relative,absolute等)。
3、固执的IE6:它只认第一个爸爸
可能不少人知道,这IE6下,层级的高低不仅要看自己,还要看自己的老爸这个后台是否够硬。用术语具体描述为:
父标签position属性为relative或absolute时,子标签的absolute属性是相对于父标签而言的。而在IE6下,层级的表现有时候不是看子标签的z-index多高,而要看它们的父标签的z-index谁高谁低。
有一定经验的人可能都知道上面的事实。但是,相信这里面很多人不知道IE6下,决定层级高低的不是当前的父标签,而是整个DOM tree(节点树)的第一个relative属性的父标签。有时平时我们多处理一个父标签,z-index层级多而复杂的情况不多见,所以难免会有认识上 的小小偏差。
好,下面展示这个bug。
条件很简单,只要绝对定位的第一个元素的第一个爸爸,或者说是最老的那个爸爸级别的人的relative属性小于黑色半透明层的z-index层级。例如下面的HTML代码:
<div></div>
<div style="position:relative;">
 <div style="position:relative; z-index:1000;">
        <div style="position:absolute; z-index:9999;">
         <img src="http://image.zhangxinxu.com/image/study/s/s256/mm3.jpg" />
        </div>
    </div>
</div>
可以看到,mm3图片的父标签div 是绝对定位,层级9999,比1大多了,绝对定位的父标签层级1000(10000也一样),也比黑色半透明层的z-index:1大多了,但是,我们可怜的IE6童鞋——
再看看以Firefox为代表的其他童鞋:
IE7与IE6有着同样的bug,原因很简单,虽然图片所在div当前的老爸层级很高(1000),但是由于老爸的老爸不顶用,可怜了9999如此强势的孩子没有出头之日啊!
知道原因解决就很轻松了,给第一任老爸添加z-index后的HTML代码如下:
<div></div>
<div style="position:relative; z-index:1;">
 <div style="position:relative; z-index:1000;">
        <div style="position:absolute; z-index:9999;">
         <img src="http://image.zhangxinxu.com/image/study/s/s256/mm3.jpg" />
        </div>
    </div>
</div>
结果IE6童鞋喜笑颜开,春光灿烂:
 
二、css reset中的list-style:none
       在日常工作中经常需要对ul,li进行css reset ,将列表符号隐藏.最常用的写法就是Ul,li,ol{list-style:none;}(也有人用ul,li,ol{list-style-type:none;})
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta content="fanfan,xiangrui09@qq.com" />
 <title>常见的用法</title>
 <style>
 body,ul,li,p {padding:0;margin:0;font-size:12px;}
 p{font:bold 16px/180% arial;}
 div{float:left;display:inline;background:#eee;margin-right:10px;}
 p span{text-decoration:line-through;}
 ul{width:275px;margin:4px 0 0 15px;background:aqua;}
 ul,li{list-style:none;}
 </style>
 </head>
 <body>
      <div>
      <p>1: list-style:none;</p>
      <ul>
   <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
   <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
   <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
      </ul>
      </div>
 </body>
 </html>
这个页面在IE6,7,8,FF中都没什么问题.
但是我们不能忽略的是,list-style: 包含了三个属性: list-style-type,list-style-position,list-style-img
如果不注意这三个属性的话,list-style有时候就会出来捣蛋
比如当ul,浮动后,需要display:inline 来解决在IE6中的双倍边距问题时,奇怪的事情发生了:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta content="fanfan,xiangrui09@qq.com" />
 <title>奇怪的事情发生了</title>
 <style>
 body,ul,li,p {padding:0;margin:0;font-size:12px;}
 p{font:bold 16px/180% arial;}
 div{float:left;display:inline;background:#eee;margin-right:10px;}
 p span{text-decoration:line-through;}
 ul{width:275px;margin:4px 0 0 15px;background:aqua;}
 .ul01{float:left;display:inline;}
 .ul01,.ul01 li{list-style:none;}
 </style>
 </head>
 <body>
      <div>
      <p>1: list-style:none;</p>
      <ul class="ul01">
   <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
   <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
   <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
      </ul>
      </div>
 </body>
 </html>
 
.ul01{float:left;display:inline;}
.ul01,.ul01 li{list-style:none;}
上面的页面在ie8,ff中仍然正常
但是在IE6,7中,ul内侧与li产生了距离.
由此可见,当我们定义了list-style:none以后,尽管列表符并不出现,但是在IE6,7中,仍然留有它的位置.
看看在FF里这个UL到底拥有哪些属性
 
图上可见,当css中定义list-style:none时,对list-style-position 并没有影响,仍然是FF浏览器的默认设置,值为outside
而IE6,7中很可能默认list-style-position:inside
为了证实这一点,我把list-style:none 换为list-style:none inside none再测试了一下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta content="fanfan,xiangrui09@qq.com" />
<title>强制inside</title>
<style>
    body,ul,li,p {padding:0;margin:0;font-size:12px;}
    p{font:bold 16px/180% arial;}
    div{background:#eee;margin-right:10px;}
    p span{text-decoration:line-through;}
    ul{width:275px;margin:4px 0 0 15px;background:aqua;list-style:none inside none;}
</style>
</head>
<body>
<div>
    <p>强制inside list-style:none inside none;</p>
    <ul>
        <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
        <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
        <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
        </ul>
</div>
</body>
</html>
 
运行后可以发现,在IE6,7中,与list-style:none的表现一模一样.
所以我推测在IE6,7中当UL具有float:left和display:inline属性后,设置了list-style:none,则list-style-position也默认为inside了;
所以我得出的总结是
在IE6,7下,当UL不具有float:left;display:inline;时:
无论有没有list-style:none这个属性,列表符都被隐藏,不占位置(下面代码中的5,6)
当UL具有float:left;display:inline;属性时
list-style:none,列表符被隐藏,但是仍然留有位置(list-style-position:inside);(下面代码中的 UL1,ul3)
未设置list-style:none;列表符被隐藏,也不占位(list-style-position:outside)(代码UL4)
而UL02 在参与测试的各浏览器中表现都比较理想
最后这一段代码对比一下各种情况下list-style的表现,尤其注意4,5,6在IE6,7下的表现
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>list-style:none还是list-style:none outside none;</title>
<style>
body,ul,li,p {padding:0;margin:0;font-size:12px;}
p{font:bold 16px/180% arial;}
div{float:left;display:inline;background:#eee;margin:0 10px 10px 0;}
p span{text-decoration:line-through;}
ul{width:275px;margin:4px 0 0 15px;background:aqua;}
.ul01,.ul02,.ul03,.ul04{float:left;display:inline;}
.ul01,.ul01 li{list-style:none;}
.ul02,.ul02 li{list-style:none outside none;}
.ul03,.ul03 li{list-style:none inside none;}
.ul04,.ul04 li{}
.ul05{}
.ul05,.ul05 li{list-style:none;}
.ul06{}
.ul06,.ul06 li{}
</style>
</head>
<body>
            <div>
            <p>1:float:left;display:inline; list-style:none;</p>
            <ul class="ul01">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
            <div>
            <p>2:float:left;display:inline; list-style:none outside none;</p>
             <ul class="ul02">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
             <div>
             <p>3: float:left;display:inline;list-style:none inside none;</p>
             <ul class="ul03">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
            <div>
             <p>4:float:left;display:inline;未做css reset</p>
             <ul class="ul04">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
            <div>
             <p>5: 无 display,float属性 list-style为none;</p>
             <ul class="ul05">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
            <div>
             <p>6: 无 display,float属性 无list-style:none;</p>
             <ul class="ul06">
                <li><a href="#">纯净的文字 奇异的梦幻 奔腾的思想</a></li>
                <li><a href="#">就像对爱情一样 要求是近乎完美的</a></li>
                <li><a href="#">校园里淡淡的青春 单纯的男孩女孩</a></li>
            </ul>
            </div>
</body>
</html>
通过上面代码表现结果的对比,我认为:
在firefox中只要list-style-type为none ,则无论list-stype-position的值为outside或inside , list-style都能很好的被隐藏
而在IE6,7中,仅设置list-style:none,并不足以解决所有问题
所以我认为在css reset的时候使用 list-style:none outside none 更好
三、CSS强制不换行
在一个规定宽度大小的ul里边 我把li的宽度定义为自动。企图让li根据内容长度来自动向左对齐排列。
例如宽度为210px的ul里   分别有4个li 这个4个li的宽度根据它们的自身内容长度为80px、120px、140px、80px。
    我需要的效果是4个li向左自动排列。当第三个li和前两个li的长度之和大于ul的宽度时候 第三个li则会下移一行。在第二行显示。而不是把ul撑宽,或者是把自己撑高(内容换行,高度增加)
分别定义了ul的宽度210px和li的宽度自动,发现结果是:
ul并没有被撑宽,可惜li也没有自动到下一样排列。而是内容换行,把li给撑高了。然后死皮赖脸的挤在了第一行。。
    仔细考虑过之后认为问题出在li内部内容换行上。于是寻找禁止换行的css属性。
 
  公司总机:022-28261501 28335110
客户服务邮箱:service@nfree.cn,手机直线:15822335163
CopyRight 2006~2024 All Rights Reserved 天津市华易动力信息科技有限公司
地址:天津市河西区围堤道146号华盛广场B座22楼 邮编:300202

津公网安备 12010302001042号


在线QQ(售前咨询)
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息