HTML5和CSS3新特性

2 篇文章 0 订阅

html5新特性

div和span对搜索引擎来说是没有语义的。

1.新增语义化标签

<header>:头部标签   

<nav>:导航标签

<article>:内容标签

<section>:块级标签

<aside>:侧边栏标签

<footer>:尾部标签

比如:

<style>

     header,nav{

       width:100%;

       height:120px;

      background-color:pink;

     }

</style>

 

<body>

    <header>header</header>

    <nav>nav</nav>

</body>

注意:这种语义化标准主要针对搜索引擎的;

           这些新标签页面中可以使用多次

           在ie9中需要把这些元素转成块级元素

           移动端更喜欢用这些标签

2.新增多媒体标签

音频:<audio>支持三种格式

格式IE9火狐3.5Opera10.5Chrome3.0Safari3.0
Ogg Vorbis  
MP3  
Wav  

 

<audio src="文件地址" controls="controls"></audio>

属性描述
autoplayautoplay如果出现该属性,音频在就绪后马上播放
controlscontrols向用户显示控件,比如播放按钮
looploop每当音频结束时重新播放
srcurl要播放的音频的url

 

兼容性写法:

<audio controls="controls" >

       <source src="happy.mp3" type="audio/mpeg">

      <source src="happy.ogg" type="audio/ogg">

</audio>

视频:<video>

Ogg :火狐、谷歌支持

MPEG 4:IE、谷歌

WebM :火狐、谷歌支持

<video src="文件地址" controls="controls"></video>

兼容性写法:

<video>

      <source src="move.ogg" type="video/ogg">

     <source src="move.mp4" type="video/mp4">

</video>

属性描述
autoplayautoplay视频就绪自动播放
controlscontrols显示播放控件
widthpixels设置播放器宽度
heightpixels设置播放器高度
looploop循环播放
preloadauto(预先加载)| none(不加载)是否预加载视频(有了autoplay就忽略这个属性)
srcurl视频url地址
posterImgurl加载等待的画面图片
mutedmuted静音播放

 

谷歌浏览器把自动播放禁了,解决办法:

给视频添加静音属性,autoplay="autoplay" muted="muted"

总结:

谷歌浏览器不支持自动播放音频和视频。视频有解决办法,音频没有

视频标签是重点,经常设自动播放,不使用controls控件,循环和设置大小属性

 

新增表单属性

<form action="">

    邮箱:<input type="email" />  //可以自动检测输入的是不是邮箱

    <input type="submit" value="提交">

</form>

属性值说明
type="email"限制用户输入必须是email类型
url.......url类型
date日期类型
time时间类型
month月份类型
week周类型
number数字类型
tel手机号码
search搜索框
color生成一个颜色选择表单

 

这些属性多用于移动端

属性说明
requiredrequired必填
placeholder提示文本提示信息
autofocusautofocus自动获取光标效果
autocompleteoff/ on

下一次把鼠标定进去后,会显示上一次输入的内容,默认on;

有要求:1.必须有name属性 2.成功提交过

multiplemultiple多选文件提交

CSS3属性选择器

 比如:

button[disable]{  权重1+10=11

   cursor:default;

}

选择符简洁
E[att]选择具有att属性的E元素
E[att="val"]选择具有att属性且att属性值=val的E元素
E[att^="val"]匹配具有att属性,值以val开头的E元素
E[att$="val"]匹配具有att属性,值以val结尾的E元素
E[att*="val"]匹配具有att属性、值中含有val的E元素

类选择器、属性选择器、伪类选择器权重10

 

CSS3结构伪类选择器

选择符简洁
E:first-child匹配父元素中第一个子元素E
E:last-child匹配父元素中最后一个E元素
E:nth-child(n)匹配父元素中第n个子元素E
E:first-of-type指定类型E的第一个
E:last-of-type指定类型E的最后一个
E:nth-of-type(n)指定类型E的第n个

 

比如:

ul li:first-child{

  background-color:pink;

}

ul li:nth-child(6){

 background-color:pink;

}

<ul>

   <li>1</li>

   <li>2</li>

   <li>3</li>

    <li>4</li>

    <li>5</li>

</ul>

注意:nth-child(n),这里的n可以是数字、关键字和公式。但是是选择父元素里面的第n个孩子,他不管里面的孩子是否是同一种类型。

           关键字有even、odd等。

           如果n是公式,那么公式里的n从0开始。公式比如:2n、2n+1、5n、n+5(从5开始)、-n+5(前5个)。第0个元素或者超过了元素个数的会被忽略。

比如:

div span:first-of-type{//满足span的第一个孩子,权重1+1+10

 

}

