壹次网首页 | 工具源码首页 | 技术文章首页 | 文章分类 | | |

文章搜索: 分类 关键字
您的位置:首页网页设计Html/Css → 图解网页定位的技巧
图解网页定位的技巧
添加日期:2007-8-1 8:03:41     [ ]
上一页 [1] [2] [3] 下一页

四 、分析实现方法 

1.从上面的截图可以看到有一标题,标题下面是一个列表,所以很容易想到用<h>标签和无序列表<ul><li>来做结构, 标题是一块有背景的矩形块,文字白色,文字在矩形块中居中对齐,所以给<h>标签加个宽度控制,最后为了让文本看起来在垂直方向上 居中,再加个上边填充,所以用到下面样式:

h3 {
    color: #FFF;
    background-color: #F90;
    width: 100px;
    padding-top:3px;
    text- align:center;
}

2.下面是一个<ul>区块,我让它有一个上线框,这样与标题吻合在一起就做出了标题效果,而<ul>里面的<li>要有一 条下划线,以形成一种分行效果,于是用到下边框,这里用到下面样式:

ul {
    width: 300px;
    border-top: 1px solid #F60;/*使 其上边有一线条,与标题h3吻合*/
}
ul li {
    padding:5px;
    border-bottom: 1px solid #CCC;
    list-style:none;/*去除列表样式,这对于标准浏览器很重要*/
}

3.列表中的链接文字点击效果就很简单了,大家自己看代码就行了,注意一点就是用到了下列一条样式:

a {
    position: relative;/*设置其定位方法为相对定位,等一下内部信息面板就可 以相对它定位*/
    display:block;/*让链接以块状呈现,这样不用点中链接文字就可以响应链接*/
}

4.组织信息面板布局(实现的显示与隐藏效果放在后面再说)。信息面板为一个有浅蓝色背景和较深蓝色边框,并且有5px填充的盒子,盒 子左边安排一幅图片,图片大小用CSS控制,图片右边为一个有清晰数据结构列表,为了不出现与前边父级<li>的重复使用(不然等一下 CSS样式控制会较麻烦,因为内部的<li>会继承父级的样式,除非你又要新定义一则样式来逐一清除父级带给它的样式),所以我用到 <dl><dd>结构,只设定<dl>一个宽度,高度不设定,让其高度随说明文字增多而增高,同时不用绝对定位,以便让它可以 把父级撑高,然后并让它浮动到右边。而信息面板中的图片则用绝对定位方法把它定位在信息面板左上角,用5px偏移做到与父级5px填充一致 ,这样看起来会自然点。当然也许你认为还有很多简单的方法可以实现,比如:让图片左浮动,而且再让<dl>浮动就行了,此方法测试 表明在IE中能正常显示,在FF中会有问题,因为我本意要让右边说明文字从上到下直列下来,当文字高过图片时,不能出现文字环绕图片的情 况,恰好这种情况出现在FF中(因为<dl>是在正常文本流中,而左侧图片又用了左浮动,所以问题出现),所以再想到让<dl>右 浮动,但此时图片在正常文本流中又不能放到左上方了,既然浮动会影响到<dl>内的文本流,那么就用绝对定位让其脱离正常文本流, 但是问题又来了,这时它无法做到让父级高度自适应。所以最后想到图片是固定在信息面板的左上角的,就把它绝对定位,再让<dl>浮 动到右边去,结果发现这个方法还行,用到下面样式:

a:hover div {
    position: absolute;
    padding:5px;
    display:block;
    width: 245px;/*只给出宽度,高让它随内容多少自动调整 */
    left:150px;/*这是相对父级A的定位*/
    top: 20px;
    border: 1px solid rgb(91,185,233);
    background-color: rgb(228,246,255);
    z-index:999;/*把信 息面板提到一个较高的位置,使链接文字过长时不会与面板重叠,但这只对FF有效*/
}
a img {
    width:80px;
    height:80px;
    border:none;/*去除图片边框,默认情况下,链接内的图片在标 准浏览器会出现边框*/
    display:block;
    position: absolute;/*用绝对定位抽离正常文本流 ,不然在设计的时候考虑到不同浏览器正常显示会更麻烦*/
    top:5px;/*这里的5px是与信息面板大盒子的填充一样的 */
    left:5px;
}
dl {
    width: 160px;
    float:right;
    color: #999;
    line-height:20px;
}
dl dd span {
    font-weight: bold;
    color: #639;
}

