CSS页面布局及排版

一、CSS盒子模型   CSS将每个元素看成是一个矩形盒子,占据一定空间。 盒子模型两方面理解:1.独立的盒子内部结构;2.多个盒子之间的香菇关系。   1.盒子模型概念 独立盒子模型由:内容、border、padding、margin四部分组成。详见之前的文章内容。 盒子的实际宽(高)= 内容(width/height)+padding(两边)+border(两边)+margin(两边) width和height指内容的宽高。   2.边框 边框属性: (1)border-color (2)border-width,属性值可以使thin、medium、thick、长度单位。 (3)border-style,重要属性。如果没有指定边框样式,其他属性都不起作用,边框将不存在。属性值有:

none(默认,无边框) hidden(隐藏边框,解决边框冲突问题) dotted(点)、dashed(虚线)、 solid(实线) double(双线边框)、groove(3D凹槽边框)、ridge(3D凸槽边框)、inset(3D凹边边框)、outset(3D凸边边框)   2个属性值:上下,左右; 3个属性值:上,左右,下; 4个属性:上,右,下,左。 前三个可直接写成border:xxx;

  (4)border-radius,圆角边框/圆角背景。      (对角线原则)     2个属性:左上角右下角,右上角左下角;     3个属性:左上角,右上角左下角,右下角;     4个属性:左上,右上,右下,左下。   (5)border-shadow,阴影。 属性:水平偏移值  垂直偏移值  模糊值  尺寸  颜色  类型 border-shadow:水平偏移值   垂直偏移值  模糊值  尺寸  颜色  类型;

红色为必选。可以是负数(往相反方向偏移); 模糊值默认0; 阴影尺寸默认0; 阴影类型默认outset,另一个是内阴影inset。 注意:加入阴影后盒子所占的实际宽度和高度要加上阴影的宽度和高度。   3.内容 属性: (1)width、height。有三种值:auto(根据盒子内容自动调整)、固定值、百分比(占父元素width和height的百分比)。 (2)overflow,溢出值处理。

auto:自动判断是否超过设定高度,超过就显示滚动条。 hidden:溢出部分不显示。 scroll:不管是否溢出,强制显示滚动条。 visible:溢出部分依旧显示,这是默认值。

还有两个子属性:overflow-x 和 overflow-y ,用来单独定义水平/垂直方向的处理方式。   4.padding(内边距) 2个属性值:上下,左右 3个属性值:上,左右,下 4个属性值:上,右,下,左 注意:padding值不能是负数。另外使用padding时,盒子宽度为auto/没有定义宽度时,内边距计算在盒子内,否则计算在盒子外。   5.margin(外边距) margin控制元素与元素之间的距离。 margin值可为负数。 默认情况下,有些元素的padding和margin会有相应的默认值,不同浏览器不同。所以CSS布局中,利用下面代码将所有元素的内外边距设为0,重置边距。

*{   /*所有元素的内外边距重置*/     margin:0;     padding:0; }1234