<div>

<p>这是一个p </p>

<span>这是span</span>

<span>这是span</span>

<span>这是span</span>

</div>

 

CSS3伪元素选择器

选择符简洁
::before在元素内部的前面插入内容
::after在元素内部的后面插入内容

 

div::before{

 content:"我";

}

 

<body>

  <div>是</div>

</body>

最后显示,一个盒子里显示我是

注意:

1.before和after必须有content属性

2.before在内容的前面,after在内容的后面

3.before和after创建一个元素,但是属于行内元素(没有大小,只能通过转换display:block;来有大小)

4.伪元素和标签选择器一样,权重1

5.在结构(开发者模式elements)里我们看不到创建的这个盒子,只能通过before、after找他,所以它不是真正意义上的元素。

 

CSS3 2D转换

transform(转换)是CSS3中最具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果。

转换可以简单理解为变形。

移动:translate

旋转:rotate

缩放:scale

移动盒子的位置的方法:

1.定位 2.盒子外边距 3.  2d转换移动

比如:

div{

   width:200px;

   height:200px;

   background-color:pink;

   transform:translate(100px,100px); //x就是x上移动的位置,y同理

}

写法1:transform:translate(x,y);

写法2:transform:translateX(n);

写法3:transform:translateY(n);

注意:

1.translate最大的优点就是:不会影响其他元素的位置

2.对行内标签没有效果

3.translate(x,y)百分比,是针对盒子而言的百分比

比如:往上走,往左走,水平垂直居中,transform:translate(-50%,-50%);

 

旋转rotate

语法:

transform:rotate(度数)

注意:

1.rotate里面跟度数,单位deg,比如rotate(45deg)就是45度的意思

2.角度为正,顺时针,负,逆时针

3.默认旋转的中心是元素的中心点

 

做个小三角形

div{

   width:250px;

   height:35px;

   border:1px solid black;

}

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);

}

让鼠标经过div,里面三角旋转

div:hover::after{

  transform:rotate(225deg);//45+180

}

<body>

    <div></div>

</body>

 

转换中心点

语法:

transform-orign:x y;

注意:1. x y用空格隔开

        2.可以给x y设置方位名词或者像素 (top bottom left right center)

div{

  width:200px;

  height:200px;

  background-color:pink;

  margin:100px auto;

  transition:all 1s;  //加过渡

}

div:hover{

  transform:rotate(360deg);

}

 

2d转换之缩放scale

语法:

transform:scale(x,y);

注意:x y可以是数字,但没有单位,是倍数的意思。1就是一倍。<1就是缩放。如果只写一个数字,默认另一个和这个数一样。

如果直接修改宽度、高度。宽度变大会往两边延伸,高度变大会往下延伸。最上边那个边是不动的。如果下面有盒子,会把下面的盒子撑大了。

优点:1.不会影响其他盒子,而且可以设置缩放的中心点

 

2d综合写

transform:translate() rotate() scale()等

顺序会改变转换效果

同时有移动和其他属性,把移动放最前

 

CSS3动画

动画可以设置多个节点来精确控制一个或一组动画,相比于过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。

动画的基本操作:

1.先定义动画

2.再调用动画

我们想页面一打开,就让一个盒子从左边走到右边。

 1.用keyframes定义动画

@keyframes 动画名称{

    0%{

           transform:translateX(0px);

         }

      100%{

             transform:translateY(10000px);

          }

}

2.使用动画

 div{

       width:200px;

       height:200px;

       background-color:pink;

       margin 100px auto;

       animation-name:动画名称;

      animation-duration:持续时间;

  }

注意:0%是动画的开始,100%是动画的完成,这样的规则叫动画序列。这里的百分比是对总时间进行划分。

           动画可以改变任意多的样式和任意多的次数。

          可以用0%和100%规定动画变化发生的时间,也可以是from 和to。

 

动画属性:

属性描述
@keyframes规定动画
animation所有动画属性的简写,除了animation-play-state属性
animation-name动画名
animation-duration完成一个动画的持续时间,默认0
animation-timing-funxtion规定动画的速度曲线,默认ease(低速开始,然后加快,结束前变慢) | linear(匀速) | ease-in(动画低速开始)| ease-out(低速结束)| ease-in-out(动画低速开始和结束)| steps()指定时间函数中的间隔数量(步长)
animation-delay规定动画从何时开始,默认0
animation-iteration-count规定动画被播放的次数,默认1,还有infinite
animation-direction规定动画是否在下一周期逆向播放,默认"normal",alternate逆向
animation-play-state规定动画是否正在运行或暂停,默认是running,还有pause
animation-fill-mode规定动画结束后状态,保持forwards,回到起始backwards

 

 

