HTML5和css3

HTML5

一、html5

1. html5 与 xhtml的区别

在这里插入图片描述

1.DOCTYPE文档及编码
	html5:<!DOCTYPE html>			比较简单
				<meta charset="utf-8">
	 
	xhtml:<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 
	Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">		相对复杂
	meta charset 相对复杂
2.元素大小写
	html5:可以大写也可以小写
	xhtml:只能小写

3.属性布尔值
	html5:当属性的属性值和属性一样时,属性值可以不写
	xhtml: 属性和属性值都要写完整

4.单标签
	html5:单标签可以不写/
	xhtml:单标签必须要写/

5.属性引号
	html5:属性的属性值可以不写引号
	xhtml:属性的属性值必须要写引号

6.img alt 属性
	html5:可以不写alt属性
	xhtml:必须要写alt属性

7.双标签闭合
	html5:可以不写闭合标签
	xhtml:必须写闭合标签

2. strong和b,em和i 的区别

span、strong、em、b、i 都属于内联样式
span用的多需要在内部写很多class样式区分span,利用标签的不同,简化选择器的操作在这里插入图片描述

3.引用标签

对适用的文本进行语义化的操作,什么样的样式,用什么样的标签就是语义化

在这里插入图片描述

4. 嵌套页面 iframe

在一个页面中嵌套一个页面
同时存在src 和srcdoc 的时候,会优先显示srcdoc的内容

在这里插入图片描述

5. 换行 br 与软换行 wbr

在页面中,一段较长的文字或单词,在页面进行缩小的时候会进行自动换行操作

br:不管页面有没有缩小,都会进行强制换行

wbr:针对较长的单词换行时,不会把整个单词换行,可以通过 wbr 对长单词进行分段,页面缩小时进行
	 部分换行

6. 定义预格式化的文本 pre 和 code

通过pre 与 code 的组合,将想要展示的代码,放入其中。 尖括号等代码符号需要进行转义字符

在这里插入图片描述

7. 给特殊图形添加链接 map 与 area

<img src="" usemap="#da">
<map name="da">
	<area shape="形状" coords="形状位置" href ="热区目标链接" alt="" />
</map>

8. 嵌入多媒体(flash) embed、object

<embed src="多媒体路径" type="">

<object>
	<param name="movie" value="多媒体路径">
</object>

在这里插入图片描述

9. 嵌入音频和视频 audio、video

在这里插入图片描述

<audio src="音频路径" controls="显示控件" loop="自动循环"></audio>
<video src="视频地址" conreols></video>

<video width="800" height="">
	<source src="myvideo.mp4" type="video/mp4"></source>
	<source src="myvideo.ogv" type="video/ogg"></source>
	<source src="myvideo.webm" type="video/webm"></source>
	<object width="" height="" type="application/x-shockwave-flash" data="myvideo.swf">
		<param name="movie" value="myvideo.swf" />
		<param name="flashvars" value="autostart=true&amp;file=myvideo.swf" />
	</object>
	当前浏览器不支持 video直接播放,点击这里下载视频: <a href="myvideo.webm">下载视频</a>
</video>

10. 拼音注解和文字反向 ruby、rt、bdo、

<ruby><rt>su</rt>		文字注解
</ruby>

<p><bdo dir="rtl">倒过来念</bdo></p>       文字反向
dir的值:
rtl:right  to  left
ltr: left to right

在这里插入图片描述

11. link 标签

<link rel="icon" type="/img/x-icon" href="img/resizeApi.png"/>  页面小图标

在这里插入图片描述
在这里插入图片描述

12. meta 标签

meta的作用:添加辅助信息,根据属性 name 的不同,作用也不同

上面的框表示meta的辅助信息,下面的框表示meta的功能作用

在这里插入图片描述

13. h5新语义化标签

	header:	页眉
	footer:		页脚
	main:	主体
	hgroup	:标题组合
	nav:	导航
	页眉页脚主体,只能出现一次

在这里插入图片描述

<header class="mui-bar mui-bar-nav">
	<h1 class="mui-title">标题</h1>
	<h2></h2>
	<nav>新闻</nav>
