h5

Posted 进击的小猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了h5相关的知识,希望对你有一定的参考价值。

文章目录

github 代码链接

h5_1

1、h5兼容IE
2、表单新增type,属性,元素
3、progress、meter、video、audio
4、querySelector、dataset、classList增删改查
5、全屏、退出全屏、是否全屏、网络联接、网络断开
6、FileReader使用
7、拖拽drag
8、百度地图
9、sessionStorage、localStorage
10、应用缓存
11、简易视频播放

h5_2

1、兄弟选择器

拥有style属性的li标签
li[style] 

 拥有class属性并且值为Red的li标签
li[class=red]

拥有指定的attr属性并且属性值中包含(可以在任意位置)value的E标签
li[class*=red]

拥有指定的attr属性并且属性值以value开头的E标签
li[class^=blue]

拥有指定的attr属性并且属性值以value开结束的E标签
li[class$=blue]

2、兄弟选择器

添加了.first样式的标签的相邻的li元素
.first+li

添加了.first样式的元素的所有兄弟li元素
.first~li

3、伪类选择器

li的父元素中的第一个li元素
 li:first-child

E:last-child:查找E元素的父元素中最后一个指定类型的子元素
 li:last-child
 
 也是相对于父元素
 li:first-of-type
 li:last-of-type

 nth-child(从1开始的索引||关键字||表达式)
 li:nth-child(5)
 
 奇偶数
 li:nth-of-type(even)
 li:nth-of-type(odd)

n:默认取值范围为0~子元素的长度.但是当n<=0时,选取无效
li:nth-last-of-type(-n+5)
li:nth-of-type(-n+5)

4、伪类target

E:target:可以为锚点目标元素添加样式,当目标元素被触发为当前锚链接的目标时,调用此伪类样式

5、伪元素

after
before

6、其他伪元素

实现首字下沉
p::first-letter

获取第一行内容
p::first-line

 p::selection
 设置当前选中内容的样式

7、opacity、hsla、text-shadow、盒模型box-sizing:border-box、box-shadow、安卓机器人案例

h5_3

1、线性渐变

linear-gradient(方向,开始颜色 位置,颜色2 位置,颜色3 位置...);

2、径向渐变

radial-gradient(形状 大小 坐标,颜色1,颜色2...)

3、重复渐变

 radial-gradient
 
repeating-radial-gradient
repeating-linear-gradient

4、背景图片
background-image、background-repeat、background-size、
background-attachment

 /*1.添加背景颜色*/
            /*background-color: skyblue;*/
            /*2.添加背影图片
            如果图片大于容器,那么默认就从容器左上角开始放置
            如果图片小于容器,那么图片默认会平铺*/
            /* background-image: url("../images/bg-img.jpg"); */
            background-image: url("../images/share1.png");
            /*3.设置背景平铺
            round:会将图片进行缩放之后再平铺
            space:图片不会缩放平铺,只是会在图片之间产生相同的间距值*/
            background-repeat: round;
            /*4.设置在滚动容器的背景的行为:跟随滚动/固定
            fixed:背景图片的位置固定不变
            scroll:当滚动容器的时候,背景图片也会跟随滚动*/

            /*local和scroll的区别:前提是滚动当前容器的内容
            local:背景图片会跟随内容一起滚动
            scroll:背景图片不会跟随内容一起滚动*/
            background-attachment: local;
 /*添加背景*/
            background-image: url("../images/bg-img.jpg");
            /*background-image: url("../images/share1.png");*/
            background-repeat: no-repeat;
            /*设置背景图片的大小  宽度/高度   宽度/auto(保持比例自动缩放)
            建议:在使用这个属性之前衔确定宽高比与容器的宽高比是否一致,否则会造成图片失真变形*/
            /* background-size: 300px 500px; */
            /* background-size: 300px; */
            /*设置百分比,是参照父容器可放置内容区域的百分比*/
            background-size: 50% 50%;
            /*设置contain:按比例调整图片大小,使用图片宽高自适应整个元素的背景区域,使图片全部包含在容器内
            1.图片大于容器:有可能造成容器的空白区域,将图片缩小
            2.图片小于容器:有可能造成容器的空白区域,将图片放大*/
            background-size: contain;

            /*cover:与contain刚好相反,背景图片会按比例缩放自 适应整个背景区域,如果背景区域不足以包含所有背景图片,图片内容会溢出
            1.图片大于容器:等比例缩小,会填满整个背景区域,有可能造成图片的某些区域不可见
            2.图片小于容器:等比例放大,填满整个背景区域,图片有可能造成某个方向上内容的溢出*/
            background-size: cover;

