CSS层叠样式表盒子与浮动笔记(二)

tech2022-08-01  137

盒子模型

页面都是由一个一个的盒子组成的,盒子就是块级元素标签

CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框、外边距、内边距、和 实际内容

边框

border可以设置元素的边框。边框有三部分组成:边框宽度(粗细) 边框样式 边框颜色

border : border-width || border-style || border-color

属性作用border-width定义边框粗细,单位pxborder-style边框样式birder-color边框颜色

边框样式 border-style 可以设置如下值:

none:没有边框即忽略所有边框的宽度(默认值)solid:边框为单实线(最为常用的)dashed:边框为虚线dotted:边框为点线

简写

border:1px solid red; 没有顺序

边框分开写

border-top: 1px solid red; /* 只设定上边框, 其余同理 */

边框粗细

border-collapse:collapse;

collapse 单词是合并的意思border-collapse: collapse; 表示相邻边框合并在一起

注:边框会影响盒子的实际大小

内边距

padding 属性用于设置内边距,即边框与内容之间的距离

padding 属性(简写属性)可以有一到四个值。

当我们给盒子指定 padding 值之后,发生了 2 件事情:

内容和边框有了距离,添加了内边距。padding影响了盒子实际大小。 也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。

注:不定义盒子的宽度,加内边距不会撑大盒子

案例

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>新浪导航</title> <style type="text/css"> .nav { height: 41px; border-top: 3px solid #ff8500; border-bottom: 1px solid #edeef0; background-color: #fcfcfc; line-height: 41px; } .nav a { height: 41px; padding: 0 20px; font-size: 12px; color: #4c4c4c; text-decoration: none; display: inline-block; } .nav a:hover { background-color: #eee; color: #ff8500; } </style> </head> <body> <div class="nav"> <a href="#">新浪导航</a> <a href="#">手机新浪网</a> <a href="#">移动客户端</a> <a href="#">微博</a> <a href="#">我用户</a> </div> </body> </html>

外边距

控制盒子与盒子之间的距离

属性

典型应用

外边距使盒子水平居中

盒子必须指定宽度盒子左右外边距都设置为auto

div {

​ width: 960px;

​ margin: 0 auto;

}

常见的三种写法:

margin-left:auto;margin-right:auto;margin:auto;margin:0 auto;

注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可。

外边距合并

简单来说就是两个盒子嵌套,里面的盒子想与父盒子有一定的距离,从而产生的问题

清除内边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网 页元素的内外边

* { padding:0; /* 清除内边距 / margin:0; / 清除外边距 */ }

注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内 块元素就可以了

综合案例

圆角边框

在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 border-radius 属性用于设置元素的外边框圆角。

border-radius:length;

参数值可以为数值或百分比的形式如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为 50%该属性是一个简写属性,可以跟四个值,分别代表左上角、右上角、右下角、左下角分开写**:border-top-left-radius、border-top-right-radius、border-bottom-right-radius 和 border-bottom-left-radius**

盒子阴影

值描述h-shadow必需。水平阴影位置,x轴移动,有负值v-shadow必需。垂直阴影位置,y轴移动,有负值blur可选。模糊距离spread可选。阴影尺寸color可选。阴影的颜色。推荐RGB()inset可选,默认外部outset不允许写,内部阴影inset

注意:

默认的是外阴影(outset), 但是不可以写这个单词,否则造成阴影无效盒子阴影不占用空间,不会影响其他盒子排列

文字阴影

text-shadow: h-shadow v-shadow blur color;

值描述h-shadow必需。水平阴影位置,x轴移动,有负值v-shadow必需。垂直阴影位置,y轴移动,有负值blur可选。模糊距离color可选。阴影的颜色。推荐RGB()

浮动

浮动

选择器 { float: 属性值; }

属性值描述none元素不浮动left元素左浮动right元素有浮动

浮动特性

浮动元素会脱离标准流(脱标) 盒子符起来.原先的位置会被其他盒子占用 浮动的元素会一行内显示并且元素顶部对齐浮动的元素会具有行内块元素的特性. 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定浮动的盒子中间是没有缝隙的,是紧挨着一起的行内元素同理

案例

大盒子套小盒子,小盒子( li 和 div都行 )设置浮动,横向排列

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>浮动</title> </head> <style type="text/css"> * { margin: 0; padding: 0; } li { list-style: none; } .box { width: 1226px; height: 285px; margin: 0 auto; background-color: pink; } .box li { width: 296px; height: 285px; background-color: #333333; float: left; margin-right: 14px; } /* 权重 */ .box .last { margin-right: 0; } </style> <body> <ul class="box"> <li>1</li> <li>2</li> <li>3</li> <li class="last">4</li> </ul> </body> </html>

大盒子套两个中盒子,中盒子套多个小盒子,除大盒子不浮动,其他浮动,横向排列

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>浮动布局练习3</title> <style> .box { width: 1226px; height: 615px; background-color: pink; margin: 0 auto; } .left { float: left; width: 234px; height: 615px; background-color: purple; } .right { float: left; width: 992px; height: 615px; background-color: skyblue; } .right>div { float: left; width: 234px; height: 300px; background-color: pink; margin-left: 14px; margin-bottom: 14px; } </style> </head> <body> <div class="box"> <div class="left">左青龙</div> <div class="right"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> </div> </div> </body> </html>

常见的网页布局

清除浮动

页面布局的时候, 当子盒子太多, 无法定义手动定义父盒子的高度. 不给高度让子盒子把盒子撑开. 当子盒子浮动时, 不会撑开父盒子的高度,这时需要清除浮动

清除浮动本质就是清除浮动所造成的影响

选择器{ clear: 属性值; }

属性值描述left清除左侧浮动的影响right清除右侧浮动的影响both同时清除左右浮动的影响

清除浮动方法

1.额外标签法

在最后一个浮动标签后添加一个块级元素, 给其添加clear属性即可

2.父级添加overflow属性

给父级标签添加overflow属性, 将其属性值设置为hidden | auto | scroll

缺点: 无法显示溢出的部分

3.父级添加after伪元素

父级class名字添加clearfix

.clearfix:after { content: ""; display: block; height: 0; clear: both; visibility: hidden; } .clearfix { /* IE6, 7 专有*/ *zoom: 1; }
4.父级添加双伪元素
.clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } .clearfix { *zoon: 1; }
最新回复(0)