HTML5和CSS3

一、CSS权重

CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式。

1.权重的等级

可以把样式的应用方式分为几个等级,按照等级来计算权重

  1. !important,加在样式属性值后,权重值为10000
  2. 内联样式,如:style="",权重值为1000
  3. ID选择器,如:#content,权重值为100
  4. 类,伪类和属性选择器,如:content、:hover权重值为10
  5. 标签选择器和伪元素选择器,如:div、p、:before权重值为1
  6. 通用选择器(*)、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0、

2.权重的计算实例

1、实例一:

html 复制代码
<style type="text/css">
    div{
        color:red !important;
    }        
</style>
......
<div style="color:blue">这是一个div元素</div>
<!-- 
两条样式同时作用一个div,上面的样式权重值为10000+1,下面的行间样式的权重值为1000,
所以文字的最终颜色为red 
-->

2、实例二:

html 复制代码
<style type="text/css">
    #content div.main_content h2{
        color:red;    
    }
    #content .main_content h2{
        color:blue;
    }
</style>
......
<div id="content">
    <div class="main_content">
        <h2>这是一个h2标题</h2>
    </div>
</div>
<!-- 
第一条样式的权重计算: 100+1+10+1,结果为112;
第二条样式的权重计算: 100+10+1,结果为111;
h2标题的最终颜色为red
-->

二、CSS3新增选择器

1、E:nth-child(n):匹配元素类型为E且是父元素的第n个子元素

html 复制代码
<style type="text/css">            
    .list div:nth-child(2){
        background-color:red;
    }
</style>
......
<div class="list">
    <h2>1</h2>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</div>

<!-- 第2个子元素div匹配 -->

2、E:first-child:匹配元素类型为E且是父元素的第一个子元素

3、E:last-child:匹配元素类型为E且是父元素的最后一个子元素

4、E > F E元素下面第一层子集

5、E ~ F E元素后面的兄弟元素

6、E + F 紧挨着的后面的兄弟元素

属性选择器:

1、Eattr含有attr属性的元素

html 复制代码
<style type="text/css">
    div[data-attr='ok']{
        color:red;
    }
</style>
......
<div data-attr="ok">这是一个div元素</div>

2、Eattr='ok'含有attr属性的元素且它的值为'ok'

3、Eattr\^='ok'含有attr属性的元素且它的值的开头含有'ok'

4、Eattr$='ok'含有attr属性的元素且它的值的结尾含有"ok"

5、Eattr\*='ok'含有attr属性的元素且它的值中含有"ok"

三、CSS3圆角、rgba

1.CSS3圆角度

设置某一个角的圆角,比如设置左上角的圆角:border-top-left-radius:30px 60px;

同时分别设置四个角:border-radius:30px 60px 120px 150px;

设置四个圆角相同:border-radius:50%;

2.rgba(新的颜色值表示法)

1、盒子透明度表示法:

css 复制代码
.box{
        opacity:0.1;
        /* 兼容IE */
        filter:alpha(opacity=10)

    }

2、rgba(0,0,0,0.1)前三个数值表示颜色,第四个数值表示颜色的透明度

四、CSS3 transition动画

1、transition-property 设置过渡的属性:比如:width height background-color

2、transition-duration 设置过渡的时间,比如:1s 500ms

3、transition-timing-function 设置过渡的运动方式,常用有linear(匀速)| ease(缓冲运动)

4、transition-delay 设置动画的延迟

5、transition:property duration timing-function delay 同时设置四个属性

练习1:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.box{
				width:100px;
				height:100px;
				background-color: aquamarine;
			}
			
			.box:hover{
				width:600px;
				
			}
			
			.box1{
				width:100px;
				height:100px;
				background-color: aqua;
				margin-top:50px;
				/* transition:property(过渡的属性) duration(过渡时间) timing-function(过渡的方式) delay(动画的延迟) 同时设置四个属性 */
				/* transition:width 1s ease,height 1s linear 1s,background-color 1s ease 2s; */
				
				/* 多个属性同时做动画,可以合并成下面一句 */
				transition:all 1s ease;
			}
			.box1:hover{
				width:600px;
				height:500px;
				background-color:red;
			}
		</style>
	</head>
	<body>
		<div class="box"></div>
		
		<div class="box1"></div>
	</body>
</html>

综合练习:

制作鼠标移入图片时,图片说明滑入的效果

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.pic_con{
				width:200px;
				height:300px;
				margin:50px auto 0;
				position: relative;
				overflow: hidden;
			}
			
			.pic_info{
				position: absolute;
				left:0;
				top:300px;
				width:200px;
				height:120px;
				background-color: rgba(0,0,0,0.3);
				color:white;
				padding:10px;
				
				transition:all 1s ease;
			}
			
			.pic_con:hover .pic_info{
				top:180px;
			}
		</style>
	</head>
	<body>
		<div class="pic_con">
			<img src="img/banner01.jpg">
			<div class="pic_info">
				<h3>文字说明标题</h3>
				<p>文字说明文字说明文字说明文字说明</p>
			</div>
		</div>
	</body>
</html>

五、CSS3 transform变换

1、translate(x,y) 设置盒子位移

2、scale(x,y) 设置盒子缩放

3、rotate(deg) 设置盒子旋转

4、skew(x-angle,y-angle) 设置盒子斜切

5、perspective 设置透视距离

6、transform-style flat | preserver-3d 设置盒子是否按3d空间显示

7、translateX、translateY、translateZ 设置三维移动

8、rotateX、rotateY、rotateZ 设置三维旋转

9、scaleX、scaleY、scaleZ 设置三维缩放

10、tranform-origin 设置变形的中心点

11、backface-visibility 设置盒子背面是否可见

举例:(翻面效果)

上面图片反转之后得到下面的图片

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.box{
				width:700px;
				height:272px;

				border:3px solid #000;
				margin:50px auto 0;
				
				position: relative;
				transform-style: preserve-3d;
			}
			
			.box img{
				position: absolute;
				left:200px;
				top:0;
				transform:perspective(800px) rotateY(0deg);
				
				transition:all 1s ease;
				
				backface-visibility: hidden; 
			}
			
			.box:hover img{
				transform:perspective(800px) rotateY(180deg)
			}
			
			.box .back{
				width:300px;
				height:272px;
				background-color: pink;
				position:absolute;
				left:200px;
				top:0;
				
				font-size: 20px;
				text-align:center;
				line-height: 272px;
				transform:perspective(800px) rotateY(-180deg);
				transition:all 1s ease;
				backface-visibility: hidden;
			}
			
			.box:hover .back{
				transform: perspective(800px) rotateY(0deg);
			}
		</style>
	</head>
	<body>
		<div class="box">
			<img src="img/location_bg.jpg" alt="背景图">
			
			<div class="back">
				图片的说明文字
			</div>
		</div>
	</body>
</html>

六、CSS3 animation动画

1、@keyframes定义关键帧动画

2、animation-name 动画名称

3、animation-duration 动画时间

4、animation-timing-function 动画曲线 linear(匀速)| ease(缓冲)| steps(步数)

5、animation-delay 动画延迟

6、animation-iteration-count 动画播放次数 n|infinite

7、animation-direction 动画结束后是否反向还原 normal | alternate

8、animation-play-state 动画状态 paused(停止)|running(运动)

9、animation-fill-mode 动画前后的状态 none(缺省)|forwards(结束时停留在最后一帧)|backwards(开始时停留在定义的开始帧)|both(前后都应用)

10、animation:name duration timing-function delay iteration-count direction;同时设置多个属性

理解练习:

1、风车动画

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>风车旋转</title>
		<style type="text/css">
			@keyframes rotating {
				from{
					transform:rotate(0deg);
				}
				to{
					transform:rotate(360deg);
				}
			}
			
			.fengche{
				display:block;
				width:400px;
				height:400px;
				margin:50px auto 0;
				
				animation:rotating 1s ease infinite;
			}
		</style>
	</head>
	<body>
		<img src="img/fengche.png" alt="风车" class="fengche" />
	</body>
</html>

2、loading动画

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			@keyframes loading{
				from{
					transform:scale(1,1)
				}
				
				to{
					transform:scale(1,0.5);
				}
			}
			
			.box{
				width:300px;
				height:158px;
				border:1px solid #000;
				margin:150px auto 0;
			}
			
			.box div{
				width:30px;
				height:100px;
				float:left;
				background-color: aquamarine;
				margin:15px;
				border-radius:15px;
				animation:loading 500ms ease infinite alternate;
			}
			
			.box div:nth-child(1){
				background-color: red;
			}
			.box div:nth-child(2){
				background-color: green;
				animation-delay: 100ms;
			}
			.box div:nth-child(3){
				background-color: pink;
				animation-delay: 200ms;
			}
			.box div:nth-child(4){
				background-color: lightgreen;
				animation-delay: 300ms;
			}
			.box div:nth-child(5){
				background-color: lightblue;
				animation-delay: 400ms;
			}
			
			.box p{
				text-align: center;
			}
			
			
			
		</style>
	</head>
	<body>
		<div class="box">
			<div class="box01"></div>
			<div class="box02"></div>
			<div class="box03"></div>
			<div class="box04"></div>
			<div class="box05"></div>
			<p>loading...</p>
		</div>
		
	</body>
