作为一枚初级程序猿,难免在制作静态页面时会遇到一些BUG,在此,我从网上找了一些资料并且结合自己的项目开发经验,总结了一些在静态页面布局时可能会遇到的问题,希望能对初级程序猿有一定的帮助(资料请参考:http://blog.csdn.net/sir1241/article/details/52259405),本文在此基础上有所扩展和详述:

1.<img>标签被<div>包裹时,你会发现<img>图片下会有一条缝隙

原因分析:<img>是一个特殊的标签,它属于行内元素又有块级元素的部分属性,准确点说,它属于display:inline-block(但又有区别),而且它默认底部对齐

解决方法:给<img>标签加一个display:block将其转换为标准的块级元素即可解决

2.使用<ul><li></li></ul>制作导航栏的二级导航时,二级导航所在ul总会有一定的偏差

原因分析:二级导航与一级导航为子父级关系,而且我们习惯与把二级导航的ul放在一级导航内元素的后面,导致浏览器解析时会解析出多的文本节点

解决方法:给二级导航设置为绝对定位,并清楚浮动

3.在制作PC端和移动端的静态页面时,由于PC端和移动端的UI都是分开的,在PC端进行静态页面布局时保证正常分辨率正常显示,倘若你使用百分比布局时,在页面大小发生变化的时候会发生元素的偏移

原因分析:静态页面布局,PC端和移动端的页面大小是有很大差别的,而且PC端和移动端各种浏览器的渲染也有差别,像素点占比也有差别

解决方法:给页面中的所有元素单位都使用百分别,切将字体单位大小设置为em/rem等单位

4.布局时居中,利用line-height想让元素垂直居中与页面,利用text-align让元素水平居中

原因分析:line-height是指行高,既文本的行高,延伸为内容的行高,text-align指文本水平居中,可延伸为内容水平居中

解决方法:元素的垂直居中利用行内元素设置vertical-align:middle实现,水平居中可以设置块级元素的margin:auto实现,在特殊情况(高度确定等)下,可以使用绝对定位,设置偏移量为50%,同时设置对应方向的margin反向偏移元素宽高距离一半(例:某div宽度100px,高100px,先让该div水平居中,绝对定位后设置left:50%;margin-left:-50px),此方法居中后可根据情况而清除浮动

5.在使用position:absolute定位时,其相对位置不明确,想当然的使用此方法定位,结果发现定位元素没有达到理想的效果

原因分析:position:absolute的相对位置是已上一级有position设定的元素位置为基准,若上一级没有则再往上一级,依次类推直到body元素,也就是说,任何元素都没设置position,此时absolute的基准是body元素

解决方法:在使用position:absolute定位时,找到你所想定位的地方,再找到此地方所在的元素,并以此元素为父级元素(定位元素放入其中),并给此父级元素设置position:relative即可

6.同时使用vertical-align和line-height对于元素位置的影响

原因分析:vertical-align和line-height,一个是针对元素,一个是针对内容,当然此内容也可以包括子级元素,这时对子级元素设置二者可能出现属性重叠,造成效果不理想,例:当文字和图片处于同一级是,同时设置vertical-align和line-height并不能使文字和图片居中对齐

解决方法:此时让上级元素的高和图片的高相同,在图片属性中设置vertical-align:top,同时设置文字的height和line-height即可居中(line-height的值为height的一半)

7.元素高度塌陷问题(并非只有浮动)

原因分析:当一个元素的所有子级元素都脱离正常文档流(浮动或者绝对定位),而父级元素仍处于正常文档流,由于层级关系,导致父级元素中没有实打实的元素存在,导致高度撑不起来,从而对父级元素设定的有关背景的样式全部无效

解决方法:

  7-1.对父级元素设置适合的CSS高度,强行撑起高度(不推荐使用,建议父级元素高度固定时使用)

  7-2.clear:both清除浮动——新建一个样式选择器CSS命名为“clear”的div,对应选择器样式为“clear:both”,在父级元素结束前加此div引入“class="clear"”样式(即空标签方法,不推荐使用)

  7-3.给父级元素设置overflow:hidden(因为overflow:hidden属性相当于是让父级紧贴内容,但会导致部分子级元素显示异常,只推荐没有使用position或对overflow:hidden理解时使用)

  7-4.将父级元素也一起设置与子级元素设置相同的属性(如:浮动,不推荐使用)

  7-5.给父级元素设置 display:table(不推荐使用)

  7-6.结尾处加 br标签 clear:both(不推荐使用)

  7-7.给父级元素设置 overflow:auto (不推荐使用,需要出现滚动条或者确保你的代码不会出现滚动条使用)

  7-8.给父级元素定义 伪类:after 和 zoom (clearfix方法,此方法为当前主流清楚浮动方法,强烈推荐使用,建议定义公共类,以减少CSS代码)

  clearfix代码如下:

.clearfix:after {
content:"";
display:block;
height:;
clear:both;
visibility: hidden;
}
.clearfix {*zoom:;}

8、IE浏览器中使用a标签套img标签会出现边框的问题

原因分析:IE浏览器是目前的主流浏览器中兼容性问题最多的浏览器

解决方法:同时设置img和a标签的border:0即可

9、z-index的使用

z-index只能在position属性值为relative或absolute或fixed的元素上有效。

  希望这些经验对初级程序猿有一定的帮助!

关于 静态页面布局 中的一些BUG的更多相关文章

  1. 在HTML页面布局中,position的值有几种,默然的值是什么

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  2. 负值之美:负margin在页面布局中的应用

    本文转载自:http://www.topcss.org/?p=94,有修改. 负数给人总是一种消极.否定.拒绝之感,不过有时利用负margin可以达到奇妙的效果,今天就表一表负值在页面布局中的应用.这 ...

  3. 静态页面HTML中标签的优化(转)

    静态页面HTML中标签的优化 (2010-04-03 20:54:06) 标签: 电脑 name 罗马数字 css 表单 杂谈 分类: 网页制作 从网上看了一篇关于静态页面中标签优化的问题,感觉还不错 ...

  4. 在静态页面html中跳转传值

    在html中通过"?"传值--------<a href="index2.html?name=caoy">静态传值</a> 在跳转到的页 ...

  5. 【html+css】关于页面布局中遇到的问题记录

    关于行内元素: 行内元素设置width无效, height无效(可以设置line-height), margin上下无效,padding上下无效,margin和padding可设置左右.   text ...

  6. margin负值在页面布局中的应用

    http://www.w3school.com.cn/tiy/t.asp 预览工具 一.左右列固定,中间列自适应布局 此例适用于左右栏宽度固定,中间栏宽度自适应的布局.由于网页的主体部分一般在中间,很 ...

  7. (负)-margin在页面布局中的应用

    有关margin的原理可以看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 有关margin负值的几 ...

  8. 负margin在页面布局中的应用

    关于负margin的原理建议大家看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 一. 左右列固定, ...

  9. 关于页面布局中,如何让一个div水平和垂直居中的五个方案

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Dorado7与@ManyToMany的矛盾分析

    在Dorado7开发时,通过UpdateAction提交数据,默认只会提交DataSet中DirtyTree,这样如果子对象数据未发生修改时是不会提交的,后台拿到的子对象为空.如果两对象之间,通过JP ...

  2. 通过Percona Xtrabackup实现数据的备份与恢复

    Xtrabackup简介 Percona XtraBackup是一个开源.免费的MySQL热备份软件,能够为InnoDB和XtraDB数据库执行非阻塞备份,特点如下: 1.快速.可靠的完成备份 2.备 ...

  3. 2017CUIT校赛-线上赛

    2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ...

  4. coreCLR系列随笔 之ClrJit项目之alloc.cpp文件分析(1)

    首先声明,自己对CLR了解得不多,只是个人爱好,可能有错误,请指出,文件源码如下(可能不是最新的) // // Copyright (c) Microsoft. All rights reserved ...

  5. GPU编程--Shared Memory(4)

    GPU的内存按照所属对象大致分为三类:线程独有的.block共享的.全局共享的.细分的话,包含global, local, shared, constant, and texture memoey, ...

  6. C语言到C++(1) - 基本变化

    说到C++和C语言的区别,大部分人都会想到面向对象和面向过程.然而这种说法并不准确.面向对象和面向过程指的是两种不同的程序设计思想,而C++与C是两种编程语言,难道C++就不能用于面向过程去解决问题吗 ...

  7. 《孵化twitter》读书笔记

    寒假在家看完了第一本书——<孵化twitter:从蛮荒到IPO的狂野旅程>.在2014上半年,尝试看了该书的英文原版,奈何自己英语太菜,实在看不懂.这次有了中文版,就决定要看看.该书对于我 ...

  8. 使用java实现发送邮件的功能

    首先要在maven添加javamail支持 <dependency> <groupId>javax.activation</groupId> <artifac ...

  9. cpp(第十七章)

    1.baseic_ostream<charT,traits>& write(const char_type *s,streamsize n),cout.write()第一个参数提供 ...

  10. python基础操作_集合_三元运算

    #使用操作文件的时候,可以使用with函数#with open('E:\info.txt','a+') as fr#fr这个值可以是任意值# :#for line in fr:'''with open ...