HTML5+CSS3

背景颜色线性渐变

由于浏览器支持状况不是很好,所以必须添加浏览器私有前缀。PC端基本不用,基本用移动端。
在这里插入图片描述

图片

新增图片格式
DPG图片压缩技术
京东自助研发推出DPG图片压缩技术,经测试该技术,可直接节省用户近50%的浏览流量,极大地提升了用户的网页打开速度,压缩后的图片和webp的清晰度对比没有差距
webp图片格式
谷歌开发的一种旨在加快图片加载速度的图片格式,图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间

图片为什么有空白缝隙
这是因为图片默认和文本的基线对齐,img标签的基线就是图片的底部,那么一行文字包括当前行内的图片都是基于基线对齐的,但是图片的基线和底部是重合的,所以图片下边是由空隙留给文字的底线和基线之间的距离,但是为什么明明没有书写文字,仍然会有间隙呢?其实渲染过程中,会在空白的地方渲染一个没有宽度和高度的节点,这个节点被称作为 幽灵白节点。
为什么会出现基线对齐呢?是因为有默认的vertical-align为baseline(基线)

插入图片与背景图片的区别与用途
插入图片移动位置只能靠盒模型padding,margin或者position
背景图片 用于小图标背景或者超大背景图片——>移动只能通过background-position,或者把盒子设置为跟背景图片一样大小,用position定位

/* 页面中img默认是行内块元素 /
/
出现行内块的情况,因为图片默认和文字的基线对齐,所以要对其进行设置,使文字和图片居中对齐 */
vertical-align: middle;
即使没有文字,也会出现这种情况
在这里插入图片描述

img 过大怎么办?
可以通过CSS中的img{10px;}进行控制插入图片的大小
background-image过大怎么办?
可以通过background-sizing进行缩放或者铺满

css3 属性选择器、结构伪类选择器,伪类选择器

CSS3 2D转换

转换是CSS3中具有颠覆性的特征之一,可以实现元素的
移动 translate
类似定位,是2D转换的一种功能,可以改变元素在页面中的位置。
移动盒子的位置: 定位 外边距 2D转换移动
x就是x轴上移动位置,y就是y轴上移动的位置 中间用逗号分隔
transform:translate(x,y);
特点:不会影响到其他元素的位置
如果里面的参数是%,移动的距离是盒子自身的宽度或者高度来对比的

translate(-50%,-50%); 盒子往上走自己高度的一半 transform:translate(-50%,-50%);

所以盒子垂直居中:可以用position 和 transform结合

translate对于行内元素是无效的。

transform:translateX(n);
transform:translateY(n);
旋转 rotate
transform:rotate(度数);
单位是deg
角度为正时,顺时针。角度为负时,逆时针。

transform:rotate(45deg);

过渡写到本身上,谁做动画给谁加

	div {
			position: relative;
			width: 249px;
			height: 35px;
			border: 1px solid #000;
		}
		div::after {
			content: "";
			position: absolute;
			top: 0;
			right: 0;
			width: 10px;
			height: 10px;
			border-right: 1px solid #000;
			border-bottom: 1px solid #000;
			transform: rotate(45deg);
		}

在这里插入图片描述

三角形顺时针旋转225度
在这里插入图片描述
在这里插入图片描述

<style>
		div {
			position: relative;
			width: 249px;
			height: 35px;
			border: 1px solid #000;
		}
		div::after {
			content: "";
			position: absolute;
			top: 8px;
			right: 15px;
			width: 10px;
			height: 10px;
			border-right: 1px solid #000;
			border-bottom: 1px solid #000;
			transform: rotate(45deg);
			/*过渡效果*/
			transition: all 0.6s;
		}
		/*鼠标经过div里面的三角旋转*/
		div:hover::after {
			transform: rotate(225deg);
		}
	</style>

2D转换中心点 transform-origin
我们可以设置元素转换的中心点
transform-origin:x y ;
1.可以是方位名词:

transform-origin: left botttom;

2.默认是50% 50% 等价于 center center
3.可以是px像素

transform-origin: 50px 50px;

缩放 scale
2D 转换是改变标签在二维平面上的位置和形状的一种技术
transform:scale(x,y);
优势 不会影响到其他盒子,可以变换中心点

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div {
			width: 200px;
			height: 200px;
			background-color: pink;
			margin: 100px auto;
			transition: all 0.4s;
		}
		div:hover {
			/*里面的数字就是倍数的意思*/
			/*transform: scale(2,1);*/

			/*等比例缩放,同时修改宽度和高度,有简单的写法,宽度修改两倍,高度和默认的一样*/
			/*transform: scale(2);*/

			/*缩小。小于1就是缩放*/
			/*不会影响其他盒子,而且可以移动中心点*/
			transform-origin: left bottom; 
			transform: scale(2);
		}
	</style>