body的margin比较特殊,控制的是页面与浏览器窗口边距的距离。

  二、盒子之间的关系 有标准流模式、“浮动”属性、“定位”属性。 1.标准文档流/标准流 指不使用一些特殊的排列和定位的css样式。 元素排列方式的不同可以分为两大类: 1.块级元素: 在父元素中会自动换行,且跟同级的兄弟元素按照出现的顺序依次垂直排列,宽度自动铺满父元素宽度。 div、h1 -h6、 p 、pre 、hr、menu、noframes、noscript、dl、ul、ol 、fieldset、form、table 2.行内元素: 在父元素中水平排列,直到父元素的最右端才自动换行。 span,   strong,   em,  br,  img ,  input,  label,  select,  textarea,  cite,  a,sub,sup 他们本身不占据单独区域,仅仅是在其他元素的基础上指出一定范围。 块级元素可以包含行内元素和块级元素,反过来不行。 行内元素设置的width和height无效,设置margin和padding只有左右边距有效。   2.div元素和span元素 1.<div> 标记 这个标记无任何特殊含义。 2.<span> 标记 也没有任何特殊含义。 通常情况下,页面中大的区域块用<div> ,<span>仅用于需要单独设置样式风格的小元素。   3.盒子在标准流中的定位 用margin控制盒子与盒子之间的位置关系。 (1)两个行内元素相邻时距离:左边的margin-right+右边的margin-left; (2)不是行内元素,有换行效果的块级元素:上下间的距离是两者中的较大者,如上面的margin-bottom大于下面的margin-top,距离就取margin-bottom。 (3)当div嵌套时,子元素的margin将以父元素的内容区域为参考。 “标准流”中,块级元素没有设width和height时,默认宽度会自动延伸到父元素的内容区域为限,高度为包容下内容的最小高度。如果设置了width和height,就以值来显示。 (4)当margin为负数时。被设为负数的往相反方向移动,甚至会覆盖在其他元素上。当块级元素间形成嵌套的父子关系时,margin设为负数可以使子元素从父元素中分离出来。如:

 

<div class="father">父     <div class="son">子</div> </div> ······ .son{     margin-left:-30px; }1234567

  4.盒子的浮动(float)与定位(position) 1.盒子的浮动(float) 通过设置块级元素float属性,可使元素“浮动”。 float默认值为none。还有left,right。 设置浮动后,盒子的宽高也会有改变。要清除浮动。也就是:(块级元素设置为浮动后,将脱离“标准流”,但还占据着父元素的空间,父元素的高度不再受浮动的子元素的影响,而由没浮动的其他子元素高度确定。) 浮动可使多个块级元素水平排列。 清楚浮动:clear:left,right,both,none。默认值为none。

/*在父元素中所有浮动元素的后面再增加一个div元素*/ <div class="clear"></div> ····· .clear{clear:both;}1234

  2.盒子的定位(position) 除了可以使用float,还可以使用position。四个值,static,absolute,relative,fixed。 (1)static(静态定位) 表示元素在标准流中的默认位置。无任何效果。为默认值。 (2)relative(相对定位) 指定为relative后还要指定一定的偏移量,水平方向left、right,垂直方向top、bottom。 偏移量是指与它原来所处的位置的移动距离。 可以描述如下:     1).相对定位,是以元素恩深在“标准流”中或者浮动的原本的位置为基准,通过偏移达到新位置。     2).仍在标准流中,对父元素和兄弟元素无任何影响,即使由于偏移移到了父元素外边,其他元素也还在原来位置,不会顶上来。 (3)absolute(绝对定位) 也需要指定偏移量。     1).绝对定位,从标准流中脱离,他们对其后的兄弟元素无任何影响。     2).使用绝对定位的元素,以它“最近”的一个“已经定位”的“祖先元素”为基准进行偏移,如果没有已经定位的祖先元素,则以浏览器窗口为基准进行偏移。     3).所谓已经定位:指position有设置,且不是设置为static的任意一种方式。 (4)fixed(固定定位) 以浏览器窗口为根据。   5. z-index空间位置 z-index属性调整重叠元素的上下位置,值大的位于小的上方。值可为正数可为负数。   6. 盒子的display属性 display可以改变元素块级和行内状态。 常用值:none,inline,block。 none:隐藏起来。

  三、CSS页面布局  设计者根据页面显示的内容,对页面有个整体的框架规划,包括整个页面分为哪些区域,各区域的父子关系等。div对整体区域进行划分,然后用css进行定位,再在各个div中添加相应的内容并用css进行样式控制。 常用布局方式:宽度固定且居中板式、“工”字型板式。 注:记得如果用float,要记得clear。如果用position:absolute,父元素的position也要设置。

  四、CSS内容排版 1.CSS设置文字样式 1)字体:font-family。 2)文字大小:font-size。(如果是百分比,行内元素是相对于父元素文字大小的百分比。如果本身是块级元素,就是相对于自身的百分比。) 3)文字加粗:font-weight。值有:normal、bold、bolder、lighter,或数值。 4)文字倾斜:font-style。值有:italic(意大利体)、normal、oblique(真正的倾斜)。 5)其上可以统一用font:xxx xxx xxx ·····复合表示。 6)文字颜色:color。 7)文字下划线、顶划线、删除线:text-decoration。值有:none、underline(下划)、overline(顶划)、line-through(删除线)、blink(闪烁,部分浏览器支持)。 可以同时加好几个效果,如同时加顶划和下划等。 8)英文大小写切换:text-transform。值有:capitalize(首字母大写)、lowercase(全部小写)、uppercase(全部大写)。 9)文字间距:letter-spacing——字母间距;word-spacing——单词间距。中文间距用letter-spacing。 10)文字水平对齐:text-align。值有:left、right、center、justify(两端对齐)。 11)文字行高:line-height。 12)段落首行缩进:text-indent。text-indent:2em。突出就是-2em。

