欢迎光临
我们一直在努力

从零吃透CSS(二):CSS页面布局全套实战

一、前言

想要实现卡片布局、导航栏、弹窗效果,布局知识是重中之重。本篇学习盒子模型、边距居中、浮动塌陷、定位、层级透明度这些开发高频知识点,也是面试常考的核心内容。

二、盒子模型、边框圆角、背景渐变与阴影

1、盒子模型

所有HTML元素都是一个盒子,由四部分组成:

·内容区 content

·内边距 padding

·边框 border

·外边距 margin

掌握盒子模型,就掌握了页面留白和尺寸控制的根本。

2、边框与圆角

-通过border设置边框粗细、颜色、样式

-通过border-radius实现圆角卡片(顺时针方向)、圆形头像效果

3、背景样式background

background用来给盒子设置背景颜色、背景图片、图片平铺、位置、大小。

① background-color:背景纯色

.box{
background-color: skyblue;
}

② background-image:设置背景图片

.box{
background-image: url("图片地址");
}

③ background-repeat:图片平铺方式

-repeat:默认,铺满整个盒子

-no-repeat:图片只显示一次(最常用)

-repeat-x:水平平铺

-repeat-y:垂直平铺

④ background-position:背景图位置

可以写方位词:center、left top;也可以写像素:20px 10px

background-position: center; /*图片居中*/

⑤ background-size:控制背景图片大小

-cover:图片铺满盒子,超出部分裁剪(做banner大图常用)

-contain:完整显示整张图片,不会裁剪

4、CSS渐变(不用图片,直接生成渐变背景)

渐变属于背景图片的一种,分为线性渐变、径向渐变

① 线性渐变 linear-gradient

从一个方向平滑过渡颜色

语法:linear-gradient(方向,颜色1,颜色2……)

/*从上到下,红色过渡到蓝色*/
.box{
background: linear-gradient(red, blue);
}
/*从左到右*/
background: linear-gradient(to right, pink, orange);
/*斜向渐变*/
background: linear-gradient(45deg, #fff, #ccc);

② 径向渐变 radial-gradient

从中心向外扩散的圆形渐变,适合做按钮、光斑效果

background: radial-gradient(red, yellow);

5、盒子阴影 box-shadow

作用:给盒子(卡片、按钮)添加投影,让页面更立体,不会占用页面空间

语法:

box-shadow: 水平偏倚 垂直偏移 模糊距离 阴影大小 颜色 内阴影

参数依次说明:

-水平偏移:正数向右,负数向左

-垂直偏移:正数向下,负数向上

-模糊值:越大阴影越柔和,不能是负数

-阴影大小(可选):扩大/缩小阴影

-阴影颜色

-insert(可选):加上就是内阴影,不加默认外阴影

三、内外边距、div居中、display与浮动

1、内外边距padding和margin

一个盒子由内容、内边距、边框、外边距组成

① padding 内边距

/*四个方向统一*/
div{
padding: 10px;
}
/*上 右 下 左 (顺时针)*/
padding: 10px 20px 30px 40px;

特点:写背景时,padding区域会带上背景

② margin 外边距

margin: 20px;

常见问题:

·垂直方向margin会合并塌陷,两个盒子上下间距取最大值,不是相加

·margin:0 auto; 专门用来实现块级盒子水平居中

区分:padding自己内部留白,margin和别人拉开距离

2、元素居中

① 文字/行内元素水平居中

text-align: center;

作用在父标签上,文字、图片、行内块居中

② 块级盒子整体居中(盒子居中)

div{
width:300px;
margin:0 auto;
}

注意❗必须设置宽度才生效

③ 垂直居中(简单了解)

单行文字:line-height=盒子高度

3、display属性

HTML标签默认分为两种:

-块级元素div p h1:独占一行,可以设置宽高

-行内元素span a:并排显示,宽高设置无效

display用来切换类型:

① display:block 转为块级,独占一行,可以设置宽高

② display:inline 转为行内,不能设置宽高

③ display:inline-block 行内块:并排显示+可以设置宽高(做按钮、导航很常用)

④ display:none 隐藏元素,位置直接消失

4、浮动

作用:让块级元素横向并排排列,原本div都是独占一行,浮动之后可以实现多列布局、横向导航栏。

float:left; /*向左靠齐排列*/
float:right; /*向右靠齐排列*/

浮动特点:

① 元素脱离标准文档流,原本的位置空出来,后面的元素会往上挤

② 浮动只会在父盒子内部横向排列,不会跑到父盒子外面

③ 经典问题:高度塌陷

如果父盒子不写高度,子元素全部浮动后,父盒子高度变为0,布局乱掉,需要清除浮动

四、overflow溢出处理、清楚浮动塌陷

1、overflow属性

当盒子里面内容的宽高,大于盒子本身宽高,就会发生内容溢出,overflow用来控制溢出内容怎么显示

4个常用值:

① visible 默认值:溢出内容直接显示在盒子外面

② hidden:溢出部分直接裁剪隐藏,看不见

③ scroll:永远显示滚动条,内容可滚动查看

④ auto:内容溢出才出现滚动条,不溢出就没有滚动条

2、浮动塌陷(高度塌陷)

父盒子没有设置固定高度,子元素全部设置了float浮动。

浮动元素脱离标准文档流,父盒子检测不到子元素高度,父盒子高度变为0,后面的布局全部乱掉,这就是浮动塌陷。

四种清除浮动塌陷的方案:

① 给父盒子设置固定高度

简单粗暴,但不适合高度适应的页面,实际开发很少用

.father{
height:100px;
}

② 父元素开启BFC

给父盒子加上overflow:hidden;触发BFC,父盒子可以识别浮动子元素高度

.father{
border:2px red solid;
overflow:hidden;
}

缺点:盒子内部如果有需要溢出显示的内容,会被裁剪掉

③ 伪元素清除浮动(推荐)

给父类加一个类名例如clearfix,写公共css,不会裁剪内容

.clearfix::after{
content:"";
display:block;
clear:both: /*清除左右两侧浮动影响*/
visibility:hidden;
height:0;
}

④ 额外空div标签

在父盒子最后,新增一个空div,设置clear:both;

<div class="father">
<div class="son"></div>
<div class="son"></div>
<div style="clear:both;"></div>
</div>

clear属性简单说明:

-clear:both:清除左右两边浮动带来的影响

-clear:left:清除左边浮动

-clear:right:清除右边浮动

五、相对/绝对/固定定位与z-index层级透明度

1、相对定位

position:relative;

不脱离标准流,相对于自己原本位置偏移,常用于微调元素位置

2、绝对定位

position:absolute;

脱离标准流,相对于最近的定位父级,常用于:弹窗、角标、悬浮小图标

3、固定定位

position:fixed

相对于浏览器窗口固定,页面滚动位置不变,常用于固定顶部导航、返回顶部按钮

4、z-index层级与透明度

多个定位元素重叠时,通过z-index控制上下层级

通过opacity设置元素透明效果,实现遮罩层、淡入效果

六、结语

至此整套CSS基础内容全部学习完毕。我们从简单的文字美化,一步步掌握了网页主流布局方案,现在已经可以独立编写静态页面,后续可以结合HTML表单完成完整的网页实战项目。

赞(0)
未经允许不得转载:171主机测评 » 从零吃透CSS(二):CSS页面布局全套实战
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址