</head>
<body>
	<div></div>
	<span>2222</span>
</body>
</html>

综合写法,有顺序问题,先旋转会改变坐标轴的方向,位移放在最前面。
transform:translate(150px,50px) rolate(50deg);

CSS3 动画

是c3中具有颠覆性的特征之一
制作动画分为两步: 先定义动画,再调用动画
动画序列:
0%是动画的开始,100%是动画的完成,这样的规则是动画序列。
在@keyframes中规定某项css样式,就能创建由当当前样式组件改为新样式的动画效果

@keyframes move {
			/*开始状态*/
			from和to等价于 0%和100%
			0% {
				transform: translateX(0px);
			}
			/*结束状态*/
			100% {
				transform: translateX(1000px);
			}
		}
		div {
			width: 200px;
			height: 200px;
			background-color: pink;
			/*调用动画*/
			/*动画名称*/
			animation-name: move;
			/*持续时间 */
			animation-duration: 2s;
		}

可以做多个状态的变化,里面的百分比就是时间的划分

<style>
		@keyframes move {
			/*开始状态*/
			0% {
				transform: translateX(0px);
			}
			/*结束状态*/
			100% {
				transform: translateX(1000px);
			}
		}
		div {
			width: 200px;
			height: 200px;
			background-color: pink;
			/*调用动画*/
			/*动画名称*/
			animation-name: move;
			/*持续时间 */
			animation-duration: 2s;
			/*运动曲线*/
			animation-timing-function: ease;
			/*何时开始*/
			animation-delay: 1s;
			/*重复次数 infinite 无限次数*/
			/*animation-iteration-count: infinite;*/
			/*是否反方向播放  默认的是 normal 如果想要反方向  就写alternate*/
			/*animation-direction: alternate;*/
			/*保持结束状态 默认的是 backwards 回到起始状态 让他停留在结束状态 forwards*/
			linear匀速运动
			animation-fill-mode: forwards;



		}
		div:hover {
			/*鼠标经过div 让这个div 停止动画 鼠标离开就继续动画*/
			animation-play-state: paused;
		}
	</style>

波纹动画

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.big {
			position: relative;
			width: 200px;
			height: 200px;
			margin: 100px auto;
			background-color: #ccc;
		}
		.one {
			/*大盒子为了定位波纹的位置*/
			position: absolute;
			top: 30px;
			right: 50px;
			/*color: red;*/
		}
		.dotted {
			width: 8px;
			height: 8px;
			background-color: #09f;
			border-radius: 50%;
		}
		.one div[class^="pulse"] {
			/*水平居中,垂直居中*/
			position: absolute;
			top: 50%;
			left: 50%;
			transform: translate(-50%,-50%);
			width: 8px;
			height: 8px;
			/*盒子不给边框,给阴影,阴影会变得模糊*/
			box-shadow: 0 0 12px #009dfd;
			border-radius: 50%;
			animation: pulse 1.2s linear infinite;
		}
		/*权重不一样*/
		.one div.pulse2 {
			animation-delay: 0.4s;
		}
		.one div.pulse3 {
			animation-delay: 0.8s;
		}
		@keyframes pulse {
			0% {}
			50% {
				/*波纹效果不要用scale 因为他会让阴影变大*/
				width: 40px;
				height: 40px;
				/*修改透明度*/
				opacity: 1;
			}
			100% {
				width: 70px;
				height: 70px;
				opacity: 0;
			}
		}
	</style>
</head>
<body>
	<div class="big">
		<div class="one">
			<!-- 一个小圆点,三个波纹 -->
			<div class="dotted"></div>
			<div class="pulse1"></div>
			<div class="pulse2"></div>
			<div class="pulse3"></div>
		</div>
	</div>
</body>
</html>

在这里插入图片描述

通过step写动画(文字轮播图)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div {
			overflow: hidden;
			font-size: 20px;
			width: 0;
			height: 30px;
			background-color: pink;
			/*让我们的文字强制一行内显示*/
			white-space: nowrap;
			/*steps就是分几步来完成我们的动画 有了steps就不要在写ease或者linear了*/
			animation: w 4s steps(11) infinite forwards;
			/*forwards 停留在原地不动*/
		}
		@keyframes w {
			0% {
				width: 0;
			}
			100% {
				width: 220px;
			}
		}
	</style>
</head>
<body>
	<div>
		世纪佳缘我在这里等你
	</div>
</body>
</html>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值