</header>
<footer></footer>
<main>
		<article>
					<section>
						<figure>
							<img src="img/favicon.ico" >
							<figcaption>
								新型语义化
								<br>
								新时代
							</figcaption>
						</figure>
					</section>
					
					<section>
						<input type="text" list="elms" />
						<datalist id="elms">
								<option value ="a"></option>
								<option value ="ab"></option>
								<option value ="abc"></option>
								<option value ="app"></option>
								<option value ="around"></option>
								<option value ="actz"></option>
						</datalist>
						<details open>
							<summary>HTML</summary>
							<p>超文本语言</p>
						</details>
						<progress min="0" max="10" value="8"></progress>进度条
						<meter min="0" max="100" value="90" low="10" high="80"></meter>度量条
					</section>
					<section></section>
		</article>
</main>

14. 表格扩展

表格css样式
在这里插入图片描述

15. 表单扩展之控件美化

通过label ,运用label与其他位置的关联,更改图片进行美化

15.1 表单扩展之新input控件

在这里插入图片描述

15.2 表单扩展之新属性

<input type="text" name="username" autocomplete="off" autofocus required pattern="" />
autocomplete:自动完成  默认值 on  /  off
当提交表单有name 属性的时候,提交过的值会显示出提示,可以用autocomplete 
关闭自动提示

autofocus:获取焦点,
可以在访问当前页面的时候,自动将光标放置在输入框。

pattern:正则表达式验证

在这里插入图片描述

15.3 表单扩展之新标签


<fieldset>
	<legend>等灯</legend>
	<p>
		用户名:<input type="text" name="" d="" value="" />
	</p>
	<p>
		密码:<input type="password" />
	</p>
	<input type="submit" />
	
</fieldset>
optgroup:可以为选择项的内容进行分组
<select name="">
	<optgroup label="水果">
		
	</optgroup>
	<option value="">香蕉</option>
	
	<optgroup label="shucai">
	
	</optgroup>
	<option value="">番茄</option>
</select>

在这里插入图片描述

二、css3

1. BFC规范

只有触发BFC规范的元素,才可以形成一个独立的容器,不受外界的影响,从而解决布局的问题

BFC规范
在这里插入图片描述
在这里插入图片描述

1.解决margin 叠加问题
	将两个容器单独放置在一个容器中,将 display 定义成flex

2.解决margin传递问题   传递问题只有嵌套的容器才会出现
	将父容器溢出处理 overflow 设置成 auto 等

3.解决浮动问题
	可以让父模块出发BFC规范。
	也可以让父元素也浮动
	
4. 解决覆盖问题

在这里插入图片描述

2. 浏览器内核与前缀

css3去兼容不同版本的浏览器,针对旧的浏览器版本进行兼容,新的浏览器版本基本不需要前缀
为了实现某些css3 特效,旧版本不支持,需要加前缀。对应的浏览器只能使用对应的前缀
在这里插入图片描述

3.transition 过度

在这里插入图片描述