简写动画属性:

animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态

 

CSS3 3D转换

x轴:水平向右,右边正值,左边负值

y轴:垂直向下,下边正值,上边负值

z轴:垂直屏幕,往外面是正值,里面是负值

3D移动translate3d

在2d的基础上多了一个方向——z轴。

transform:translateX(100px); 沿着x轴移动

transform:translateY(100px);

transform:translateZ(100px);

transform:translate3d(x,y,z); 分别要移动的距离

注意:Z一般用px设置。

 

透视perspective

想要在网页产生3d效果,需要用到透视,

透视的单位是px

人的眼睛到屏幕的距离就是透视,物体离屏幕的距离就是z的距离

注意:透视写在被观察元素的父盒子上面,

           写法perspective:?px,透视 数值越小,盒子越大;z越大,看到的物体越大。

  (可以给父盒子加透视,然后多个子盒子修改z的值)

 

3D旋转rotate3d

3d旋转可以让元素在三维平面沿着x,y,z轴或自定义轴进行旋转。

语法:

transform:rotateX(45deg):沿着x轴正方向旋转45度,正方向,图片下面大,反方向,图片上面大。

transform:rotateY(45deg):正方向,左边大。

transform:rotateZ(45deg):(应用转盘抽奖),本身垂直,怎么转都是一样。

transform:rotate3d(x,y,z,deg):沿着自定义轴旋转deg

左手准则:

左手的手指指向x轴正方向,其余手指的弯曲方向就是该元素沿着x轴旋转的方向。

 

3D呈现transform-style: flat(默认不开启立体空间) | preserve-ed;(开启立体空间)

这个写给父级,影响的是子盒子。very important!

 

浏览器私有前缀

浏览器的私有前缀是为了兼容老版本浏览器的写法。

1.私有前缀

-moz-:代表火狐私有特性

-ms-:ie

-webkit-:谷歌

2.提倡的写法:

-moz-border-radius:10px

 

移动端

兼容移动端处理webkit内核浏览器即可。

移动端碎片化严重,分辨率和屏幕尺寸大小不一。

视口是浏览器显示页面内容的屏幕区域。视口分为布局视口、视觉视口(用户能看到的网页区域)、理想视口(需要我们给移动的页面添加meta视口标签)。

meta视口标签

标准设置:

<meta name="viewport" content=" width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0">

width:宽度设置的是viewport宽度,可以设置device-width特殊值

initial-scale:初始缩放比,大于0的数字

maximun-scale:最大缩放比,大于0的数字

minimum-scale:最小

user-scalable:用户是否可以缩放,yes或no(1或0)

在我们开发时候1px不一定等于1个物理像素,如果pc端,是相等的,移动端不一定。

1个px能显示的物理像素点的个数,叫做物理像素比。

但是50*50的图片,在手机中按照物理像素比放大倍数,就会变模糊。所以需要专门处理。=>使用倍图

准备一个比实际50*50大两倍的,也就是100*100的,然后通过css改为50*50;放到手机中变为100*100,本身也是100*100.

我们准备的图片比实际需要的大小,大2倍,就是两倍图。

背景缩放background-size:宽度 高度;

单位:长度  | 百分比 | cover(使背景图片完全覆盖背景区域,宽度 高度都要完全覆盖,可能有部分图片缺失) | contain(将图片扩大到最大尺寸,宽度和高度完全适应内容区域,可能有部分空白区域)

 

CSS3盒子模型 box-sizing

传统模式宽度计算:盒子宽度=css中width+border+padding

CSS3盒子模型:盒子宽度=css的width(里面包含了border+padding),即padding和border不会撑大盒子了

box-sizing:border-box; //CSS3盒子模型

box-sizing:content-box;//传统盒子模型

 

去掉高亮:

-webkit-tap-highlight-color:transparent;

 

1.单独制作移动端页面(主流)

 (1) 流式布局(百分比布局);——常见,通过盒子的宽度设置成百分比来根据屏幕的宽度进行伸缩,不受固定像素的限制,内容向两侧填充。

  比如:

*{

  margin:0;

   padding:0;

}

section{

  width:100%;

}

section div{

  float:left;

   width:50%;

    height:400px;

}

 

<section>

  <div></div>

  <div></div>

</section>

(2)flex布局

优点:操作方便,布局简单。

缺点:PC端浏览器支持情况较差;IE11或更低版本,不支持或部分支持。

直接写:可以将span1,span2变成小盒子,自适应,不需要清除浮动,不管块元素还是行内元素都可以指定flex布局。

