赞
踩
渲染引擎:浏览器中,专门用来对代码进行解析渲染的部分。
注意:渲染引擎不同,导致解析相同的代码,速度,效果也不同。
而且由于渲染引擎的不同,导致各个浏览器渲染相同的代码时会有差异。
HTML 标签对大小写不敏感
:< P > 等同于 < p > 。许多网站都使用大写的 HTML 标签。
W3School 使用的是小写标签
Web标准,推荐开发者使用小写,来让浏览器解析统一。
构成 | 构成 | 语言 |
---|---|---|
结构 | 结构 | HTML(页面元素) |
表现 | 表现 | CSS(页面样式) |
行为 | 行为 | JavaScript(页面交互的动态效果) |
父子关系
(嵌套关系),兄弟关系
(并列关系)h$*6
<h1>a</p1>
<h2>a</p2>
<h3>a</p3>
<h4>a</p4>
<h5>a</p5>
<h6>a</p6>
加粗
,文字都有变大。独占一行
<p>这是一段话</p>
独占一行
。< br >
强制换行
< hr>
标签 | 说明 |
---|---|
b | 加粗 |
u | 下划线 |
i | 倾斜 |
s | 删除 |
标签 | 说明 |
---|---|
strong | 加粗 |
ins | 下划线 |
em | 倾斜 |
dei | 删除 |
场景:在需要创建链接的地方
代码:
<a href="http://liyublogs.top/">休闲玩家MIck</a>
属性值:目标网页的打开形式
取值 | 效果 |
---|---|
_self | 默认值,在当前窗口中进行跳转(覆盖原网页) |
_blank | 在新窗口中跳转(保留原网页) |
场景:在页面中显示图片
代码:
<img src="图片路径" alt="替换文本" title="鼠标移上去显示的文字" width="18px" height="18px">
特点:单标签,img标签需要展示对应的效果,需要借助标签的属性进行设置。
属性:
属性 | 说明 |
---|---|
src | 指定需要展示图片的路径 |
alt | 替换文本,当图片加载失败时,才显示的2文字 |
title | 提示文本,当鼠标悬停时,才显示文字 |
width | 图片的宽度 |
height | 图片的高度 |
注意:
设置width和height中的任何一个,另一个会等比例缩放。
同时设置width和hieght,设置不当,图片会变形。
场景:在网页中以行+列的单元格的方式整齐展示的数据,如:学生成绩表
基本标签:
标签名 | 说明 |
---|---|
table | 表格整体 |
tr | 表格每行,用来包裹td |
td | 表格单元格,用于包裹内容 |
thead | 表格的标题,文字会加粗(表格头部) |
tbody | 表格主体, 用来存放表格内容(表格主体) |
tfoot | 表格底部 |
注意点:
- 标签的嵌套关系: table > thead/tbody > tr > td
场景:设置表格的基本展示效果
常见的相关属性:
属性名 | 属性值 | 效果 |
---|---|---|
border | 数字 | 边框宽度 |
width | 数字 | 表格宽度 |
height | 数字 | 表格高度 |
实际开发中,针对样式效果推荐使用CSS设置
场景:在表格中表示整体大标题和一列小标题
其他标签:
标签名 | 名称 | 说明 |
---|---|---|
caption | 表格大标题 | 表示表格整体大标题,默认在表格整体顶部居中位置显示 |
th | 表格单元格 | 表示一列小标题,通常用于表格第一行,默认内部文字加粗并居中显示 |
注意点:
- caption标签书写在table标签内部
- th标签书写在tr标签内部,用来替换td标签
合并单元格步骤
属性名 | 属性值 | 说明 |
---|---|---|
rowspan | 合并单元格的个数 | 跨行合并,将多行的单元格垂直合并 |
colsapn | 合并单元格的个数 | 跨列合并,将多列的单元格水平合并 |
注意点:
- 只有同一个结构标签中的单元格才能合并,
不能跨结构标签合并
(不能跨:thead,tbody,tfoot)
参考代码:
<style> h1 { text-align: center; } </style> <body> <h1> 学生成绩单</h1> <div class="class"> <table align="center" border="1" cellpadding="20" cellspacing="0"> <thead> <tr> <th>性名</th> <th>成绩</th> <th>评语</th> </tr> </thead> <tbody> <tr> <td>小哥哥</td> <td rowspan="2">100</td> <td>小哥哥真帅气</td> </tr> <tr> <td>小姐姐</td> <!-- <td>100</td> --> <td>小哥哥真漂亮</td> </tr> <tr> <td>总结</td> <td colspan="2">郎才女貌</td> </tr> </tbody> </table> </div> </body>
场景:在页面中插入音频
代码:
<audio src="../Martin Ermen - River Flows In You.mp3" controls loop></audio>
常见属性:
属性名 | 功能 |
---|---|
src | 音频路径 |
controls | 显示播放控件 |
sutoplay | 自动播放(部分浏览器不支持) |
loop | 循环播放 |
注意点:
- 支持格式:
Mp3
,Wav,Ogg
场景:在页面中加入视频
代码:
<video src="../1.mp4" controls></video>
常见属性:
属性名 | 功能 |
---|---|
src | 视频路径 |
controls | 显示播放的控件 |
autoplay | 自动播放(谷歌浏览器中需配合muted实现静音播放) |
loop | 循环播放 |
注意点:
- 视频标签目前支持三种格式:
MP4
,WebM,Ogg
分类:有序列表
,无序列表
,自定义列表
场景:在页面中表示一组无顺序之分的列表,如:新闻列表
标签组成:
标签名 | 说明 |
---|---|
ul | 表示无序列表的整体,用于包裹li标签 |
li | 表示无序列表的每一项,用于包含每一行的内容 |
显示特长:
注意点:
- ul标签中,只允许包含li标签
- l标签可以包含任意元素
场景:在网页中表示一组有顺序之分的列表,如排行榜。
标签组成:
标签名 | 说明 |
---|---|
ol | 表示有序列表的整体,用于概括li标签 |
li | 表示有序列表的每一项,用于包含每一行的内容 |
显示特点:
注意:
- ol标签只允许包含li标签
- li标签可以包含任何内容
场景:在网页底部导航中通常会有自定义列表实现。
标签组成:
标签名 | 说明 |
---|---|
ol | 表示自定义列表的整体,用于包裹dt/dd标签 |
dt | 表示自定义列表的主题 |
dd | 表示自定义列表针对主题的每一项内容 |
显示特点:
注意点:
dl
标签中中允许包含dt/dd标签dt/dd
标签可以包含任何内容
场景:在网页·中显示收集用户信息的表单效果,如登陆页,注册页
标签名:input
type属性值
的不同,展示不同的效果type的属性值:
标签名 | type属性值 | 说明 |
---|---|---|
input | text | 文本框,用来输入单行文本 |
input | password | 密码框,用于输入文本 |
input | radio | 单选框,用于多选一 |
input | checkbox | 多选框,用于多选多 |
input | file | 文件选择,用于之后上传文件 |
input | submit | 提交按钮,用于提交 |
input | reset | 重置按钮 |
input | button | 普通按钮,默认无功能,之后配合Js添加功能 |
场景:在输入框中显示输入单行文本
的表单控件
属性名 | 说明 |
---|---|
placeholdre | 占位符,提示用户输入内容的文本 |
场景:网页中显示多选一的单选表单控件
type属性值:radio
常用属性:
属性名 | 说明 |
---|---|
name | 分组,有相同name属性的单选框为一组,一组中同时只能有一个被选中 |
checked | 默认选中 |
<div>
性别:
<input type="radio" value="男" name="gender" id="nan" checked> <label for="nan">男</label>
<input type="radio" value="女" name="gender" id="nv"> <label for="nv">女</label>
</div>
注意:
- name属性对于单选框有分组功能
- 有相同的name属性值的单选框为一组,一组中只能同时有一个被选中
场景:常用于绑定内容于表单标签
的关系
标签名:label
使用方法一:
使用方法二:
<input type="radio" value="男" name="gender" id="nan" checked>
<label for="nan">男</label>
<input type="radio" value="女" name="gender" id="nv">
<label for="nv">女</label>
注意:
在
input
标签中创建id属性
,之后再给文本套一个lable标签
,这个标签里面的for属性要和id属性的值相同
.
场景·:在网页中显示文件选择的表单控件
type属性值:file
常用属性:
属性名 | 说明 |
---|---|
multiple | 多文件选择 |
<input type="file">选择文件
场景:在网页中显示不同功能按钮
表单控件
type属性值:
标签名 | type属性值 | 说明 |
---|---|---|
input | submit | 提交按钮,点击之后提交数据给后端服务器 |
input | reset | 重置按钮,点击之后恢复表单默认值 |
input | button | 普通按钮,默认无功能,之后配合js添加功能 |
<div>
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="普通按钮">
</div>
注意:
- 如果要实现以上按钮的功能,需要配合
form
标签使用- form使用方法:用form标签把表单标签一起包裹起来即可
昵称:<input type="text" value="帅哥">
后端:帅哥
姓名:<input type="text" value="帅哥" name="nickname">
后端:nickname = 帅哥
标签名:textarea
常见属性:
属性 | 说明 |
---|---|
cols | 规定了文本域可见宽度 |
rows | 规定了文本域可见行数 |
留言板:<textarea name="" style="resize:none" id="" cols="30" rows="10"></textarea>
注意:标签中的css属性是让
文本框宽高不能改动
,默认值是both
,宽高都可以调整
注意:
div块标签
,可以设置宽高
span是行内标签
,他由内容撑开
标签名 | 语义 |
---|---|
header | 网页头部 |
nav | 网页导航 |
footer | 网页底部 |
aside | 网页侧边栏 |
section | 网页区块 |
article | 网页文章 |
以上标签
显示特点和div一致
,但是比idv多了不同的语义
Html中会有空格合并的现象
CSS: 层叠样式表(Cascading style sheets)
< style>< /style>
中映入方式 | 书写位置 | 作用范围 | 使用场景 |
---|---|---|---|
内嵌式 | css写在style标签中 | 当前页面 | 小案例 |
外联式 | css写在单独的css文件 ,通过Link标签引入 | 多个页面 | 项目中 |
行内式 | css写在标签的style属性中 | 当前标签(权重最高 ) | 配合js使用 |
<!-- 内嵌式 -->
<style>
div{
width: 200px;
height: 200px;
background-color: red;
}
</style>
<!-- 外联式 内容与表现分离-->
<link rel="stylesheet" href="./外联式.css">
<!-- 行内样式 -->
<div style="width: 300px;height: 300px;background-color: yellow;"></div>
优先级:
行内 > 内嵌 > 外联
外联和内嵌:谁在后面,谁的优先级高
css解析的时候,后写的代码会覆盖前面的代码。
作用:快速开发
p>ul.myul>li#one <p> <ul class="myul"> <li id="one">段落标签</li> </ul> </p> a.class <a href="" class="class"></a> li.name$*5 <li class="name1"></li> <li class="name2"></li> <li class="name3"></li> <li class="name4"></li> <li class="name5"></li> li>a <li><a href=""></a></li> li>a+p*5 <li> <a href=""></a> <p></p> <p></p> <p></p> <p></p> <p></p> </li> li#id+p.name <li id="id"></li> <p class="name"></p> ul>li*10{$$} <ul> <li>01</li> <li>02</li> <li>03</li> <li>04</li> <li>05</li> <li>06</li> <li>07</li> <li>08</li> <li>09</li> <li>10</li> </ul>
注意:
$
可以设置自增
可以改变文本字体粗细
属性值:方法一:关键字(norma(默认值),bold(粗体)),方法二:相对粗细法(bolder,lighter),方法三:数字法
<style> h2 { font-family: '微软雅黑'; font-size: 18px; /* 文子变细 */ font-weight: 400; /* font-style: italic; */ } p { /* font-family: 'Microsoft YaHei', Arial, Helvetica, sans-serif; */ font-family: 'Times New Roman', Times, serif; } em { /* 倾斜的字体不倾斜 */ font-style: normal; }* .bold { /* font-weight: bold; */ /* 700 后面不跟单位 等价bold 都是加粗 */ font-weight: 700; } </style>
<style>
p {
font-size: 24px;
/* 文本的第一行首行缩进 多少距离 */
/* text-indent: 20px; */
/* 如果此时写了2em 则是缩进当前元素 2个文字大小的距离 */
text-indent: 2em;
line-height: 25px;
}
div {
line-height: 26px;
}
</style>
使用letter-spacing属性设置字母间距
.text {
display: inline-block;
position: relative;
z-index: 1;
padding: 50px 70px;
background-color: rgba(124, 189, 174, 0.65);
color: rgba(0, 0, 0, 0.85);
text-align: center;
letter-spacing: 6px;
text-align
left左
,center中
,right右
注意:
- 如果想让子标签居中,那么你就需要给父标签使用。
text-align
只针对文本
和img属性有效
text-decoration
underline(下划线)
,line-through(删除线)
line-height
数字+px
,倍数:当前标签font-size的倍数
注意:一般给容器设置行高用来
保证该容器内的文字垂直居中
。
标签
{ css } <style>
p {
color: red;
}
</style>
选择的是一类标签
.类名
{ css } .myul {
color: blue;
}
注意:
- 所有的标签上都有class属性,
- 类名可以由数字,字母,下划线,中划线 组成,但不能以数字和中划线开头
- 一个标签可以同时有多个类名,类名之间用空格隔开
- 类名可以重复,一个类选择器可以同时选择多个标签。
#id选择器
{ css }#ont {
color: #000;
}
注意:
- 所有的标签都有id属性
- id属性类似身份证号码,
在一个页面中是唯一的,不可重复的。
*
{ css }* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
<style> /* 我想要把ol里面的小li选出来改为pink */ ol li { color: pink; } /* 中国 山东 济南 蓝翔 */ ol li a { color: red; } .nav li a { color: yellow; } </style>
>
>
选择器2{css} <style>
.nav>a {
color: red;
}
,
,
选择器2{css}<style> /* 要求1: 请把熊大和熊二改为粉色 */ /* div, p { color: pink; } */ /* 要求2: 请把熊大和熊二改为粉色 还有 小猪一家改为粉色 */ div, p, .pig li { color: pink; } /* 约定的语法规范,我们并集选择器喜欢竖着写 */ /* 一定要注意,最后一个选择器 不需要加逗号 */ </style>
.
.
选择器2{css}<style> /* p { color: red; } */ /* .box { color: red; } */ /* 交集选择器 */ p.box { color: red; } a.class{ color:red; } </style> <a href="" class="class"></a>
注意:
- 交集选择器中的选择器之间是紧挨着的,没有东西分隔
- 交集选择器中如果有标签选择器,标签选择器必须写到最前面
:hover
修饰类
)<style> body { color: red; } a { color: #333; text-decoration: none; } a:hover { color: #369; text-decoration: underline; } </style>
+
div + p {
color:blue;
}
选择匹配F的元素,且该元素为所匹配E元素后面相邻的位置。
~
div ~ p {
color:blue;
}
选中后面的兄弟(一群)
:focus
input:focus{
color:red
}
外边线,外轮廓:
outline:none
;表单控件获取焦点时,默认会显示外部轮廓线
场景:通过HTML属性来选择元素,常用来选择input标签
HTML属性:class = "one"
,其中 class
是属性名,one
是属性值
语法:
^
:以开头的
$
:以结尾的
*=
:中间包含的
background-repeat(bgr)
no-repeat(不平铺)
,repeat-x(顺着x平铺)
,repeat-y(顺者y平铺)
<style>
div {
width: 800px;
height: 800px;
background-color: rgb(26, 165, 165);
margin: 0 auto;
background-image: url(./back.jpg);
background-repeat: repeat-x;
}
</style>
background-position(bgp)
left
,center
,right
top
,center
,bottom
原点(0,0)盒子左上角
取值 | 效果 |
---|---|
repeat | (默认值)水平和垂直方向都平铺 |
no-repeat | 不平铺 |
repeat-x | 沿着水平方向(x轴)平铺 |
repeat-y | 沿着垂直方向(y轴)平铺 |
<style>
div {
width: 800px;
height: 800px;
background-color: rgb(26, 165, 165);
margin: 0 auto;
background-image: url(./back.jpg);
background-repeat: no-repeat;
/* background-position: center center; */
background-position: center;
/* 背景中的复合属性写法 */
}
</style>
background(bg)
background:color image repeat positior
英文单词可以跌倒顺序
,如果都用像素就不可以跌倒顺序
<style>
div {
width: 800px;
height: 800px;
/* background: pink url(./back.jpg) no-repeat center bottom; */
/* 测试背景是数值 水平50px 垂直100px*/
background: pink url(./back.jpg) no-repeat 100px 50px;
}
</style>
方位名词取值和坐标取值可以混合使用,
第一个取值表示水平,第二个取值表示垂直
。
background-size:宽度 高度
取值 | 场景 |
---|---|
数字+px | 简单方便实用 |
百分比 | 相对于当前盒子自身的宽高比 |
contain | 包含,将背景图片等比例缩放,知道不会超出盒子的最大 |
cover | 覆盖,将背景图片等比例缩放,直到刚好填满整个盒子没有空白 |
background-position:x y;
background-position: right 0;
(适合精灵图左右对称的情况,后面双开门案例会用到) .box::after {
background-position: right 0;
}
background: color url() repeat attachment position; 颜色 地址 平铺效果 滚动 位置
注意点:
backgruond-size
和background
连写同时设置时,需要注意覆盖问题
解决:
- 要么单独的样式写连写的下面。
- 要么单独的样式写在连写的里面。
本质上:
img是html标签,占位,backgrand-img是css样式,不占位
作用效果上:
img是document对象可以操作(比如:从document对象中删除),backgroud-imge是不能操作的
img标签点击会选中或放大图片,background-image则不会
加载渲染区别
背景图片会等到html结构加载完成后,才开始加载
,img标签是网页结构的一部分,会在html结构加载的时候加载
,在网页加载的过程中,背景图片会等到结构加载完成(网页的内容全部显示后)才开始加载,而img标签是网页(内容)的一部分,会在html结构加载的过程中加载,所以如果通过img标签引入一个大图片,那么可能会影响网页的加载,反而通过背景引入的图片,它会在最后进行加载,不会影响整个网页的加载。
backdrop-filter CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。因为它适用于元素背后的所有元素,为了看到效果,必须使元素或其背景至少部分透明。
backdrop-filter: blur(6px);
宽度默认是父元素宽度,高度默认由内容撑开
可以设置宽高
div,p,h系列,ul.li,di,dt,dd,form,header
<style>
div {
width: 300px;
height: 300px;
background-color: pink;
}
</style>
宽度个高度默认由内容撑开
不可以设置宽高
a,span,b,u,i,s,strong,ins.em,del...
<style>
span {
width: 300px;
height: 300px;
background-color: pink;
}
</style>
可以设置宽高
input,textarea,button,select.....
<style>
img {
width: 100px;
height: 100px;
}
</style>
display:block(块级)
/display:inline-biock(行内块)
/display:inline(行内)
文字控制属性
都可以继承(子承父业)可以继承的常见属性
- color
- font-style,font-weight,font-size,font-family
- text-indent,text-align
- line-height
- …
继承性失效的特殊情况
相同
的样式,此时样式会层叠覆盖
,最终写在最后的样式会生效
不同
的样式,此时样式会层叠叠加
,会共同作用
在标签上选择器优先级相同
时,才能通过层叠性判断结果
。继承
< 通配符选择器
< 标签选择器
< 类选择器
< id选择器
< 行内样式
< !important
注意:
!important
写在属性的后面,分号的前面!- 它不能提高继承的优先级,
只要是继承优先级最低!
- 实际开发中不建议使用!important
(谁更精准选到标签,谁的优先级高,谁的范围越广,谁的优先级越低)
0 行内样式个数
,0 id选择器个数
,0 类选择器个数
,0 标签选择器个数
)内容区域( content)
,内边距区域(padding
),边框区域(border)
,外边距区域(margin)
构成,这就是盒子模型。不分先后顺序
)solid 实线
,dashed虚线
,dotted点线
边框消失
:设置border-方位词:none
/ 或者 0px
快捷键:bd+Tab
总结:多值写法,永远都是从上面顺时针转一圈,如果没有就看对面
场景:盒子的大小会因为padding和margin等一系列设置,导致不准确
box-sixing:border-box;
即可默认值:
box-sixing:border-content
盒子以外,盒子与盒子之间的距离
设置方式和padding一样
位置在最外边
最大值
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
}
.one {
margin-bottom: 60px;
}
.two {
margin-top: 50px;
}
</style>
.father { width: 300px; height: 300px; background-color: pink; /* 设计稿没有border就不能用 */ /* border: 1px solid #000; */ /* 最完美方法 */ /* overflow: hidden; */ } .son { width: 100px; height: 100px; background-color: skyblue; margin-top: 70px; }
推荐方法:
- 给父元素设置
overflow:hidden
- 给父元素设置
padding-top
margin
或者padding
改变行内标签的垂直位置,无法生效(不占位置)
注意:行内元素的padding不占位置。
.fhre span {
background-color: skyblue;
border: 1px solid red;
/* 有效 */
padding-left: 30px;
/* 无效 */
padding-top: 40px;
/* 无效 */
margin-top: 30px;
/* 有效 */
margin-left: 40px;
}
* {
margin:0;
padding:0;
}
margin:0 auto;
list-style:none
继承性的应用,可以给ul添加此属性,这样所有的li就不用单独设置了。
目标:能够使用结构伪类选择器在html中定位
作用与优势:
选择器:
li:first - child
(选中第一个)li:last - child
(选中最后一个)li:nth - child(x)
(任意一个)li:nth - last - child(x)
(倒数第xx个)li:not(:nth - child(1))
(除了第一个孩子,选出其他)
/* 选中第一个 */ /* li:first-child { background-color: green; } */ /* 选中最后一个 */ li:last-child { background-color: pink; } /* 任意一个 */ li:nth-child(4) { background-color: blue; } /* 倒数第xx个 */ li:nth-last-child(1) { background-color: red; } /* 去除列表前的小点点 */ ul { list-style: none; } //loader下的非第一个div(其他三个div,楼梯) less语法 &:not(:nth-child(1)) { }
n
的注意点
n为:0,1,2,3…
通过n可以组成常见公式
功能 | 公式 |
---|---|
偶数 | 2n,even |
奇数 | 2n+1,2n-1,odd |
找到前5个 | -n+5 |
找到从第5个往后 | n+5 |
li:nth-child(2n+1) {
background-color: pink;
color: rgb(110, 13, 155);
}
li:nth-child(-n+3) {
background-color: rgb(52, 23, 179);
color: rgb(155, 13, 13);
}
li:nth-child(4n) {
background-color: rgb(201, 204, 16);
color: rgb(8, 1, 1);
}
伪元素:一般页面中的非主体内容可以使用伪元素(装饰性
的)
伪元素 | 作用 |
---|---|
::before | 在父元素前添加伪元素 |
::after | 在父元素后添加伪元素 |
- 必须设置content才能生效
伪元素默认是行内元素
- 伪元素是标签,可以设置颜色,背景等。。。
作用:网页布局。
场景:可以让块级元素横排。
属性:
属性名 | 效果 |
---|---|
left | 左浮动 |
right | 右浮动 |
<style> img { width: 100px; float: left; } div { width: 100px; height: 100px; } .one { background-color: pink; float: right; } .two { background-color: skyblue; /* float: right; */ float: right; } /* 完美的在一行排 */ </style>
浮动找浮动
,下一个浮动元素会在上一个浮动元素后面左右浮动可以设置宽高
居中
和margin:0 auto
,text-align:center
无效<style> /*浮动: 一行可以显示多个,可以设置宽高,具备行内块的特点 */ .one { width: 100px; height: 100px; background-color: pink; float: left; margin-top: 50px; } .two { width: 200px; height: 200px; background-color: skyblue; float: left; /* 因为浮动,不能生效,无法居中 */ margin: 0 auto; } .three { width: 300px; height: 300px; background-color: red; } </style>
<style> * { margin: 0; padding: 0; } .top { height: 40px; background-color: #333; } .header { margin: 0 auto; width: 1220px; height: 100px; background-color: #ffc0cb; } .content { margin: 0 auto; width: 1220px; height: 460px; background-color: rgb(38, 173, 173); } .content .left { float: left; width: 234px; height: 460px; background-color: #ffa500; } .content .right { float: right; width: 986px; height: 460px; background-color: #87cdeb; } </style> <body> <div class="top"></div> <div class="header">头部</div> <div class="content"> <div class="left">左</div> <div class="right">右</div> </div> </body>
<style> .top { margin: 0 auto; width: 1000px; height: 300px;(注意父级加高) background-color: pink; } .bottom { height: 100px; background-color: green; } .left { float: left; width: 200px; height: 300px; background-color: #ccc; } .right { float: right; width: 790px; height: 300px; background-color: skyblue; } </style>
额外标注法
:(特点:缺点:会在页面中添加额外的标签,会让html结构变复杂)
clear:both
<style> .top { margin: 0 auto; width: 1000px; height: 300px; background-color: pink; } .bottom { height: 100px; background-color: green; } .left { float: left; width: 200px; height: 300px; background-color: #ccc; } .right { float: right; width: 790px; height: 300px; background-color: skyblue; } .clearfix { <!--清除左右两侧浮动影响--> clear: both; } </style> <body> <!-- 父子级标签,父级没有高度,后面的标准流盒子会受影响,显示到上面的位置 --> <div class="top"> <div class="left"></div> <div class="right"></div> <div class="clearfix"></div> </div> <div class="bottom"></div> </body>
.clearfix::before {
content: '';
/* 伪元素添加的是行内的,我们需要的是块级的 */
display: block;
clear: both;
}
.clearfix::before {
content: '';
/* 伪元素添加的是行内的,我们需要的是块级的 */
display: block;
clear: both;
height: 0;
visibility: hidden;
}
/* 清除浮动 */
/* .clearfix::before 用来解决外边距塌陷 */
.clearfix::before,
.clearfix::after {
content: '';
display: table;
}
/* 真正清除浮动的标签 */
.clearfix::after {
clear: both;
}
.top {
margin: 0 auto;
width: 1000px;
height: 300px;
background-color: pink;
overflow: hidden;
}
<link rel="stylesheet" href="./css/index.css">
应用场景
当出现盒子模型相互层叠
时,就需要使用定位。
属性名:position
(只加position位置不会改变)
如果left和right都有,以left为准,top和bottmo都有,以top为准
常见属性值:
定位方式 | 属性值 |
---|---|
静态位置 | static(就是标准流) |
相对位置 | relative |
绝对定位 | absolute |
固定定位 | fixed |
方向 | 属性名 | 属性值 | 含义 |
---|---|---|---|
水平 | left | 数字+px | 距离左边的距离 |
水平 | right | 数字+px | 距离右边的距离 |
垂直 | top | 数字+px | 距离上边的距离 |
垂直 | bottom | 数字+px | 距离下边的距离 |
使用场景:当元素出现层叠
的情况
绝对定位: 先找已经定位的父级, 如果有这样的父级就以这个父级为参照物进行定位;有父级, 但父级没有定位, 以浏览器窗口为参照为进行定位
实现(子绝父相
):
父:添加定位属性:相对定位
子:子添加定位属性:绝对定位
<style> /* css书写: 1. 定位 / 浮动 / display ; 2. 盒子模型; 3. 文字属性 */ .box { /* 绝对定位: 先找已经定位的父级, 如果有这样的父级就以这个父级为参照物进行定位; 有父级, 但父级没有定位, 以浏览器窗口为参照为进行定位 */ position: absolute; /* left: 50px; */ left: 0; top: 0; /* 1. 脱标, 不占位 2. 改变标签的显示模式特点: 具体行内块特点(在一行共存, 宽高生效) */ width: 200px; height: 200px; background-color: pink; } </style> <style> .father { position: relative; width: 400px; height: 400px; background-color: pink; } .son { /* 相对, 绝对 */ /* 父级相对定位; 子级绝对定位 -- 子绝父相 */(广义的父级) /* position: relative; */ /* position: absolute; */ /* right: 100px; */ width: 300px; height: 300px; background-color: skyblue; } .sun { position: absolute; /* left: 20px; top: 30px; */ right: 20px; bottom: 50px; width: 200px; height: 200px; background-color: green; } /* 绝对定位查找父级的方式: 就近找定位的父级, 如果逐层查找不到这样的父级, 就以浏览器窗口为参照进行定位 */ </style>
子绝父相
先让子盒子往右移动自己的一半
再让盒子往左移动自己的一半
普通做法:margin-left:负的盒子宽度的一半
缺点:滋贺子宽度变化后需要重新更改代码
优化做法:transform:translateX( -50%)
优点:表示沿着x轴负方向(往左)始终移动自己宽度的一半,子盒子宽度变化后不需要更改代码。
<style> .box { position: absolute; width: 300px; height: 500px; background-color: pink; } .son { position: relative; width: 80px; height: 40px; top: 50%; background-color: red; /* 使用的是第二种方式 */ transform: translateY(-50%); } </style> <body style="height: 3000px;"> <div class="box"> <div class="son"></div> </div> </body>
position:fixed
不占位置->已经脱标
<style>
.box {
/* 脱标,不占位置,具备行内块特点 */
/* 改变位置参考浏览器窗口 */
width: 50px;
height: 50px;
background-color: skyblue;
position: fixed;
top: 50px;
right: 50px;
}
</style>
<style> div { width: 200px; height: 200px; } .one { position: absolute; background-color: pink; /* 在第1层 */ z-index: 1; left: 20px; top: 50px; } .two { position: absolute; left: 50px; top: 100px; background-color: skyblue; } /* 如果是默认情况下,后来者居上 */ /* z-index:整数,数值越大,显示行数越靠上,默认值是0,配和定位才能生效 */ </style>
定位总结:
- 定位会脱标,层级是最高的。
标准流 < 浮动 < 定位
- 可以使用
z-index
调整元素层级。
浮动
,标准流
,定位
属性值 | 效果 |
---|---|
baseline | 默认基线对齐 |
top | 顶部对齐 |
middle | 中部对齐 |
bottom | 底部对齐 |
.son img {
width: 300px;
/* 浏览器吧行内和行内块标签当作文字处理,默认基线对齐 */
/* vertical-align: middle; */
display: block
/*(两种解决办法都可以)*/
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。