.div1{width: 50px; height: 50px; background: #808080;
	  transition-property: all;
	  transition-duration: 1s;
	  transition-delay: ;
	  transition-timing-function: ease;
}
.div1:hover{width: 100px; height: 100px; background: #6A5ACD;}

在这里插入图片描述

<style type="text/css">
		ul,li{margin: 0; padding: 0; list-style:none; }
		ul{width: 600px;}
		ul li{
			width: 165px; height: 200px; background: url(img/sprite.png); float: left;
			transition: all 1s ease;
		}
		
		ul li:nth-child(1){background-position: 0px 200px;}
		ul li:nth-child(2){background-position: -200px 200px;}
		ul li:nth-child(3){background-position: -400px 200px;}
		ul li:nth-child(4){background-position: 0px 400px;}
		ul li:nth-child(5){background-position: -200px 400px;}
		ul li:nth-child(6){background-position: -400px 400px;}
		
		ul li:hover:nth-child(1){background-position: 0px 564px;}
		ul li:hover:nth-child(2){background-position: -200px 564px;}
		ul li:hover:nth-child(3){background-position: -400px 564px;}
		
	</style>

		<ul>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>

4.transform 变形

transform-origin 基点:
当设置多个值时候的顺序,设置基点的位置。

当进行transform 复写的时候,要注意属性的前后位置, transform的的执行顺序是
从后往前进行变化。当translate 在最后的时候,会受到其他值的影响。

变形只能加给块元素,内联元素想用,可以改变类型。

模块运用 transform 变形的时候,本体也需要加上transition 过渡,才能显示效果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1 transform 3D

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.在做3d效果时,需要同时用到 perspective和transfrom-style。
	perspective在外层,transform-style 在内层
2.backface-visibility 背面隐藏,可以在物体透明的状态下,隐藏后面的图像。

5. animation 动画

在这里插入图片描述

注:
	1.运动结束后,默认会停留在起始位置
	2.from 等价于0%,to 等价于100%
	3.复合写法,不区分先写后写,但是动画持续时间先写,动画延迟时间后写
	4.哪个样式需要动画,就写在哪个样式上
<style type="text/css">
			.box1{width: 300px; height: 300px; border: 1px black solid; margin: 30px auto;}
/* 				.box2{width: 100px; height: 100px; background: red; 
				  animation-name: mybox;
				  animation-duration: 1s;
				  animation-delay: 2s ;
				  animation-iteration-count: infinite;
				  animation-timing-function: linear;
				  
				  } */
			.box2{width: 100px; height: 100px; background: red;
				  animation: mybox 1s 2s infinite linear;
				  
				  } 
			
		/* 	
			@keyframes mybox{
				from{transform: translate(0,0);}
				to{transform: translate(200px,0);}
			} */
			
			@keyframes mybox{
				0%{transform: translate(0,0);}
				100%{transform: translate(200px,0);}
			}
			
</style>
</head>
<body>

	<div class="box1">
		<div class="box2"></div>
	</div>
</body>
</html>

5.1 animate 第三方动画库

从官网下载css文件,引入项目。

6.animation 实现load加载动画

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
/* 			==========================================
			制作load加载动画思路:
			1.先制定一个盒子,在制定盒子的四个点位,在制定第二个盒子的四个点位。
			2.让第二个盒子的四个点位与第一个盒子的重叠,然后旋转45度。形成一个圆形点位
			3.给点位加上动画,让他们可以进行缩放。动画样式为:无限循环次数,匀速运动
			4.在给每个点位的缩放时间进行等差延迟。形成加载动画
			
			========================================== */
				.load{width: 40px; height: 40px; margin: 30px auto; position: relative;}
				.load .box1,.load .box2{ width: 100%; height: 100%; position: absolute;}
				.load .box2{transform: rotate(45deg);}
				.load .box1 div,.load .box2 div{width: 5px; height: 5px; background:blue; border-radius:50%; position: absolute;
												animation: loadmove 1.5s infinite linear;}
				 
				.load .box1 div:nth-child(1),.load .box2 div:nth-child(1){left: 0; top: 0;}
				.load .box1 div:nth-child(2),.load .box2 div:nth-child(2){right: 0; top: 0;}
				.load .box1 div:nth-child(3),.load .box2 div:nth-child(3){right: 0; bottom: 0;}
				.load .box1 div:nth-child(4),.load .box2 div:nth-child(4){left: 0; bottom: 0;}
				
				@keyframes loadmove{
					0%{transform: scale(1);}
					50%{transform: scale(0);}
					100%{transform: scale(1);}
				}
				
				.load .box1 div:nth-child(1){animation-delay: 0s;}
				.load .box2 div:nth-child(1){animation-delay: .2s;}
				.load .box1 div:nth-child(2){animation-delay: .4s;}
				.load .box2 div:nth-child(2){animation-delay: .6s;}
				.load .box1 div:nth-child(3){animation-delay: .8s;}
				.load .box2 div:nth-child(3){animation-delay: 1s;}
				.load .box1 div:nth-child(4){animation-delay: 1.2s;}
				.load .box2 div:nth-child(4){animation-delay: 1.4s;}
		</style>
	</head>
	<body>
			<div class="load">
				<div class="box1">
					<div></div>
					<div></div>
					<div></div>
					<div></div>
				</div>
				<div class="box2">
					<div></div>
					<div></div>
					<div></div>
					<div></div>
				</div>
			</div>
	</body>
</html>

7.transform 实现正方体旋转

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
/* 			================================================
			正方体思路
			运用知识:position定位、transfrom动画、transform-origin旋转基点定位、
					位置移动、perspective远景观看效果、transform-style动画样式、
			构建思路:
					1.先构建一个盒子,将ul放入,根据li制造正方体的六个面。
					2.构建好六个面后,对各个面进行旋转调整位置。
					3.构建好位置后,进行动画添加,让盒子旋转,以及旋转基点的选择
			注:盒子旋转以中心旋转,要将整体放置在中心位置,不然会出现不按中心旋转。注意ul的margin。
			================================================ */
					*{margin: 0; padding: 0;}
					ul{list-style: none;}
					.box{width: 300px; height: 300px; border: 1px black solid; margin: 30px auto; perspective:200px;}
					.box ul{width: 100px; height: 100px; position: relative;transform-style: preserve-3d;transform-origin: center center -50px;
							transition: 2s; margin: 100px;
							}
					.box ul li{width: 100px; height: 100px; position: absolute;line-height: 100px; color: white; text-align: center;
							   line-height: 100px; font-size: 26px;  }
					
					.box ul li:nth-child(1){background:red; left: 0px; top: 0px;}
					.box ul li:nth-child(2){background: blue; left: 0px; top: -100px; transform: rotateX(90deg); transform-origin: bottom;}
					.box ul li:nth-child(3){background: yellow;left: 0; top: 100px;transform: rotateX(-90deg);transform-origin: top;}
					.box ul li:nth-child(4){background: pink; left: -100px; top: 0px;transform:rotateY(-90deg);transform-origin: right;}
					.box ul li:nth-child(5){background: green;left: 100px; top: 0px; transform: rotateY(90deg);transform-origin: left;}
					.box ul li:nth-child(6){background: gray;left: 0px; top: 0px; transform: translateZ(-100px) rotateY(180deg);}
					
					.box:hover ul{transform:rotateY(360deg);}
		</style>
	</head>
	<body>
		<div class="box">
				<ul>
					<li>1</li>
					<li>2</li>
					<li>3</li>
					<li>4</li>
					<li>5</li>
					<li>6</li>
				</ul>
		</div>
		
	</body>
</html>

8. css3 背景图扩展

在这里插入图片描述

background-size:
	可以直接写宽高,设置背景图的图片大小
	cover:覆盖  会用图片把背景铺满
	contain:包含 会为使用背景图的模块填充合适大小的图

background-origin:
	padding-box:以padding的位置放置图片
	border-box: 以border的位置开始 放置图片
	conten-box: 以content 内容 的位置放置图片

9. 背景图之线性渐变 、径向渐变linear-gradient、radial-gradient

linear-gradient 是属于background属性的值 linear-gradient()
1.括号里可以直接写 颜色 ,多个颜色,意思是 从什么颜色到什么颜色
2.在颜色的前面可以加 to left 等其他方位,从哪边开始到哪边
3.颜色的前面可以加角度 3deg,正值代表向右旋转颜色,负值代表向左。
4.在颜色部分,可以添加百分比。颜色渐变从上到下是0-100%。加上百分比表示从百分数开始变,之前的都是
	原来的颜色。

radial-gradient 是径向渐变,圆形的
.box1{width: 100px; height: 100px; background:linear-gradient(red,green);} 
.box1{width: 100px; height: 100px; background:linear-gradient(to left, red,green);} 
.box1{width: 100px; height: 100px; background:linear-gradient(30deg, red,green);}
.box1{width: 100px; height: 100px; background:linear-gradient(red, yellow 10%, green 20%);}

10. 字体图标 font-face

字体图标就是字体的样式,可以设置颜色大小。

通过@font-face 引入,font-family随意起名,src是引入字体图标路径。
在需要使用的地方填写font-family,然后在写上字体对应的名字。

简单写法:
				使用after伪类,让对应的字体加入其中
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
			@font-face {
				font-family:hello;
				src: url();
			}
			div{
				font-family: hello;
			}
			.gouwuche::after{content:"对应图标的字体";}
		</style>
	</head>
	<body>
		<div>对应图标的字体</div>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述

10.1 引入阿里巴巴矢量字体图标

1.先从图标库下载,解压文件,将对应的css和兼容文件放置项目中。
2.使用link标签引入css
3.在使用此样式的标签上加入class="iconfont 对应图标名称"

其他彩色图标在阿里巴巴矢量图标库有帮助文档

10.2 引入icomoon自制图标

在移动端网页图标可以使svg自制的图标,在icomoon下。

11.文字阴影 text-shadow

text-shadow:x y 模糊值 颜色,多个效果;  颜色不添加默认跟随字体颜色

text-shadow: 10px 15px 50px blue,-10px -15px 10px green;

在这里插入图片描述

12. 盒子阴影 box-shadow

在这里插入图片描述

box-shadow: 10px 10px 15px 50px yellow,1px 1px 15px 8px blue inset;

13. 图片遮罩 mask

mask的值:
	1.url()选择图片
	2.repeat 选择是否重复平铺
	3.位置宽高 /图片大小
	4.多遮罩

在这里插入图片描述

.box{
background: url();
mask: url() no-repeat 100px 100px / 200px 200px ,url() no-repeat 100px 100px / 200px 200px;
}

14. 倒影 box-reflect

	box-reflect的 属性:
	1.倒影的方向
		above 上、below 下、 left 左、right 右、
	2.倒影的距离
	3.linear-gradient 渐变、mask 遮罩、
		渐变只支持透明度的渐变,不支持颜色渐变。

	倒影的使用,写在想要倒影的选择器中。
box-reflect:above 30px url();

倒影实现思路:
1.使用box-reflect 实现图片倒影  浏览器版本高,兼容这个可以使用。
2.使用transform 变形中的 scale 缩放效果 ,将值设置为-1,浏览器版本低兼容性不好用这个。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
				img{width: 300px; height: 300px;}
				
				/* .box{ margin: 50px auto; -webkit-box-reflect:below 30px url(../img/98.png);}
				 */
					.box{margin: 50px auto; -webkit-box-reflect: right 20px linear-gradient(rgba(255,255,255,0),rgba(255,255,255,1)); }
				/* .box{margin: 50px auto; transform: scale(-1);} */
		</style>
	</head>
	<body>
			<div class="box">
					<img src="../img/8283262.jpg" >
			</div>
	</body>
</html>

15. 模糊值 blur 和计算 calc

模糊值 blur
通过filter 滤镜加给img标签。滤镜可以提供模糊值饱和度

img{filter: blur(20px);}

计算calc
加在宽高等需要像素的后面,用来代替百分比像素之间的换算
可以用四则运算。
calc的计算公式时要每个数值和符号要有空格

.box{height: 300px; width: calc(100% - 300px); border: 1px black solid;}

16. 分栏布局 column

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
				.box{width:500px; height: 300px; border: 1px black solid;
					 margin: 30px auto;	
					 column-width: 100px;
					 column-gap: 10px;
					 column-rule: 1px red dashed;
					 
						}
		</style>
	</head>
	<body>
			<div class="box">
					<h2>全球独角兽企业两年翻番 中美占比达七成</h2>
					<p> 参考消息网11月28日报道 据《日本经济新闻》11月27日报道,被称作“独角兽”的大型初创企业数量在全球已增加到500家。借助现有产业与信息技术的融合以及人工智能的进步,独角兽企业在两年左右的时间里增加了一倍。</p>
					<p>报道称,独角兽企业是指估值超过10亿美元的初创企业。美国数据智库CB风险投资公司说,在以色列和美国等地设有办事处的一家网络安全对策公司19日的估值达到13亿美元,成为第500家独角兽企业。</p>
			</div>
			<hr />
	</body>
</html>

17. 伪类和伪元素

伪类
css3中规定 伪类由一个冒号:·开始,后面跟伪类的名称。
伪类是为了弥补常规选择器中的不足,弥补DOM树的不足。
伪类作用的范围是整个元素。伪类是给整体添加的样式,整个样式都会变化。


伪元素
css3中规定伪元素由两个冒号开始::,后面跟伪元素的名称 。

伪元素是创建的一个有内容的虚拟容器,这个容器不包含DOM树元素,
但是可以包含内容,开发者还可以为伪元素定制样式

伪元素作用的范围是创建虚拟容器的范围。伪元素是对创建的虚拟容器发生变化,伪元素的功能类似于添加了span标签


18. CSS hack

hack的作用
通过使用不同的样式代码,为不同的浏览器版本实现不同的css效果。
在这里插入图片描述


18.1 css属性前缀法

css属性前缀法
通过在css属性的前缀添加不同的样式代码,实现浏览器版本不同,所展示的效果也不同。
在这里插入图片描述
前两个符号写在属性前缀,后两个符号加在值的后面。

background: red  ; 
_background:blue;  
background:blue\9;

18.2 选择器前缀法

选择器前缀法
加在选择器的前面

*html .box{}
*+html .box{}
:root .box{}

在这里插入图片描述


18.3 IE条件注释法

IE条件注释法
写在需要识别的标签前后。类似于条件判断
在这里插入图片描述
在这里插入图片描述


19. 渐进增强与优雅降级

渐进增强
在构建网页时,先考虑低版本浏览器,保证基础功能。随着浏览器版本的升高,对基本的功能进行优化与增强。


优雅降级
在构建网页时,先从高版本进行功能完善,随着浏览器版本的降低,再进行兼容优化。


在这里插入图片描述


20. 网页布局

在页面中,没有设置高的div,他的高是由里面容器的高加上margin的值所形成的,如果margin的值为负数,那么父容器的高度会小于里面子容器的高度。
在这里插入图片描述

20.1 布局扩展之等高布局

等高布局
在同一个父容器中,子元素的高度相等的布局
伪等高布局
利用负margin-bottom正padding-bottom实现等高布局
padding会增加子元素填充内容的高度,margin和内容的高度相加会得到父容器的高度。所以负margin和padding会形成一个有填充内容的高度,但没有显示高度的父容器。当在里面添加内容时,子元素会根据最长的内容显示高度,把较低的子元素撑起来。


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
			*{margin: 0; padding: 0;}
			.box {
				border: 5px black solid;
				overflow: hidden;
			}

			.box1 {
				float: left;
				width: 100px;
				background: red;
				margin-bottom: -2000px;
				padding-bottom: 2000px;
			}

			.box2 {
				float: right;
				width: 100px;
				background: blue;
				margin-bottom: -2000px;
				padding-bottom: 2000px;
			}
		</style>
	</head>
	<body>

		<div class="box">
			<div class="box1">
				<p>111</p>
				<p>111</p>
				<p>111</p>
				<p>111</p>
			</div>
			<div class="box2">
				<p>222</p>
				<p>222</p>
				<p>222</p>
				<p>222</p>
				<p>222</p>
				<p>222</p>
			</div>
		</div>
	</body>
</html>


20.2 三栏布局-双飞翼布局

三列布局,左右固定,中间自适应。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
/* 			=================================
			构建思路:将center放置在最前,左右两个模块在后. 然后给
			左浮动的模块设置-100%的margin,这样他就会在整体的左边,
			然后给右浮动模块加上自身等宽的负margin,让他排在右边. 
			================================= */
			* {
				margin: 0;
				padding: 0;
			}

			.header {
				height: 100px;
				background: red;
			}

			.container {}

			.container .center {
				height: 200px;
				float: left;
				width: 100%;

			}

			.container .center p {
				height: 100%;
				background: yellow;
				margin: 0 150px 0 100px;
			}

			.container .left {
				width: 100px;
				height: 200px;
				background: blue;
				margin-left: -100%;
				float: left;
			}

			.container .right {
				width: 150px;
				height: 200px;
				background: green;
				margin-left: -150px;
				float: left;
			}
			
		</style>
	</head>
	<body>
		<div class="header"></div>
		<div class="container">
			<div class="center">
				<p>内容部分</p>
			</div>
			<div class="left"></div>
			<div class="right"></div>
		</div>
	</body>
</html>



20.3 三栏布局-圣杯布局

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
/* 			========================================================
			构建思路:
			1.让container整体背景颜色为黄色,里面靠center、left、right
			模块撑起来,元素浮动后,不清除浮动,父元素无法撑起高度。
			2.让center、left、right浮动起来。
			3.给left、right设置宽高,定位在两边。left用margin-left:-100%;使他
			与center并列。再用定位移动到左边,使他一直在center左边。
			4.right用margin-left:150px;使他消除与自己等宽的margin,与center的右边
			并列,然后用定位移动到center右侧。
			5.center的宽靠父容器,父容器靠里面装的子元素撑起。
			6.给父容器添加margin,把挤出去的left和right的位置添加回来。
			======================================================== */
				*{margin: 0; padding: 0;}
				.clear::after{content: ""; display: block; clear: both;}
				.header{height: 100px; background: red;}
				.container{background: yellow; margin: 0 150px 0 100px; }
				.container .center{float: left; height: 200px; width: 100%;}
				.left{width: 100px; height: 200px; float: left; background: blue; margin-left: -100%; left: -100px; position: relative;}
				.right{width: 150px; height:200px ; background: green; float: left; margin-left: -150px; position: relative; right: -150px;}
		</style>
	</head>
	<body>
			<div class="header"></div>
			<div class="container clear">
				<div class="center">
					<p>内容部分</p>
				</div>
				<div class="left"></div>
				<div class="right"></div>
			</div>
	</body>
</html>

三、viewport 视口

在这里插入图片描述

1. visual viewport可视视口、layout viewport 布局视口

visual viewport固定大小和屏幕一样大小且不可改变,在上面。layout viewport默认是980像素大小,可以改变大小。
一个页面不设置viewport,默认大小是980px。

2. viewport设置

device:设备
scalable:可伸缩
initial:最初的

在这里插入图片描述

3. 移动端适配方案

1等分比布局也叫流式布局
2等比式布局也叫rem布局
在这里插入图片描述

4.rem布局

进行宽度动态设置
不同的设备宽度不同,根据当前设备的layout viewport 设置fontsize的值。用document.documentElement.clientwidth获取layout的值,用document.documentElement.style.fontsize给根元素html设置fontsize。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 响应式布局-根据不同的设备,配置不同的样式

orientation:方向
portrait:竖向
landscape:景色地形,在这里指的是横向

@media媒体查询
在这里插入图片描述
媒体类型
在这里插入图片描述

通过@meidia添加媒体查询,根据不同的浏览器大小配置对应的样式。

<style type="text/css">
	#box{width: 100px; height: 100px; background: red;}
	
	/* @media all and (min-width:500px) {
		#box{background: blue;}
	} */
	
	/* @media all and (min-width:500px) and (max-width:700px) {
		#box{background: blue;}
	} */
	
	/* @media not all and (min-width:500px){
		#box{background: blue;}
	} */
	
	/* @media all and(min-width:500px) {
		#box{background: blue;}
	}
	@media all and (min-width:700px){
		#box{background: yellow;}
	} */
	
	/* 纵向显示 */
	@media all and (orientation:portrait) {
		#box{background: blue;}
	}
	/* 横向显示 */
	@media all and (orientation:landscape) {
		#box{background: yellow;}
	}
	
</style>
<!-- 通过link引入媒体查询 -->
<link rel="stylesheet" href="base.css" media="all and (min-width:400px)"/>
<link rel="stylesheet" href="base2.css"/ media="all and (min-width:600px)">

通过媒体查询为了修改常见样式,先写正常的样式,然后根据不同的设备,配置不同的样式。
在这里插入图片描述
display
通常移动端不需要的样式通过@meidia配合display进行隐藏,或者块和内联之间的转换。

四、css新特性

1.css自定义属性

自定义的作用域也是就近原则,和优先级原则。
在这里插入图片描述

2. shapes 环绕文字

在这里插入图片描述
shape-outside:属性
clip-path:切割图形形状
shape-margin:图形和坐标产生的间距
polygon:进行切点
在这里插入图片描述

3. scrollbar 自定义滚动条

在这里插入图片描述

4. scroll snap css滚动捕捉

小窗口的元素滚动条位置固定。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值