1.盒子浮动 float
Float 属性:
默认是 none,按照标准流来定位;
Left:左悬浮;
Right:右悬浮;
先看看没有加浮动的初始效果:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 5px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; } .a2{ background-color: blue; border: 2px blue solid; margin: 5px; } p{ background-color: gray; border: 2px gray solid; margin: 5px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> <div class="a2">盒子2</div> <p>Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程</p></div></body></html>
复制代码
运行结果:
添加浮动 float 之后:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 5px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; /* 设置盒子1向左悬浮 */ float: left; } .a2{ background-color: blue; border: 2px blue solid; margin: 5px; /* 设置盒子2向右悬浮 */ float: right; } p{ background-color: gray; border: 2px gray solid; margin: 5px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> <div class="a2">盒子2</div> <p>Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程</p></div></body></html>
复制代码
运行结果:
2.使用 clear 清除浮动的影响;
Clear 属性:
默认是 none,允许两边都可以有浮动对象;
Left: 不允许左边有浮动对象 ; Right:不允许右边有浮动对象; Both:不允许有浮动对象
2.1 不允许左边有浮动对象;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 5px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; /* 设置盒子1向左悬浮 */ float: left; } .a2{ background-color: blue; border: 2px blue solid; margin: 5px; /* 设置盒子2的高度为50px; */ height: 50px; /* 设置盒子2向右悬浮 */ float: right; } p{ background-color: gray; border: 2px gray solid; margin: 5px; /* 设置p不允许左悬浮 */ clear: left; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> <div class="a2">盒子2</div> <p>Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程</p></div></body></html>
复制代码
运行结果:
2.2 不允许右边有悬浮对象;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 5px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; /* 设置盒子1的高度为100px; */ height: 100px; /* 设置盒子1向左悬浮 */ float: left; } .a2{ background-color: blue; border: 2px blue solid; margin: 5px; /* 设置盒子2的高度为50px; */ height: 50px; /* 设置盒子2向右悬浮 */ float: right; } p{ background-color: gray; border: 2px gray solid; margin: 5px; /* 设置p不允许右悬浮 */ clear: right; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> <div class="a2">盒子2</div> <p>Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程</p></div></body></html>
复制代码
运行结果:
2.3 左右都不允许有浮动对象;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 5px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; /* 设置盒子1的高度为100px; */ height: 100px; /* 设置盒子1向左悬浮 */ float: left; } .a2{ background-color: blue; border: 2px blue solid; margin: 5px; /* 设置盒子2的高度为50px; */ height: 50px; /* 设置盒子2向右悬浮 */ float: right; } p{ background-color: gray; border: 2px gray solid; margin: 5px; /* 设置p左右都不允许有悬浮 */ clear: both; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> <div class="a2">盒子2</div> <p>Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程</p></div></body></html>
复制代码
运行结果:
3.盒子定位 position;
Position 属性:
默认是 static,按照标准流来定位;
Relative:相对定位,相对于原本的标准位置偏移指定的距离;
Absolute:绝对定位,以它的包含框为基准进行偏移;
Fixed:固定定位,以浏览器窗口为基准进行定位;
先看看没有加定位的初始效果:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 15px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; padding: 10px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> </div></body></html>
复制代码
运行结果:
3.1.Relative:相对定位,相对于原本的标准位置偏移指定的距离;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 15px; } .a1{ background-color: green; border: 2px green solid; margin: 5px; padding: 10px; /* 设置盒子1是相对定relative */ position: relative; /* 将盒子1向右(相对于盒子1的原来位置而言)移动30px; */ left: 30px; /* 将盒子1向下(相对于盒子1的原来位置而言)移动30px; */ top: 30px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> </div></body></html>
复制代码
运行结果:
3.2. Absolute:绝对定位,以它的包含框为基准进行偏移;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 15px; } .a1{ background-color: green; border: 2px green solid; padding: 10px; /* 设置盒子1是绝对定位absolute */ position: absolute; /* 将盒子1向左(相对于浏览器的边框)靠齐,与浏览器的边框距离为0; */ left: 0px; /* 将盒子1向上(相对于浏览器的边框)靠齐,与浏览器的边框距离为0*/ top: 0px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> </div></body></html>
复制代码
运行结果:
可以看到盒子 1 已经与它的包含框(浏览器)对齐;
此时若将包含盒子 1 的父盒子 parent 的定位设置成 relative 的话,那么包含框就变成了盒子 parent;
例如下例:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 15px; /* 设置福边框的position为relative */ position: relative; } .a1{ background-color: green; border: 2px green solid; padding: 10px; /* 设置盒子1是绝对定位absolute */ position: absolute; /* 将盒子1向左(相对于parent的边框)靠齐,与parent的边框距离为0; */ left: 0px; /* 将盒子1向上(相对于parent的边框)靠齐,与parent的边框距离为0*/ top: 0px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> </div></body></html>
复制代码
运行结果:
可以看到盒子 1 已经与它的包含框(父边框 parent)对齐;
由此可见包含框的定义是:
包含框:离选定内容(盒子 1)最近的且含有 position 属性(relative、fixed 均可,absolute 不行)的边框称为包含框!
3.3.Fixed:固定定位,以浏览器窗口为基准进行定位;
不管父边框有任何的 position 属性,只要子边框是 fixed 属性,则子边框的包含框是浏览器!
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> .parent{ background-color: yellow; border: 2px red solid; padding: 15px; /* 设置福边框的position为relative */ position: relative; } .a1{ background-color: green; border: 2px green solid; padding: 10px; /* 设置盒子1是固定定位fixed,则一定是相对于浏览器而言*/ position: fixed; /* 将盒子1向左(相对于浏览器的边框)靠齐,与浏览器的边框距离为0; */ left: 0px; /* 将盒子1向上(相对于浏览器的边框)靠齐,与浏览器的边框距离为0 */ top: 0px; }</style></head><body><div class="parent"> <div class="a1">盒子1</div> </div></body></html>
复制代码
运行结果:
4.z-index 空间位置
z-index 默认属性是 0,z-index 值大的页面位于其小的页面的上方;
先来看看没有加 z-index 的页面:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> img{ position: fixed; top: 0px; left: 0px; } h1{ border: red 1px solid; }</style></head><body><h1>这是一个苹果</h1><img alt="" src="apple.jpg"/></body></html>
复制代码
运行效果:
可以看到图片的 position 是 fixed,相对于浏览器对齐,因此挡住了 h1 的内容;
如果我们想要将 img 放在 h1 的下方,作为背景图的话,就可以将 img 的 z-index 设置为负数;
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> img{ position: fixed; top: 0px; left: 0px; /* 将img的z-index设置为-1,比h1的默认值0要小,因此位于h1的下方 */ z-index: -1; } h1{ border: red 1px solid; }</style></head><body><h1>这是一个苹果</h1><img alt="" src="apple.jpg"/></body></html>
复制代码
运行结果:
5.盒子 display 属性
Display:
Inline: 把元素变成内联元素;
Block: 把元素变成块级元素;
先来看看行级元素与块级元素的区别:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><div>d1</div><div>d2</div><div>d3</div><span>s1</span><span>s2</span><span>s3</span></body></html>
复制代码
div 是块级元素,span 是行级元素;
运行结果:
再来看看加了 display 属性的结果:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><style type="text/css"> div{ /* 将div变成内联元素 */ display:inline; } span{ /* 将span变成块级元素 */ display:block; }</style></head><body><div>d1</div><div>d2</div><div>d3</div><span>s1</span><span>s2</span><span>s3</span></body></html>
复制代码
运行结果:
可以明显地看到 display 属性的作用,能将行级元素变成块级元素,也可以将块级元素变成行级元素;
我是【程序员的时光】,热爱技术分享,信仰终身学习,爱健身,会点厨艺的热血青年,我们下期再见!
评论