5、精灵图片
background-position、background-origin、background-clip

a
            width: 50px;
            height: 50px;
            display: block;
            background-color: #ddd;
            margin:100px auto;
            box-sizing: border-box;
            
            background-image: url("../images/sprites.png");
            /*设置背景偏移,参照background-origin原点,这个原点默认在容器的左上角*/
            background-position: -20px 0;

            /*添加padding*/
            padding:14px;
            /*设置背景坐标的原点
            border-box:从border的位置开始填充背景,会与border重叠
            padding-box:从padding的位置开始填充背景,会与padding重叠
            content-box:从内容的位置开始填充背景*/
            background-origin: content-box;
            /*设置内容的裁切:设置的是裁切,控制的是显示
            border-box:其实是显示border及以内的内容
            padding-box:其实是显示padding及以内的内容
            content-box:其实是显示content及以内的内容*/
            background-clip: content-box;
        

6、边框图片
border-image-source、 border-image-slice、 border-image-width

  div
            width: 200px;
            height: 200px;
            margin:100px auto;
            box-sizing: border-box;
            border: 27px solid red;
            /*padding: 27px;*/
            /*添加边框图片*/
            /*border-image-source:可以指定边框图片的路径,默认只是填充到容器的四个角点*/
            border-image-source: url("../images/border1.png");
            /*让它成为九宫格:border-image-slice:设置四个方向上的裁切距离.fill:做内容的内部填充  
            问题:如果分别设置1,2,3,4个值代表什么意思*/
            border-image-slice: 27 ;
            /* border-image-slice: 27 fill; */
            /*border-image-width:边框图片的宽度。如果没有设置这个属性,那么宽度默认就是元素的原始的边框宽度。
            细节:1.边框图片的本质是背景,并不会影响元素内容的放置  2.内容只会被容器的border和padding影响
            建议:一般将值设置为原始的边框的宽度*/
            border-image-width: 27px;
            /*border-image-outset:扩展边框*/
            /*border-image-outset: 0px;*/
            /*border-image-repeat:
            repeat:直接重复平铺
            round:将内容缩放进行完整的重复平铺*/
            border-image-repeat: round;

            /*缩写:*/
            /*border-image: source slice / width/outset repeat;*/
            /* border-image: url("../images/border1.png") 27 / 27px /0px round; */
        

7、9patch图片

 div
            width: 500px;
            height: auto;
            border: 10px solid red;
            margin:100px auto;
            /*添加边框图片*/
            border-image-source: url("../images/btn_bg.png");
            /*设置受保护的区域大小*/
            border-image-slice: 10 fill;
            /*设置边框图片的宽度
            1.明确圆角的大小
            2.明确受保护的区域的大小*/
            border-image-width: 10px;
            /*设置背景平铺效果  默认是stretch:拉伸*/
            border-image-repeat: stretch;
        
    </style>
</head>
<body>
<div>边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置边框图片的本质是背景,并不会影响元素内容的放置</div>
</body>