</html>

3、人物走路动画

动画中使用的图片如下:

html 复制代码
<!DOCTYPE html>
<html>
    <head>
        <!-- 设置字符编码为 UTF - 8 -->
        <meta charset="utf-8">
        <!-- 页面标题为空 -->
        <title></title>
        <!-- 内联 CSS 样式 -->
        <style type="text/css">
            /* 定义名为 walking 的动画 */
            @keyframes walking{
                from{
                    left:0px;
                }
                to{
                    left:-960px;
                }
            }
            /* 定义 .box 类样式 */
            .box{
                width:120px;
                height:180px;
                border:1px solid #ddd;
                margin:50px auto 0;
                overflow: hidden;
                position: relative;
            }
            /* 定义 .box 内 img 元素的样式 */
            .box img{
                position: absolute;
                left:0;
                top:0;
                
                animation:walking 1s steps(8) infinite;
            }
        </style>
    </head>
    <body>
        <!-- 创建一个带有 .box 类的 div 容器 -->
        <div class="box">
            <!-- 插入一张图片 -->
            <img src="img/walking.png" alt="walking" />
        </div>
    </body>
</html>

七、CSS3 浏览器前缀

浏览器样式前缀

为了让CSS3样式兼容,需要将某些样式加上浏览器前缀:

-ms- 兼容IE浏览器

-moz- 兼容firefox

-o- 兼容opera

-webkit- 兼容chrome 和 safari

比如:

css 复制代码
div
{    
    -ms-transform: rotate(30deg);        
    -webkit-transform: rotate(30deg);    
    -o-transform: rotate(30deg);        
    -moz-transform: rotate(30deg);    
    transform: rotate(30deg);
}

自动添加浏览器前缀

目前的状况是,有些CSS3属性需要加前缀,有些不需要加,有些只需要加一部分,这些加前缀的工作可以交给插件来完成,比如按照:autoprefixer

可以在Sublime text中通过package control 按照 autoprefixer

Autoprefixer在Sublime text中的设置:

1、preferences/key Bindings-User

css 复制代码
{ "keys": ["ctrl+alt+x"], "command": "autoprefixer" }

2、Preferences>package setting>AutoPrefixer>Setting-User

css 复制代码
{
    "browsers": ["last 7 versions"],
    "cascade": true,
    "remove": true
}

last 7 versions:最新的浏览器的7个版本

cascade:缩进美化属性值

remove:是否去掉不必要的前缀

八、HTML5 新增标签

新增语义标签

1、<header> 页面头部、页眉

2、<nav> 页面导航

3、<article> 一篇文章

4、<section> 文章中的章节

5、<aside> 侧边栏

6、<footer> 页面底部、页脚

音频视频

1、<audio>

2、<video>

PC端兼容h5的新标签的方法,在页面中引入以下js文件:

html 复制代码
<script type="text/javascript" src="//cdn.bootcss.com/html5shiv/r29/html5.js"></script>

九、HTML5 新增表单控件

新增类型:网址 邮箱 日期 时间 星期 数量 范围 电话 颜色 搜索

html 复制代码
<label>网址:</label><input type="url" name="" required><br><br> 
<label>邮箱:</label><input type="email" name="" required><br><br> 
<label>日期:</label><input type="date" name=""><br><br> 
<label>时间:</label><input type="time" name=""><br><br> 
<label>星期:</label><input type="week" name=""><br><br> 
<label>数量:</label><input type="number" name=""> <br><br>
<label>范围:</label><input type="range" name=""><br><br> 
<label>电话:</label><input type="tel" name=""><br><br> 
<label>颜色:</label><input type="color" name=""><br><br> 
<label>搜索:</label><input type="search" name=""><br><br>

新增常用表单控件属性:

1、placeholder 设置文本框默认提示文字

2、autofocus 自动获得焦点

3、autocomplete 联想关键词

相关推荐
mldong5 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排5 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60616 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角7 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!7 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰8 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi9 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen10 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马10 小时前
AI源码分析:拆解模型底层实现逻辑
前端
IT_陈寒11 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端