5.实现隐藏与显示效果。这个隐藏显示效果是由鼠标触发的,所以要自然想到链接A(因为现在我们是用CSS实现,你不要想到用 javascript),并且要把信息面板安排在<a></a>内,因为到时就可以用CSS类型选择符配合样式的a:hover伪类控制其显示和隐藏 了。另外一个很重要的问题是IE7以下版本有个A状态伪类BUG,这个BUG使你本来看似没有问题的CSS设置在IE中之前被隐藏的面板无法显示出来 ,这里用到一个常用的方法,加一条样式:a:hover {background:#fff;}以消除存在问题。

(1)让信息面板初始状态隐藏,用到样式:

a div {
    display: none;/*初始化信息面板不显示*/
}

(2)显示面板,用到样式:

a:hover div {
    position: absolute;
    padding:5px;
    display:block;
    width: 245px;/*只给出宽度,高让它随内容多少自动调整 */
    left:150px;/*这是相对父级A的定位*/
    top: 20px;
    border: 1px solid rgb(91,185,233);
    background-color: rgb(228,246,255);
    z-index:999;/*把信 息面板提到一个较高的位置,使链接文字过长时不会与面板重叠,但这只对FF有效*/
}

四、收尾工作

最后整合一下样式和结构代码就完成了此实例的制作。最后再作一下设计思路扩展指引:像此类隐藏显示的CSS控制设计还可以用到边界的 方法,即初始状态用一个很大的margin负值把对象移出可视区域,鼠标响应时再重新定位对象回到正常该出现的位置。另外相信你看完本教程 后,自己喜欢的漂亮链接提示面板自己可以做出来了。

我们看图中是一个宽度为200px,高度为50px,margin:25px; border:25px solid #333; padding:25px; 相对定位的元素,并且位移距上 50px,距左50px。而下方是一块默认定位的黑色区块。我们看到这个处在文本流的区块被上面的相对定位挡住了一部分,这说明:“当元素被 设置相对定位或是绝对定位后,将自动产生层叠,他们的层叠级别自然的高于文本流”。除非设置其z-index值为负值,但是在 Firefox等浏览 器中z-index为负值时将不会显示。并且我们发现当相对定位元素进行位移后,表现内容已经脱离了文本流,只是在本文流中还为原来的绝对定 位留下了原有的总宽与总高(内容的高度或是宽度加上margin\border\padding的数值)。这说明在相对定位中,虽然表现区脱离了原来的文本 流,但是在文本流中还还有此相对定位的老窩。这点要特别注意因为在实际应用中,如果相对定位的位移数值过大,那么原有的区域就会形成 一块空白。并且我们注意,定位元素的坐标点是在margin值的左上边缘点,即图中的B点。那么所有的位移的计算将以这个点为基础进行元素的 推动。当TRBL为正值时位移的方向是内聚的,由些可推,当TRBL为负值时位移的方向是外放的。在图片有位移的箭头指向标识,带有加号的是 正值位移方向,带有减号的是负值位移方向。如上所述:相对定位只可以在文本流中进行位置的上下左右的移动,同样存在一定的局限性,虽 然他的表现区脱离了文本流,但是在文本流却依然为其保留了一席之地,这就好比一个打工的人他到了外地,但是在老家依然有一个专属于他 的位置,这个位置不应他的移动而改变。但是这样很明显就会空出一块空白来,如果希望文本流抛弃这个部分就需要用到绝对定位,绝对定位 不光脱离了文本流,而且在文本流中也不会给这个绝对定位元素留下专属空位,这就好比是一个工厂里的工人,如果有一个工人走了自然会要 有别的工人来填充这个位置。而移动出去的部分自然也就成为了自由体。绝对定位将可以通过TRBL来设置元素处在任何一个位置。在父层 position属性为默认值时,TRBL的坐标原点以body的坐标原点为起始。看下图:

上图可知,文本流中的内容会顶替绝对定位无素的位置,一点都不会客气 。而绝对定位元素自然的层叠于文本流之上。而在单一的绝对定位中,定位元素将会跑到网页的左上角,因为那里是他们的被绝对定位后的坐 标原点。 

五、上面说的是单纯的绝对定位,而在实际的应用中我们常常会需要用到一种特别的形式。即希望定位元素要有绝对定位的特性,但是又希 望绝对定位的坐标原点可以固定在网页中的某一个点,当这个点被移动时绝对位定元素希望能保证相对于这个原坐标的相对位置。也就是说需 要这个绝对定位要跟着网页移动,而并且是因定在网页的某一个固定位置。通常当网页是居中形式的时候这种效果就会显得特别的重要。要实 现这种效果基本方式就是为这个绝对定位的父级设置为相对定位。那么绝对定位的坐标就会以父级为坐标起始点。 虽然是如此,但是这个坐标原点却并不是父级的坐标原点,这是一个很奇怪的坐标位置。我们看一下模型图示:

我们看到,这个图中父级为黑灰色区块,子级为青 色区块。父级是相对定位,子级是绝对定位。子级设置了顶部位移50个像素,左倾位移50个像素。那么我们看,子级的坐标原点并不是从父级 的坐标原点位移50个像素,而是从父级块的padding左上边缘点为坐标起始点。而父级这里如果要产生位置移动,或是浏览器窗口大小有所变动 都不会影响到这个绝对定位元素与父级的相对定位元素之间的位置关系。这个子级也不用调整数值。 这是一种很特别并且也是非常实用的应用方式。如果你之前对于定位的控制并不自如的话,相信看完对这里对定位的解释一定可以把定位使用 得随心所欲。

上一页 [1] [2] [3] 下一页
出处:论坛转载 作者:佚名 点击:
 热点文章
·photoshop制作香烟、烟头、烟雾
·photoshop图片卷角、翻页效果的制作
·用U盘或移动硬盘装《深山红叶袖珍系统Win PE启动..
·photoshop经典恐怖片海报效果教程
·photoshop水晶球质感表现 - 关于光影的细节
·ghost.pif最新变种手动查杀,ARP欺骗挂马+KAV让..
·[css] table-layout:fixed 属性的解说,IE、Fire..
·photoshop制作3D立体小人和字体
·关于zend解密的程序
·自适应页面高度100%方法(表格直接100%高度没有效..
 推荐文章
·如何彻底删除一个不需要的系统服务
·模仿QQ和MSN消息提示的效果
·CC攻击的思路及防范方法
·广告联盟的一些评价
Powered by yici.net
CopyRight (C) 2006-2012 版权所有   [ 依次网 ];未经授权,任何人不得抄袭、仿冒本站
ICP备案:苏ICP备05011771号 证书下载 ICP证号:苏ICP证040301
仪征广目网络信息服务有限公司 版权所有