8、过渡

    /*添加过渡效果:过渡效果执行完毕之后,默认会还原到原始状态*/
            /*1.transition-property:添加过渡效果的样式属性名称*/
            /* transition-property: left;
            /*2.transition-duration:过渡效果的耗时 以秒做为单位*/
            /* transition-duration: 2s; */
            /*3.transition-timing-function:设置时间函数--控制运动的速度*/
            /* transition-timing-function: linear; */
            /*4.transition-delay:过渡效果的延迟*/
            /* transition-delay: 2s; */ 

            /*简写:transition:属性名称 过渡时间  时间函数  延迟*/
            /*transition: left 2s linear 0s;*/

            /*为多个样式同时添加过渡效果*/
            /*transition: left 2s linear 0s,background-color 5s linear 0s;*/

            /*为所有样式添加过渡效果 all:所有样式
            1.所有样式的过渡效果一样
            2.效率低下,它会去查询所有添加的样式
            3.建议:以后不要这么写
            4.steps(4):可以让过渡效果分为指定的几次来完成*/
            /* transition:all 2s steps(4);
            -moz-transition: all 2s steps(4);
            -webkit-transition: all 2s steps(4);
            -o-transition: all 2s steps(4); */

9、手风琴案例

 <style>
        *
            padding: 0;
            margin: 0;
        
        .menu
            width: 200px;
            height:auto;
            margin:100px auto;
        
        .item
            width: 100%;
            height:auto;
        
        .item > h3
            height: 40px;
            line-height: 40px;
            background-color: #7dffe7;
            color: orange;
            border-bottom: 2px solid #ccc;
            padding-left:10px;
        
        .item > .itemBox
            width: 100%;
            height:0px;
            overflow: hidden;
            /* display: none; */
            /*添加过渡效果:过渡效果只能产生从某个值到另外一个具体的值的过渡!!!!!!!!*/
            /*1.一定要设置为哪些css样式添加过渡效果*/
            /* transition-property: display; */
            transition-property: height;
            /*2.一定要设置过渡效果的耗时*/
            transition-duration: 1s;
        
        .item > .itemBox > ul
            list-style: none;
            background-color: #eaffb6;
            padding:10px;
        

        /*为item添加hover伪类*/
        .item:hover > .itemBox
            /* display: block; */
            height: 110px;
        
    </style>
<div class="menu">
    <div class="item">
        <h3>市内新闻</h3>
        <div class="itemBox">
            <ul>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
            </ul>
        </div>
    </div>
    <div class="item">
        <h3>省内新闻</h3>
        <div class="itemBox">
            <ul>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
                <li>深圳超市肉菜档遭抢</li>
            </ul>
        </div>
    </div>

</body>

10、transform二维变换
移动、缩放、旋转、斜切

 <style>
        *
            padding: 0;
            margin: 0;
        
        div
            width: 100px;
            height: 100px;
            background-color: red;
            margin-left: 200px;
            margin-top:10px;
            /*添加过渡效果  css样式名称 耗时*/
            transition: transform 2s;
        
        /*移动translate*/
        div:first-of-type:active
            /*使用transform实现元素的移动 a.移动是参照元素的左上角 b.执行完毕之后会恢复到原始状态
            1.如果只有一个参数就代表x方向
            2.如果有两个参数就代表x/y方向*/
            /* transform: translate(100px); */
            /* transform: translate(400px,500px); */
            transform: translate(0px,500px);

            /*添加水平或者垂直方向的移动*/
            transform:translateX(300px);
            /* transform:translateY(300px); */
        
        /*缩放:scale*/
        div:nth-of-type(2):active
            /*实现缩放  1指不缩放,>1.01放大  <0.99缩小  参照元素的几何中心
            1.如果只有一个参数,就代表x和y方向都进行相等比例的缩放
            2.如果有两个参数,就代表x/y方向*/
            /*transform: scale(2);*/
            /*transform: scale(2,1);*/
            /*缩放指定的方向 */
            /*transform:scaleX(0.5);*/
            transform:scaleY(0.5);
        
        /*旋转:rotate*/
        div:nth-of-type(3)
            /*设置旋转轴心
            1.x y
            2.关键字:left top right bottom center*/
            background-color: purple;
            transform-origin: left top;
        
        div:nth-of-type(3):active
            /*transform:rotate(-90deg);
            transform: translateX(700px);*/
            /*同时添加多个transform属性值 先移动后*/
            transform: translateX(700px) rotate(-90deg);
            /*transform: rotate(-90deg) translateX(700px);*/
        
        /*斜切:skew*/
        div:nth-of-type(4):active
            background-color: blue;
            /*如果角度为正,则往当前轴的负方向斜切,如果角度为,则往当前轴的正方向斜切*/
            transform:skew(-30deg);
            /*transform:skew(30deg,-30deg);*/
            /*设置某个方向的斜切值*/
            transform:skewX(30deg);
            transform:skewY(30deg);
        
    </style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</body>