div{

   display:flex;

   width:80%;

   height:300px;

   background-color:pink;

}

<div>

   <span>1</span>

   <span>2</span>

</div>

注意:1.当我们为父盒子设为flex布局后,子元素的float、clear、vertical-align属性将失效。

           2.上面例子中div就是flex父容器,span是子容器flex项目。子容器可以横向排也可以纵向排。

           3.flex会让子元素在一行显示,如果显示不开就缩小子元素盒子大小。

原理:通过给父盒子添加flex属性,来控制子盒子的位置和排列方式。

父属性:flex布局中分为主轴和侧轴,主轴就是x轴方向,侧轴就是y轴方向。元素跟着主轴排列

属性属性值说明
flex-direction★row(默认从左到右)| row-reverse | column(从上到下) | column-reverse设置主轴的方向 
justify-content★flex-start(默认贴着头部对齐,如果x是主轴,从左到右)| flex-end(贴着右部对齐,顺序不变) |center(在主轴居中对齐,如果x是主轴,则水平居中) | space-around(平分剩余空间)| space-between(先两边贴边,再平分剩余空间)★设置主轴上的子元素排列方式
flex-wrap★不想显示不开就缩小子元素盒子大小 :nowrap(默认不换行)| wrap(换行)设置子元素是否换行
align-content(必须出现换行flex-start(默认侧轴头部开始排列)| flex-end | center | space-around(子项在侧轴平分剩余空间)|space-between(子项在侧轴先分布在两头,再平分剩余空间)| stretch设置侧轴上的子元素的排列方式(多行)
align-items★flex-start(默认从上到下)| flex-end | center | stretch(沿着侧轴拉伸)设置侧轴上的子元素的排列方式(单行)
flex-flow:row wrap 复合属性,相当于同时设置了flex-direction和flex-wrap

align-content和align-items区别:

1.align-items适用于单行情况,只有上对齐、下对齐、居中和拉伸。

2.align-content适应于多行情况,单行无效,可以设置上对齐、下对齐、居中、拉伸和平均分配剩余空间等属性值。

flex布局子项常见属性:

1.flex:表示从剩余空间中分配多少份

item{

    flex<number>;

}

(3)rem适配布局

页面布局文字能随屏幕大小变化而变化。

rem的基准是相对于Html元素的字体大小;em相对于父元素的字体大小来说。

rem可以通过修改html里面的文字大小,来改变页面中元素的大小,实现整体控制。(只需要让里面所有元素单位都改成rem)

 

媒体查询Media Query

1.用@media查询

2.可以针对不同屏幕尺寸设置不同的样式

3.重置浏览器大小过程中,页面根据浏览器的宽度高度重新渲染页面

语法:

@media mediatype 参数(media feature){

 CSS-Code;

}

mediatype:all | print(用于打印机或打印预览) | screen(用于电脑屏幕、平板、手机等)

参数:and(将多个媒体特性连接到一起) | not(排除某个媒体特性) | only(指定) 

media feature:width(输出设备中页面可见区域的宽度) | max-width | min-width

 

媒体查询+rem

可以实现不同设备宽度,实现页面元素大小的动态变化。

@media screen and(min-width:320px){

    html{

         font-size:50px;

     }

}

@media screen and(min-width:640px){

    html{

     font-size:100px;

     }

}

CSS弊端:

CSS是一门非程序式语言,没有变量、函数、作用域等概念。没有计算能力,不方便维护和扩展,冗余高。

Less

是一门CSS的扩展语言,也称为CSS预处理器。它在CSS语法基础上,引入了变量、运算、函数等功能。

总结:Less是一门CSS预处理语言,扩展CSS的动态特性。

1.    Less变量:

@变量名:值;

2.   Less的编译:

我们需要把Less文件编译生成css文件,html才能使用。

3.  Less嵌套:将子元素的样式直接写到父元素里面

.header{

    width: 200px;

    height: 200px;

    background-color: red;

    a{

        color: green;

    }

}

<div class="header">

        <a href="#">文字</a>

    </div>

 

如果是伪类选择器/伪元素选择器/交集选择器:内层选择器的前面需要加&

 a{

        color: green;

      &:hover{

       color:blue;

      }

 }

4.  Less运算

任何数字、颜色或者变量都可参与运算。

运算符的左右两侧必须有个空格隔开。

两个数参与运算,如果只有一个数有单位,最后结果就以这个单位为准

两个数参与运算,如果两个数都有单位,而且单位不一样,最后结果以第一个数的单位为准。

@border:5px + 5;

div{

   width:200px - 50;

}

2.响应式页面兼容移动端(其次)

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值