一、浮动float
- 让原来的元素,可以脱离正常的文档流,实现左右排列,不设置宽度就是最小宽度。
- float 其实是类似 iOS 中的 collectionView 或者说 iOS 的collectionView 就是借鉴 float 创建的。原理可以这样理解,一个大块内包含多个小块,多个小块可以按照流水布局。
- 三个取值:
- none:设置对象不浮动
- left:设置对象浮在左边
- 代码:
<!DOCTYPE html>
<html>
<head>
<title>神奇的float</title>
<meta charset="UTF-8">
<style type="text/css">
body {
margin: 0;
}
.container {
border: 1px solid blue;
height: 300px;
width: 250px;
}
div {
height: 100px;
float: left;
}
/*如果块级元素不设置宽,默认会充满这行,但是会默认有一个margin(相对的距离),可以将body的margin设为0*/
.first {
background-color: red;
}
.second {
background-color: blueviolet;
}
.third {
background-color: orange;
}
.n {
background-color: yellow;
}
</style>
</head>
<body>
<div class="container">
<div class="first">
第一个div
</div>
<div class="second">
第二个div
</div>
<div class="third">
第三个div
</div>
<div class="n">
第四个div
</div>
</div>
</body>
</html>
* 效果图(外部为蓝色边框)
- right:设置对象浮在右边
* 代码
<!DOCTYPE html>
<html>
<head>
<title>神奇的float</title>
<meta charset="UTF-8">
<style type="text/css">
body {
margin: 0;
}
.container {
border: 1px solid blue;
height: 300px;
width: 250px;
}
div {
height: 100px;
float: right;
}
/*如果块级元素不设置宽,默认会充满这行,但是会默认有一个margin(相对的距离),可以将body的margin设为0*/
.first {
background-color: red;
}
.second {
background-color: blueviolet;
}
.third {
background-color: orange;
}
.n {
background-color: yellow;
}
</style>
</head>
<body>
<div class="container">
<div class="first">
第一个div
</div>
<div class="second">
第二个div
</div>
<div class="third">
第三个div
</div>
<div class="n">
第四个div
</div>
</div>
</body>
</html>
* 效果图
- 为什么说是流水布局呢?
-
如果我们不指定外部承载多个 div 的容器的宽度,那么容器会自动给一个合适的宽度,像这样
- 如果我们给外部的容器宽度设置了一个小于4个div宽度的合,那么布局就会按倒序向下排列,这个过程也称为流水。
-
二、定位position
- relative
- 官方:即使偏移,位置还在。实质就是靠近最近的元素进行偏移,不分定位。
- 解释:可以理解为让自身元素的原点(0,0)进行偏移(左上),相对于自己移动。
- absolute
- 官方:偏移了,位置就没了。靠最近的元素是 relative/absolute 定位进行偏移。
- 解释:absolute 进行偏移的时候默认先去寻找外面position属性设为 absolute 或者 relative 的元素,如果有相对 它进行偏移,如果没有相对于浏览器左上角(0,0)进行偏移。
- fixed:相对于浏览器的窗口的位置,没有依赖感。
- 代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
div {
height: 100px;
width: 100px;
}
.rel {
background-color: orange;
/*display: inline-block;*/
}
.abs {
background-color: green;
/*display: inline-block;*/
float: left;
}
.abs1{
height: 150px;
width: 150px;
background-color: black;
/*display: inline-block;*/
float: left;
}
.outer{
height: 200px;
width: 200px;
background-color: aqua;
/*display: inline-block;*/
float: left;
}
.fix{
position: fixed;
height: 100px;
width: 100px;
left: 20px;
top: 30px;
background-color: red;
}
</style>
</head>
<body>
<div class="fix">我不动</div>
</br></br></br></br></br></br></br></br></br></br></br>
</br></br></br></br></br></br></br></br></br></br></br>
</br></br></br></br></br></br></br></br></br></br></br>
</br></br></br></br></br></br></br></br></br></br></br>
<div class="outer">
<!-- <div class="rel"></div> -->
</div>
<div class="abs"></div>
<div class="abs1"></div>
</body>
</html>
- 效果图
- 多个
display:inline-block
的div
元素排列,默认会下边对齐,而且中间会有间距:- 代码
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
div {
height: 100px;
width: 100px;
}
.rel {
background-color: orange;
display: inline-block;
}
.abs {
background-color: green;
display: inline-block;
}
.abs1{
height: 150px;
width: 150px;
background-color: black;
display: inline-block;
}
.outer{
height: 300px;
width: 300px;
background-color: aqua;
display: inline-block;
}
</style>
</head>
<body>
<!-- <div class="outer"> -->
<div class="rel"></div>
<!-- </div> -->
<div class="abs"></div>
<div class="abs1"></div>
</body>
</html>
- 效果图
- 如果想让它们无间距的上边对齐,可以全部添加float属性:
- 代码,这里其实不用设置 display 属性,只设置 float 就可以了,因为 float 也可以将块级元素转成行内元素。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
div {
height: 100px;
width: 100px;
}
.rel {
background-color: orange;
/*display: inline-block;*/
}
.abs {
background-color: green;
display: inline-block;
float: left;
}
.abs1{
height: 150px;
width: 150px;
background-color: black;
display: inline-block;
float: left;
}
.outer{
height: 200px;
width: 200px;
background-color: aqua;
display: inline-block;
float: left;
}
div.outside{
height: 700px;
width: 700px;
float: left;
}
</style>
</head>
<body>
<div class="outside">
<div class="outer">
<!-- <div class="rel"></div> -->
</div>
<div class="abs"></div>
<div class="abs1"></div>
</div>
</body>
</html>
- 效果图
三、行高line-height
- normal 默认。设置合理的行间距,允许内容顶开或溢出指定的容器边界。
- number 设置数字,此数字会于当前的字体尺寸相乘来设置行间距。
- length 设置固定的行间距,不允许负值。
- % 基于当前字体尺寸的百分比行间距,不允许负值。
- inherit 规定你改改从父元素继承 line-height 属性的值。
- 注意:html 默认字体 16px.
四、水平居中与垂直居中
水平居中
垂直居中
-
示例:
- 文字居中代码
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
#mycenter {
height: 400px;
width: 300px;
background-color: red;
/*line-height: 300px;*/
/*文字垂直居中,试用于一行文字*/
text-align: center;
/*水平居中*/
margin-left: auto;
margin-right: auto;
display: table;
/*设置居中*/
/*position: absolute;
top: 50%;
left: 50%;
margin-top: -200px;
margin-left:-150px;*/
}
/*#mycenter1{
height: 300px;
width: 400px;
background-color: red;
line-height: 300px;文字垂直居中,试用于一行文字
text-align: center; 水平居中
float: left;
margin-left: 10px;
}*/
.inner{
display: table-cell;
vertical-align: middle;
/*width: 300px;*/
/*height: 100px;*/
background-color: orange;
text-align: center;
}
</style>
</head>
<body>
<div id="mycenter">
<div class="inner">
啊啊啊啊啊啊啊啊啊啊不sdr不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男ttt女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是
<!-- <img src="https://www.baidu.com/img/bd_logo1.png" height="127"> -->
</div>
</div>
<!-- <div id="mycenter1">
啊啊啊啊啊啊啊啊啊啊不sdr不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男ttt女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是
</div> -->
</body>
</html>
- 效果图
- 图片居中
- 代码
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
#mycenter {
height: 400px;
width: 300px;
background-color: red;
/*line-height: 300px;*/
/*文字垂直居中,试用于一行文字*/
text-align: center;
/*水平居中*/
margin-left: auto;
margin-right: auto;
display: table;
/*设置居中*/
/* position: absolute;
top: 50%;
left: 50%;
margin-top: -200px;
margin-left:-150px;*/
}
/*#mycenter1{
height: 300px;
width: 400px;
background-color: red;
line-height: 300px;文字垂直居中,试用于一行文字
text-align: center; 水平居中
float: left;
margin-left: 10px;
}*/
.inner{
display: table-cell;
vertical-align: middle;
/*width: 300px;*/
/*height: 100px;*/
background-color: orange;
text-align: center;
}
</style>
</head>
<body>
<div id="mycenter">
<div class="inner">
<!-- 啊啊啊啊啊啊啊啊啊啊不sdr不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男ttt女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是 -->
<img src="https://www.baidu.com/img/bd_logo1.png" height="127">
</div>
</div>
<!-- <div id="mycenter1">
啊啊啊啊啊啊啊啊啊啊不sdr不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男ttt女女是事实上事实上是啊啊啊啊啊啊啊啊啊啊不不不不不不不不不不不难男男女女男男女女男男女女是事实上事实上是
</div> -->
</body>
</html>
- 效果图
五、Html调色原理
- HTML 的颜色表示可分两种:
- 以命名方式定义常用的颜色,如 RED。
命名方式所包括的色中不多也不是很方便,所以较少采用。 - 以 RGB 值表示,如 #FF0000 表示 red。
众所周知颜色是由“red”、“green”、“blue” 三原色组合而成的,在 HTML 中对于彩度的定义是采用十六进制的,对于三原色 HTML 分别给予两个十六进位去定义,也就是每个原色有 256 种彩度,故此三原色可混合成一千六百多万个颜色。
- 以命名方式定义常用的颜色,如 RED。