11、选择扑克牌
12、360碎片整合
13、任意元素居中

<style>
        *
            padding: 0;
            margin: 0;
        
        .box
            width: 400px;
            height: 400px;
            border-radius: 200px;
            background-color: #ccc;
            margin:100px auto;
            position: relative;
        
        .rec
            width: 200px;
            height: 200px;
            background-color: red;
            position: absolute;
            /*定位的百分比是参照父容器的宽高*/
            left: 50%;
            top: 50%;
            /*使用transform实现元素的居中  百分比是参照元素本身的宽高*/
            transform: translate(-50%,-50%);
            /*transform: translate(-50px,-50px);*/
        
    </style>
</head>
<body>
<div class="box">
    <div class="rec"></div>
</div>
</body>

14、三维变换

  <style>
        *
            padding: 0;
            margin: 0;
        
        div
            width: 100px;
            height: 100px;
            background-color: red;
            margin-left: 200px;
            margin-top:10px;
            /*添加过渡*/
            transition: transform 2s;
        
        /*添加三维移动--3D移动*/
        div:first-of-type:active
            /*translate3d(X方向的偏移,Y方向的偏移,Z方向的偏移)*/
            /*transform: translate3d(400px,0,0);*/
            transform: translate3d(400px,400px,0);
            /* transform: translate3d(0px,0px,400px); */
        
        /*添加三维缩放*/
        div:nth-of-type(2):active
            /*scale3d(x方向上的缩放,y方向的缩放,z方向的缩放)
            >1.01 放大   <0.99 缩小*/
            transform:scale3d(2,0.5,10);
            /* transform:scale3d(1,1,10); */
        
        /*添加三维旋转*/
        div:nth-of-type(3):active
            /*rotate3d(x,y,z,angle):
            x:代表x轴方向上的一个向量值
            y:代表y轴方向上的一个向量值
            z:代表z轴方向上的一个向量值*/
            transform: rotate3d(1,1,1,330deg);
        
    </style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</body>

h5_4

1、立方体
2、动画添加

  div
            width: 100px;
            height: 100px;
            background-color: red;

            /*添加动画效果*/
            /*1.animation-name:指定动画名称*/
            animation-name: moveTest;
            /*2.设置动画的总耗时*/
            animation-duration: 2s;
            /*3.设置动画的播放次数,默认为1次  可以指定具体的数值,也可以指定infinite(无限次)*/
            animation-iteration-count: 1;
            /*4.设置交替动画  alternate:来回交替*/
            animation-direction: alternate;
            /*5.设置动画的延迟*/
            animation-delay: 2s;
            /*5.设置动画结束时的状态:默认情况下,动画执行完毕之后,会回到原始状态
            forwards:会保留动画结束时的状态,在有延迟的情况下,并不会立刻进行到动画的初始状态
            backwards:不会保留动画结束时的状态,在添加了动画延迟的前提下,如果动画有初始状态,那么会立刻进行到初始状态
            both:会保留动画的结束时状态,在有延迟的情况下也会立刻进入到动画的初始状态*/
            animation-fill-mode: both;
            /*6.动画的时间函数*/
            animation-timing-function: linear;
            /*设置动画的播放状态  paused:暂停   running:播放*/
            animation-play-state: running;
        

        /*创建动画*/
        @keyframes moveTest 
            /*百分比是指整个动画耗时的百分比  10s*/
            /*0%
                transform: translate(0,0);
            */
            /*from:0%*/
            from
                transform: translate(0,0) rotate(45deg);
            
            /*0~1*/
            50%
                transform: translate(0,500px);
            
            /*1~2*/
            /*100%
                transform: translate(500px,600px);
            */
            /*to:100%*/
            to
                transform: translate(500px,600px);
            
        
    </style>
