关于 静态页面布局 中的一些BUG
作为一枚初级程序猿,难免在制作静态页面时会遇到一些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的更多相关文章
- 在HTML页面布局中,position的值有几种,默然的值是什么
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 负值之美:负margin在页面布局中的应用
本文转载自:http://www.topcss.org/?p=94,有修改. 负数给人总是一种消极.否定.拒绝之感,不过有时利用负margin可以达到奇妙的效果,今天就表一表负值在页面布局中的应用.这 ...
- 静态页面HTML中标签的优化(转)
静态页面HTML中标签的优化 (2010-04-03 20:54:06) 标签: 电脑 name 罗马数字 css 表单 杂谈 分类: 网页制作 从网上看了一篇关于静态页面中标签优化的问题,感觉还不错 ...
- 在静态页面html中跳转传值
在html中通过"?"传值--------<a href="index2.html?name=caoy">静态传值</a> 在跳转到的页 ...
- 【html+css】关于页面布局中遇到的问题记录
关于行内元素: 行内元素设置width无效, height无效(可以设置line-height), margin上下无效,padding上下无效,margin和padding可设置左右. text ...
- margin负值在页面布局中的应用
http://www.w3school.com.cn/tiy/t.asp 预览工具 一.左右列固定,中间列自适应布局 此例适用于左右栏宽度固定,中间栏宽度自适应的布局.由于网页的主体部分一般在中间,很 ...
- (负)-margin在页面布局中的应用
有关margin的原理可以看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 有关margin负值的几 ...
- 负margin在页面布局中的应用
关于负margin的原理建议大家看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 一. 左右列固定, ...
- 关于页面布局中,如何让一个div水平和垂直居中的五个方案
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- MyBatis源码解读(4)——SqlSession(上)
在上一篇博客中提到MyBatis是如何实现代理类MapperProxy,并抛出了一个问题--是怎么执行一个具体的sql语句的,在文末中提到了MapperMethod的execute采用命令模式来判断是 ...
- C#设置richtextbox某一段文本颜色
假设 RichTextBox1 文本是"你好,我爱你中国",想要把中国变为红色,则 可以先找到中的位置是 7 :国的位置是8 设置 RichTextBox1.SelectionSt ...
- root用户不能修改iptable文件
问题: 需要放通IP 端口 执行: vi /etc/sysconfig/iptables, 添加完成后,wq保存,提示文件只读无法保存!!! 解决步骤: 1.查看文件权限 ls -ld /etc/ ...
- sh脚本异常,binsh^M bad interpreter No such file or directory
错误 在Linux中执行.sh脚本,出现如下异常 /bin/sh^M: bad interpreter: No such file or directory 原因 在windows系统中编辑的.sh文 ...
- opencv基础到进阶(2)
本文为系列文章的第2篇,主要讲解对图像的像素的操作方法. 2.1存取像素值 为了存取矩阵元素,需要指定元素所在的行和列,程序会返回相应的元素.单通道图像返回单个数值,多通道图像,返回的则是一组向量(V ...
- Zepto源码分析-event模块
源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...
- Eclipse导入项目常见问题----facet版本问题04
问题如下: 解决办法 右击项目,找到最下面的properties,在搜索facet jdk版本问题(有个红色感叹号)01:http://blog.csdn.net/baidu_37107022/art ...
- Java中设计模式之工厂模式-4
一.工厂模式由来 1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用. 2)简单工厂模式:后来出现工业革命.用户不用去创建宝马车.因为客户有 ...
- 推荐xamlspy
xamlspy(http://xamlspy.com/) 如果在win32时代用过spy++的,都应该在silverlight/wpf时代用一下xamlspy,让你重新找到用spy++看别人程序的UI ...
- 微信JS-SDK开发 入门指南
目录 前言 1. 过程 1.1 代码 1.2 代理 1.3 下载 1.4 解压 1.5 运行 1.6 查看 2. 微信接口测试 2.1 申请测试帐号 2.1.1 测试号信息 2.1.2 接口配置信息 ...