/*实现首字下沉*/ p.one:first-letter{     font-size:3em;      /*首字大小*/     float:left;         /*向左浮动,实现首字下沉*/     padding-left:24px;  /*与左边间距*/     padding-right:5px;  /*与右边间距*/     font-weight:bold; } ····· <body>     <p class="one">这边要实现首字下沉效果。并且内容应该很长。</p> </body>123456789101112

13)段落间的间距:设置p的margin属性实现。应该是上下段落中margin值大的那个。

  2.CSS设置图像样式 1)图像边框:html有自带了border属性,但一般用css设置。 2)图像缩放:通过width和height实现。

img{width:50%}  /*相对父元素的大小*/1

设置图像时要注意:仅设置图像的width或height时,图像会自动等比例缩放。如果同时设置,图像不会等比例缩放。 3)图像对齐: ——a.水平对齐:不能直接通过img的text-align属性实现。要设置其父元素的text-align属性。可嵌套在div里通过设置div的text-align。 ——b.垂直对齐:可直接通过img的vertical-align属性实现。vertical-align 只能用于行内元素 。vertical-align属性值:baseline(默认值,落在文字的基线上)、top、middle、bottom、sub、super、text-bottom(与文字底端对齐)、text-top(与文字顶端对齐)。也可以用数值表示,正负都可,以文字基线为基准,上移(正)或下移(负值)一定距离,均以图像底部为准。   3.CSS设置背景样式 1)背景颜色:background-color。 2)背景图像:background-image。background-image:url(img/1.jpg); 3)背景图像平铺:默认情况,自动沿水平和垂直平铺。希望只沿着一个方向平铺,通过background-repeat控制: repeat:沿水平和垂直。默认值。 no-repeat:不平铺。 repeat-x:沿水平方向。 repeat-y:沿垂直方向。 4)背景图像位置:background-position。数值:水平 垂直。 5)固定背景图像位置:background-attachment:fixed。 6)综合以上所有的:background:background-image red no-repeat fixed 70% 30%;   4.CSS设置样式列表 1)列表符号:list-style-type。对ul和ol一样效果。   2)图像符号:list-style-image。list-style-image:url(img/1.jpg); 不同了浏览器会产生图像符号与列表项文字间距不一样的效果。可将ul元素的list-style-type设置为none,隐藏项目符号,再将图像设置为li的背景图像:background:url(img/1.jpg);实现各个浏览器效果一样。   5.CSS设置超链接 1)按钮式超链接:通过css属性,设置border边框属性实现。 2)背景图像变换超链接:多种方法。可通过项目列表的list-style-type设为none来制作菜单和导航条。 难点:利用float属性使得列表中每一个列表项达到水平排列。利用display属性将行内元素a转换为块级元素,从而可以设置width和height。   6.鼠标特效 cursor:pointer。其他数值具体看其他的文章。不一一列出。   7.CSS设置表格样式 ps:<table summary="这里的值用于概括整个表格内容,浏览器不显示,对于搜索引擎抓取有用"> 1)设置表格、单元格边框:border。 默认情况下,各个单元格边框数分离的,如果要设置相邻单元格边框间距,table有自带了html的collspacing属性,此处用css的border-spacing属性。border-spacing:10px; 如果单元格间两条边框合为一条,可将table元素设置border-collapse属性:border-collapse:collapse; 每个单元格都可设置自己的样式,相邻边框在合并时的优先级: ——a.粗的边框>细的边框,如果border-width属性相同,则double>solid>dashed>dotted>ridge>outset>groove>inset。 ——b.如果边框border-style:hidden,则优先级最高。 ——c.如果边框border-style:none,则优先级最低。 ——d.如果边框的其他设置均相同,只有颜色上的区别,则单元格样式>行>行组>列>列组>表格样式。 2)表格种的颜色:color。 3)表格宽度:table-layout。auto时为自动方式,默认值。fixed为固定值,表格宽度不依赖单元格中的内容,由width指定。 例子:表格的立体效果。   8.CSS设置表单样式 略。

  五、浏览器兼容 五大浏览器:IE、Firefox、Chrome、Safari、Opera。 针对不同浏览器编写不同css代码——Hack过程。 要代码优化,尽可能少的产生冗余代码。 1.Hack IE6识别“ * ”和“ _ ”,IE7识别“ * ”,firefox都不能识别。顺序应该是 正常,带*号的,带_的。 此外:!important声明在IE6和FF中可以提升样式应用优先权。但在IE6中,!important声明会被之后的同名属性定义替换。所以*和!important声明搭配可以很好的解决IE6、IE7和FF的兼容性问题。 ps:区别IE6、IE7:background:green !important;background:blue; 2.私有前缀: 暗示该CSS属性或规则尚未成为W3C标准的一部分。私有前缀有4种: -webkit-   ———— chrome和safari 1的 -moz-  ———— FF -ms-  ———— IE -o-   ———— Opera 如:

border-radius:12px; -webkit-border-radius:12px;   ———— chrome和safari 1的 -moz-border-radius:12px;  ———— FF -ms-border-radius:12px;  ———— IE -o-border-radius:12px;   ———— Opera /*由于safari5,FF4,chrome最新版都支持border-radius属性,所以代码可直接写成border-radius:12px;。*/123456                   --------------------- 作者:ranchocai 来源:CSDN 原文:https://blog.csdn.net/Ranchonono/article/details/68187642 版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/scyfbk18123/p/10139824.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XHTML 40个例子显示的内容一样,通过CSS实现不一样的布局效果, 是学习div + css排版的绝佳教程.body标签内的内容如下: Header 1) Content here. column long long column very long fill fill fill long text text column text silly very make long very fill silly make make long make text fill very long text column silly silly very column long very column filler fill long make filler long silly very long silly silly silly long filler make column filler make silly long long fill very. very make make fill silly long long filler column long make silly silly column filler fill fill very filler text fill filler column make fill make text very make make very fill fill long make very filler column very long very filler silly very make filler silly make make column column fill long make long text very make long fill column make text very silly column filler silly text fill text filler filler filler make make make make text filler fill column filler make silly make text text fill make very filler column very column text long column make silly long text filler silly very very very long filler fill very fill silly very make make filler text filler text make silly text text long fill fill make text fill long text very silly long long filler filler fill silly long make column make silly long column long make very 2) Navigation here. long long fill filler very fill column column silly filler very filler fill fill filler text fill very silly fill text filler silly silly filler fill very make fill column text column very very column fill fill very silly column silly silly fill fill long filler 3) More stuff here. very text make long silly make text very very text make long filler very make column make silly column fill silly column long make silly filler column filler silly long long column fill silly column very Here it goes the footer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值