</head>
<body>
<div></div>
<input type="button" value="播放" id="play">
<input type="button" value="暂停" id="pause">
<script>
    var div=document.querySelector("div");
    document.querySelector("#play").onclick=function()
        div.style.animationPlayState="running";
    
    document.querySelector("#pause").onclick=function()
        div.style.animationPlayState="paused";
    
</script>
</body>

3、无缝轮播案例
4、钟表案例
5、web字体、字体图标
6、多列布局

   .wrapper 
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            /*设置多列布局*/
            /*1.设置列数*/
            column-count: 3;
            /*2.添加列间隙样式,与边框样式的添加一样*/
            column-rule: dashed 3px red;
            /*3。设置列间隙大小*/
            column-gap: 50px;
            /*4.设置列宽
            原则:取大优先
            1.如果人为设置宽度更大,则取更大的值,但是会填充整个屏幕,意味最终的宽度可能也会大于设置的宽度--填充满整个屏幕
            2.如果人为设置宽度更小,使用默认计算的宽度*/
            column-width: 200px;
        
        h4
            /*设置跨列显示  1  / all*/
            column-span: all;
        

7、flex布局
display

 display: flex;

flex-start

flex-start:让子元素从父容器的起始位置开始排列
            flex-end:让子元素从父容器的结束位置开始排列
            center:让子元素从父容器的中间位置开始排列
            space-between:左右对齐父容器的开始和结束,中间平均分页,产生相同的间距
            space-around:将多余的空间平均的分页在每一个子元素的两边 margin:0 auto.造成中间盒子的间距是左右两边盒子间距的两倍*/

flex-wrap、flex-direction-(flex-flow)

  /*flex-flow:是flex-wrap和flex-direction的综合
  
            flex-wrap:控制子元素是否换行显示,默认不换行
                nowrap:不换行--则收缩
                wrap:换行
                wrap-reverse:翻转,原来是从上到下,翻转后就是从下到上来排列*/
          
            /*flex-direction:设置子元素的排列方向:就是用来主轴方向,默认主轴方向是row(水平方向)
                row:水平排列方向,从左到右
                row-reverse:水平排列方向,从右到左
                column:垂直排列方向,从上到下
                column-reverse:垂直排列方向,从下到上*/
        

flex-grow

flow-grow:可以来扩展子元素的宽度:设置当前元素应该占据剩余空间的比例值
            比例值计算 :当前空间的flex-grow/所有兄弟元素的flex-grow的和
            flex-grow的默认是0:说明子元素并不会去占据剩余的空间

flex-shrink

flex-shrink:定义收缩比例,通过设置的值来计算收缩空间
             比例值计算 :当前空间的flex-shrink/所有兄弟元素的flex-shrink的和
            默认值为1

flex

flex是用来设置当前伸缩子项占据剩余空间的比例值

align-items

align-items:设置子元素(伸缩项)在侧轴方向上的对齐方式
            center:设置在侧轴方向上居中对齐
            flex-start:设置在侧轴方向上顶对齐
            flex:end:设置在侧轴方向上底对齐
            stretch:拉伸:让子元素在侧轴方向上进行拉伸,填充满整个侧轴方向>> 默认值
            baseline:文本基线*/

8、伸缩菜单项目案例
9、flex网站练习

以上是关于h5的主要内容,如果未能解决你的问题,请参考以下文章

H5--第四课

如何允许自动调整UIButton的大小以满足间距约束

h5页面怎么做 h5页面如何做

H5多列布局

h5网页在微信里打开 右上角分享到微信好友或者朋友圈

H5C3--圆角