css页面布局总结
W3C标准:是万维网制定的一系列标准,包括结构化标准语言(html、xml),表现
标准语言(css),行为标准语言(DOM,ECMAScript<javascript>)组成。这个标准倡
要将结构,样式,行为分离。
在网页制作中,面对设计图,网页制作人员一般要遵循的原则:
先考虑设计图中的文字内容和内容模块之间的关系,重点放在编写html结构和语义化,
然后在考虑布局和表现形式。
今天主要对css的页面布局做过总结:
css的页面布局模型分为三大种模式:
(1)流动模型(标准文档流)(2)浮动模型(定位) (3)层模型
一、流动模型(标准文档流)<Normal Flow>
流动模型是浏览器默认的一种网页布局模式,布局方式:块级元素自上向下排列,行级元素子左向右排列,如下图:
二、浮动模型(float)
最初提出浮动模型的初衷是:为了实现文字环绕的效果;
float属性是一个魔鬼:它会让它的父元素高度塌陷。
float属性也有包裹性:把一个容器设置了float属性,就会将器内容包裹起来。大小随着
里面的内容变化而变化。
float没有脱离文档流,它移动时会把旁边的人挤走。
注意:当我们把一个不是块级的元素设置为了float属性时,就会自动将该元素block化。
将元素设置float属性(设置方法:float:left或者floa:right)
1、该元素会一直向左移,或者一直向右移动直到碰到容器为止。
2、一个块状元素设置了float属性之后,它只影响临近它的后面的那个元素。
3、如果一个元素没有设置宽度,但是它设置了浮动属性,那么这个元素的宽度随着它
容的变化而变化。
浮动这个恶魔有的时候让我们的呈现的页面的效果不理想,此时要消除浮动属性:
对受浮动影响的元素消除浮动的影响的方法:(例子:如慕课网中点击打开链接)
1、加入clear:both;或clear:right/left;:一个元素被设置了float属性,如果不像让紧挨着它的元素受到影响跟着移动,就在
这受到影响的元素上加个clear:both;属性。
2、<div class="主">
<img src="" style="float:left">
</div>
<div>afads<div>
上面的情况,为img设置了浮动,如果不想让紧挨着div中的文字受到影响,我们可以对
外层包裹“主”div设置一个overflow:hidden;这样这个主div就被消除了float的影响,不会
就会自成一行,所以下面的文字不会跟着浮动到图片旁边。
利用float实现的两列布局(三种情况):程序:程序连接
1、左侧固定,右侧自适应:
左侧设置属性:{设置width,设置float:left}
右侧设置属性:{padding-left/margin-left}
2、右侧固定,左侧自适应:
此中情况还分为两种情况:
(1)html中的代码和我们的感官认知不同,先<img 图像>后<文字>的处理方法:
图像设置属性{设置width,设置float:right}
文字设置属性{设置margin-right}
(2)html中的代码和我们的感官认知一致,先<文字>后<img 图像>的处理方法:
文字的设置方法:
先在文字这个要自适应的容器外,嵌套一个标签。
方法:
为左面自适应的内容设置属性{设置width:100%,设置float:left}
为自己嵌套的标签设置属性{padding:left/margin-left}
为固定的内容设置属性{设置width,设置float:left,设置margin-left:负值}
3、左右两侧均自适应(智能自适应)
针对IE8+:一侧设置属性float,另一侧设置属性display:table-cell。
针对IE7:一侧设置属性float,另一侧设置属性display:inline-block。
三、层模型
层模型有四种定位模式:
1、静态定位:position:static;
2、绝对定位:position:absolute;
3、相对定位:position:relative;
4、固定定位:position:fixed;
(I)position:absolute;
只要设置了absolut,元素就变成天使,脱离人间(即脱离文档流)。人间的内容,自动
移动紧挨。
absolute属性和float有点相似:
破坏性:它和float一样具有破坏性,它也可以让其父元素塌陷。
包裹性:将一个容器设置为position:absolut;属性,则会将其中的内容包裹住,大小随着
内容的变化而变化。<div id="box" class="box">沈路</div>即:随沈路大小而变化。
(II)折翼天使和大天使
a、折翼天使:当一个元素仅设置了postion:absolute属性,而没有设置方向并且不受
relative属性限制时,它就成为折翼天使。(功能很强大)
折翼天使两大功能:1、去浮动。2、位置跟随
去浮动:float和absolute是同父异母但感情不好的兄弟,他两不能同时存在,由于
absolute是天使很强大,只要absolute出现,float的功能就会自动消失。
位置跟随:即没有成为天使之前(普通元素时),它的位置在什么地方,它的绝对定
位就在什么位置。
利用强大的折翼天使:
*利用无依赖的abosulte折翼天使,可以让图片,图标完美覆盖,如图中的hot,推荐,vip
图标,都是利用无依赖的abosulte实现。
对这些图标不需使用原来的方法为父元素设置一个relative,只需要利用abosulte的紧跟
随特点,之后使用margin来调节这个天使的位置。以vip举例:
*对于下拉列表框的位置设定:
a
b
原始的定位方法有两种:
1、通过计算图a的位置,来计算b位置进行定位,但是如果浏览器像素发生改变会错位。
2、给b元素的父元素a加上relative性质,可以解决错位问题,但是对有点多余。
@利用无依赖的absolute方法的紧跟随特点:无论a位置怎么变化,b都紧跟随。
*让内容居中:注意absolute的元素就对不受text-align属性影响,它已经脱离文档流了;
方法。
原始方法:1、块级元素使用text-align。2、图片等行内元素display:block化之后,使用
margin:0px auto;进行居中。
@利用折翼天使:
<div class="父">
"  "
<img class="要居中的图片">
</div>
将‘父’这个块级元素属性设置为text-align属性,这样其内部元素 就会居中对其,
再将‘要居中的图标absolute’化,就会紧跟随原来的居中位置。
记住微调位置,但这个方法不是最优的。
*边缘对齐定位
实现效果图:
<div class="父">
"  "
<div class="放图片的容器">
<img class="要居中的图片">....
</div>
</div>
和居中有点相似,将‘父’这个容器设置为text-align:right;这样该容器里的子元素都将
向右靠,在将放图片的div容器,内联化,display:inline;之后使用absolute紧跟随就可以
了。
*星号时有时无,图文对齐问题,文字溢出问题都可以使用折翼天使absolute化,但要注
意微调。
b、大天使:当和top,right,bottom,left配合使用时,就变成了真正的大天使,和人间任何
瓜葛都没有了,有了瞬间移动的功能。
top,right,bottom,left和width,height之间的相似之处:
I、覆盖整个屏幕的遮罩层方法:绝对定位的方向如果是相互对立的时候,不是顺序位移而
是身体的炸裂拉伸。IE7+才会兼容。
1、 2、
II、当left,right和width同时存在时,是width起作用;
如.image {
    position: absolute;  left: 0; right: 0;width:20%; 
}此时图片是显示容器的20%;left,right 不起作用;
如何让这两种相互帮助起作用那,就是当让图片margin:auto;时。此时和可以让图片
真正的居中,但此方法只适用于IE7+;
abosulte的实用点:
让其利用在页面的整体布局上:
1、body降级,子元素升级的方法;例如让一个div元素代替body成为最外框。
方法:html,body{height:100%}
div{position:absolute; left:0;top:0;right:0;bottom:0;}
2、让各个模块:头部,尾部,侧栏各居其位;同时将内容区想象为body;
header,footer{position:absolute;left:0;right:0}
header{height:48px;top:0;}
footer{height:52px;bottom:0;}
aside{width:250px;position:absolute;left:0;top:0;bottom:0;}
.content{positon:absolute;top:48px;bottom:52px;left:250px;overflow:auto;(当内容
区里面的东西过多时,可以使用滚动条)}
注意:这种方法下的头部,尾部,侧栏都起到了position:fixed;的效果;不会随着滚动
条而滚动,这就可以解决了很多position:fixed;给移动端带来的问题;
小提示:
1、若只有一个绝对定位元素,自然不需要z-index,它会自动覆盖普通元素。
2、如果有两个绝对定位元素,控制DOM流的前后顺序达到需要的覆盖效果,依然无
z-index;
3、如果多个定位元素交错,非常少见的情况,用z-index:1控制;
4、若非弹框类的绝对定位元素z-index>2,必定z-index冗余,请进行优化。
II、position:relative
该属性是老大,可以对absolute这个天使进行限制,它可以施法将absolute限制到一个
房间里。这样就可以让一个元素相对于其他元素来进行定位。
a、参照定位的那个元素必须是要移动定位的那个元素的后辈。
b、让参照定位元素中加position:relative;
c、定位元素加position:absolute,使用top等进行偏移。
注意:尽量避免使用relative,让absolute尽量不依赖relative。
当必须使用relative时,要让relative最小化,让其只针对一个内容施法。
relative属性是让元素相对于自己原来的位置进行偏移,它是不会脱离文档流的,所有会出
现重叠现象,他不像abosulte,如果一个元素设置为absolute,其他元素的布局会有所
改变,而相对定位是不会改变其他元素的布局的。
当top,bottom同时出现时,top起作用;
当left,right同时出现时,left起作用。
这个relative相对定位属性我们可以利用它对元素进行退拽。
III、postion:fixed
fixed和absolute有点相似,但不同之处是,它永远只针对屏幕内的网页窗口,滚动条无
论怎样移动,它的位置始终不变。
css页面布局总结的更多相关文章
- CSS 页面布局、后台管理示例
		CSS 页面布局.后台管理示例 页面布局 1.头部菜单 2.中间内容/中间左侧菜单 3.底部内容 <div class='pg-header'> <div style='width: ... 
- css页面布局
		写在前面: 页面布局整体上可以分为两类:固定宽度(一般固定960px):流式布局:将流式布局转换为固定布局很容易,只需要外围再包括一个div,为其设置宽度即可. html默认的布局方式是将每个块状标签 ... 
- CSS页面布局常见问题总结
		在前端开发中经常会碰到各种类型布局的网页,这要求我们对css网页布局非常熟悉.其中水平垂直居中布局,多列布局等经常会被使用到,今天就来解决一下css布局方面的问题. 水平垂直居中的几种方法 说到水平垂 ... 
- CSS页面布局与网格(上)
		1.布局规划 1.1 网格 网格系统是设计师在切分布局时作为参照的一组行和列. 1.2 布局辅助类 类名用于为布局添加样式.为了让样式可以重用,让类名表达其意图. .column { /* 一般列的样 ... 
- 第6天:DIV+CSS页面布局实战
		今天我从早上9:00写代码一直写到下午18:00,写的我差点抑郁了,还好最后终于写出了一个完整页面,没有做动画效果,就是练习了一下DIV+CSS布局,做的是福务达(www.zzfwd.cn)的主页,真 ... 
- 一、CSS概述 	二、CSS的选择器(认识) 	三、CSS样式和属性(练习) 	四、重构商城首页DIV+CSS(页面布局)(重点) 浮动/更改显示方式
		一.CSS概述###<1>概念 DIV,就是一个HTML元素,块级元素,通常结合CSS进行页面的布局. CSS,层叠样式表,给HTML元素增强显示. ###<2>作用 样式定义 ... 
- 3种常见的CSS页面布局--双飞翼布局、粘连布局、左右两列布局
		一.左右两列布局 1.代码如下,可先粘贴复制,自行运行 <!DOCTYPE html><html> <head> <meta charset="UT ... 
- dic+css页面布局分享
		HTML部分代码<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ... 
- 第五章 CSS页面布局基础
		1.标准文档流 在正常流中,在没有使用浮动或者定位的情况下,文本元素按照从上到下.从左到右的格式布局.这是浏览器的默认行为.在正常流中,块级元素从上到下依次排列,而行级元素从左到右依次排列.正常流中的 ... 
随机推荐
- 【打CF,学算法——二星级】CF 520B Two Buttons
			[CF简单介绍] 提交链接:Two Buttons 题面: B. Two Buttons time limit per test 2 seconds memory limit per test 256 ... 
- ASPNETCOREAPI 跨域处理   SQL 语句拼接 多条件分页查询    ASPNET CORE 核心 通过依赖注入(注入服务)
			ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源, ... 
- HDU 1421 搬寝室 (线性dp 贪心预处理)
			搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ... 
- linux查找nginx所在目录
			ps -ef |grep nginx 
- LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
			题目标签:HashMap 题目给了我们两个句子,让我们找出不常见单词,只出现过一次的单词就是不常见单词. 把A 和 B 里的word 都存入 map,记录它们出现的次数.之后遍历map,把只出现过一次 ... 
- LeetCode 976. Largest Perimeter Triangle (三角形的最大周长)
			题目标签:Array 题目给了我们一个 边长的 array, 让我们找出 最大边长和的三角形,当然前提得是这三条边能组成三角形.如果array 里得边长组成不了三角形,返回0. 最直接的理解就是,找到 ... 
- scanner使用中遇见的问题
			近期在学习的过程中遇见一个问题,问题不难但还是须要去认真对待. 先看看我写的源码 public static void main(String[] args){ for(;;){ Scanner in ... 
- session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)
			在登录过滤器中.推断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != nul ... 
- java 多线程——并发编程模型 学习笔记
			并发编程模型 ... 
- MDK链接脚本错误
			我想让我的程序运行在RAM中而不是在SPI FLASH上,写了一个scatterfile: ROM 0x00000000 0x00200000 ;spi flash{STARTUP +0 { star ... 
