html5+css3总结(一步到位)

该博客围绕HTML5和CSS3展开,涵盖新增标签属性、选择器、过渡动画、弹性盒子、媒体查询、绘图、新增API及客户端存储等内容。详细介绍了各部分的特性和使用方法,如H5新增标签用途、CSS3选择器规则、动画效果实现等,适用于前端开发学习。

html5+css3

day1(新增标签属性)

1、H5新增标签
  • header(用来定义网页的头部)
  • nav(用来定义网页的导航栏)
  • main(用来定义网页的主体内容)
  • aside(用来定义网页的侧边栏)
  • artice(用来定义网页当中一段独立的文章)
  • setion(用来定义网页当中的一块区域)
  • footer(用来定义网页当中的底部)
2、H5常用新属性
input新增type类型

email:邮箱

    tel:手机号

    url:路径

    number:数值

    search:搜索(语义化 )

    range:滑块

    time:时间

    week:周

    date:年月日

    month:月
3、表单属性

placeholder:占位符 提示信息

    autofocus : 自动获取焦点

    multiple : 支持多文件上传

    autocomplete: 当提交过表单内容之后规定 某个表单控件的提示内容 关闭和打开

    required : 必填项

    tabindex : 指定表单控件获取焦点的顺序  ‘’2‘’
4、data- 自定义属性
      data-自定义的属性名

   <li data-index="0">肉类</li>

    <li data-index="1">蔬菜</li>

    <li data-index="2">水果</li>

    <li data-index="3">熟食</li>

    <li data-index="4">花生豆</li>
5、音频

多媒体音频标签 audio

 controls 是否显不默认播放控件

 autoplay 自动播放(目前很多浏览器不支持自动播放) 

  loop 循环播放
6、视频

视频标签 video

 autoplay 自动播放(18年开始,谷歌浏览器不支持自动播放)

 muted 静音播放

 controls 是否显示默认播放控件 

 loop 循环播放

 width 设置播放窗口宽度

 height 设置播放窗口的高度
7、引入外部静态资源
<iframe src="">

day2(新增选择器)

1、css3兼容性

/* 浏览器内核 */

        /* IE */

        /* O */

        /* 苹果 */

        /* 火狐 */

        /* 谷歌 */

/* IE */

        /* -ms-transition: ; */

        /* O */

        /* -o-transition: ; */

        /* 苹果 */

        /* -webkit-transition: ; */

        /* 火狐 */

        /* -moz-transition: ; */
2、相邻兄弟选择器
span+div {

        color: red;

    }
3、匹配选择器

位于div 后面的所有span元素都会被选中

.content div ~ span{

        color: red;
    }
4、属性选择器

[attribute]用于选取带有指定属性的元素。

[title] {

        color: red;

    } 

   [attribute=value] 用于选取带有指定属性和值的元素。

    [data-index="1"]{

        color: red;

    } 

    [attribute^=value]匹配属性值以指定值开头的每个元素。 

   [class^="box"]{

        color: red;

    } 

     [attribute$=value]匹配属性值以指定值开头的每个元素。 

    [class$='x']{

        color: red;

    } 

    [attribute*=value]匹配属性值中包含指定值的每个元素。 

    [class*='2'] {

        color: red;

    } 

     [attribute~=value]用于选取属性值中(包含)指定词汇的元素,还可以空格为分隔符。

  [class~="box2"] {

        color: red;

    } 

     [attribute|=value]用于选取带有以指定值(开头)的属性值的元素,还可以连字符为分隔符。

    [class|='box1']{

        font-family: "华文彩云";

    }

    鼠标选中样式

    ::selection {

        background-color: pink;

        color: white;

    } 
5、整体结构性伪类选择器
     :last-child 

     :first-child 

      :last-of-type 

      :first-of-type
6、对指定序号的子元素设置样式
(从前往后数)	

:nth-child(n)

:nth-of-type(n)

2n偶数 2n+1奇数 odd奇数 even偶数

(从后往前数)

:nth-last-child(n)

:nth-last-of-type(n)
7、其他伪类选择器
:root:将样式应用到页面的根元素中。

root选择器就是将样式应用到根元素中。在整个HTML页面中,指的就        是整个“html”部分

 :empty 指定当元素内容为空白时使用的样式。

 :not(selector)排除selector选择器选中的元素,不对它们应用样式解析。

:target 对页面中某个target元素指定样式,该样式只在用户单击了页面中的链接,并且跳转到target元素后生	效。 
8、表单状态伪类选择器
:disabled 指定当前元素处于不可用状态时的样式。

 :enabled 指定当前元素处于可用状态时的样式。

:checked 指定表单中单选框或复选框处于选中状态时的样式。
9、内容选中伪类

::selection{

        color: purple;
        background-color: aqua;
    }
10、内容追加为元素
:before是css2的写法

   ::before是css3的写法

: :before :向当前的元素前面追加内容(创建一个伪元素,其将成为匹配选中的元素的第一个子元素)

 ::after:向当前的元素内容后面追加内容(创建一个伪元素,作为已选中元素的最后一个子元素) 
11、JS新增选择器
根据id获取元素

getElementById(id);

根据类名获取元素

getElementsByClassName(classname)[0];

根据标签名获取元素

getElementsByTagName(tagname);

JS新增一个选择器

 获取一个元素

document.querySelector(‘selector’);

获取多个元素

document.querySelectorAll();

12、多重背景
 background-image: url(),url()url();

        background-repeat: no-repeat;

        background-size: 200px 200px;

        background-position: 0 0, 50% 50%, right bottom;
13、线性渐变

background-image: linear-gradient(to left bottom, pink, skyblue, springgreen);

14、径向渐变

background-image: radial-gradient(#00FFFF, #00FA9A, #000000);

15、透明度
opacity: 0; 

/* 0-1 */
16、filter过滤
       grayscale设置灰度

       filter: grayscale(100%);

    过滤

        filter: blur(100px);
17.css函数

hsla 表示色相-饱和度-亮度(Hue-saturation-lightness)模式。

hsla(颜色值0-360, 饱和度0%-100%,亮度0%-100%, 透明度0-1)

     calc() 计算

width: calc(100% - 100px);

day3(过渡动画)

1、transition过渡

过渡:给用户呈现 由一种样式到另一种样式的过程

       指定当前box具有过渡效果

         过渡的属性名称 

         transition-property: width height; 

        过渡花费的时间 

        transition-duration: 1s; 

         过渡的曲线 

        匀速 

         transition-timing-functio: linear; 

         缓慢 

         transition-timing-function: ease; 

         加速 由慢到快 

         transition-timing-function: ease-in; 

         快慢快 

         transition-timing-function: ease-in-out; 

        过渡何时开始 

         transition-delay: ; 

    过渡的简写形式 

        transition: all 1s ease;
2、平移

/* transform 变形 */

        /* 平移 */

        /* transform: translate(x,y); */

        transform: translate(100px, 0px);
3、缩放
     transform: scale(x,y); 

       transform: scale(0.5, 0.5);
4、旋转
    transform: rotate(deg); 

        transform: rotate(30deg);
5、转换原点
transform-origin: left bottom;
6、倾斜
transform: skew(30deg,30deg);
7、3D地旋转
左手定则

    transform: rotateX(180deg); 

        transform: rotateY(180deg);

        transform: rotateZ(180deg); 
8、背部可见性
 backface-visibility: hidden;(不可见)

 backface-visibility: visible;(可见)
9、透视
perspective: 1000px;
10、保留子元素的3D位置
 transform-style: preserve-3d;
11、多种变幻
transform: rotateY(40deg) translateX(100px);
12、animation动画

创建动画

   创建一个自定义动画 

     @keyframes 动画名称{

        两个动画帧

        from{}

        to{}

  	  } 

应用到目标元素上

         动画名称 

        animation-name: move;

         动画时间 

        animation-duration: 1s;

        动画曲线 

        animation-timing-function: ease;

         动画何时开始 

         animation-delay: 2s; 

         动画次数 

        animation-iteration-count: infinite;

         动画是否暂停 

        animation-play-state: running;

         动画是否逆向 

         reverse 颠倒 

         alternate 交替 

         alternate-reverse 颠倒交替 

        animation-direction: alternate;

        动画之外的状态 

       停留到结束的时刻

         animation-fill-mode: forwards; 

动画简写

        animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向; 

        animation: move 4s ease infinite;
13、多个动画帧

@keyframes move {

        0% {

            transform: translateX(0px) translateY(0px);

        }

        25% {

            transform: translateX(700px) translateY(0px);

        }

        50% {

            transform: translateX(700px) translateY(700px);

        }

        75% {

            transform: translateX(0px) translateY(700px);

        }

        100% {

            transform: translateX(0px) translateY(0px);

        }

    }

day4(弹性盒子)

1、把父元素设置为 弹性盒模型
        display: flex;
2、父元素的属性flex-direction

项目(子元素们)会默认按照主轴排列

    	flex-direction: 

          row 默认值        主轴正常排列

          row-reverse       主轴颠倒排列 

          column            副轴排列 

          column-reverse    副轴颠倒排列; 
3、父元素的属性flex-wrap
flex-wrap: nowrap(默认) | wrap | wrap-reverse; 

        flex-wrap: nowrap;

        flex-wrap: wrap;

         flex-wrap: wrap-reverse; 
4、父元素的属性flex-flow
	简写形式

         flex-flow: <flex-direction> || <flex-wrap>; 
5、父元素的属性justify-conent
         主轴上面的对齐方式 

         justify-content: 

        flex-start(默认值)  正常主轴排列 

        flex-end            主轴末尾对齐 

        center              主轴居中对齐 

        space-between       主轴两端对齐 

        space-around        元素之间的间距一致 左右两边的间距加起来=元素之间的间距; 
5、父元素的属性aling-items
副轴上面的对齐方式 (适用单行)

    	align-items:flex-start   正常副轴排列

	flex-end    末尾对齐 

	center      居中对齐 

	baseline    基线对齐

	stretch;  把子元素的高和父元素一致
6、父元素的属性align-conent

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

	align-content: (适用多行)

        stretch(默认)   默认排列方式

        flex-start      开始对齐

        flex-end        末尾对齐 

        center          居中对齐 

        space-between   两端对齐 

        space-around    元素之间的间隙一致
7、子元素属性order
 order规定子元素 (项目)的排列顺序 

     order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。 

order: 1;
8、子元素属性flex-grow
  如果每一个项目没有宽度  那么 flex-grow: 1; 就代表平均分配宽度

        flex-grow: 1;

    flex-grow属性定义项目的放大比例,默认为0 即如果存在剩余空间,也不放大。

    (子元素宽度之和大于父元素时,没有效果)
9、子元素属性flex-shrink
	flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。值越大,越缩小       最小为盒子宽度

	 flex-shrink: 2;

10、子元素属性flex-

10、子元素属性flex-basis
 flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间 

 flex-basis 跟width一样 

 flex-basis: 200px;
11、子元素属性flex
flex:flex-grow  flex-shrink   flex-basis;

默认

	flex: 0 1 auto ;

	flex: none;

平分

	flex: 1 1 auto ;

            flex: auto;

	flex:1 1 0% 

            flex: 1;

缩小(内容宽度)

	  flex:0 1 0%

             flex: 0; 
12、不一样的对齐方式
   align-self属性允许单个项目有与其他项目不一样的对齐方式 

align-self: auto | flex-start | flex-end | center | baseline | stretch; 

.container .item:nth-child(1) {

        align-self: flex-start;

        height: 200px;

    }

day5(媒体查询)(移动端开发)

1、媒体查询
 max-width 最大宽度 (当小于最大宽度的时候应用)

     min-width 最小宽度  (当大于最小宽度的时候应用)

当前屏幕小于992px会应用当前媒体查询里面的样式 

and 前后有空格,不然会报错

@media screen and (max-width:992px) {

        .box {

            width: 750px;

            height: 400px;

            background-color: skyblue;

                  }

       }

 当前屏幕大于768px 应用媒体查询里面的样式 

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

        .box {

            background-color: purple;

        }

    }
2、适配不同屏幕大小

创建多个媒体查询

   当屏幕小于1200px 

    @media screen and (max-width:1200px) {

        .container {

            width: 970px;

        }

        .container .content {

            width: 200px;

        }

    }

   当屏幕小于992 px

    @media screen and (max-width:992px) {

        .container {

            width: 750px;

        }

        .container .content {

            width: 175px;

        }

    }

   当屏幕小于768px 

    @media screen and (max-width:768px) {

        .container {

            width: 100%;

            flex-wrap: wrap;

        }

        .container .content {

            width: 100%;

        }

    }
3、多个条件媒体查询

创建媒体查询

     当前屏幕大于768 小于992时应用样式 

    @media screen and (min-width:768px) and (max-width:992px) {

        .container {

            width: 750px;

        }

        .container .content {

            width: 175px;

        }

    }
4、引入不同的css文件
<link rel="stylesheet" media="screen and (max-width:992px)" href="./css/w992.css">

<link rel="stylesheet" media="screen and (max-width:768px)" href="./css/w768.css">

css同上(2、适配不同屏幕大小)

5、视口

布局视口

        在PC端开发的页面 切换到了移动设配上面 就会显示不全

        此时布局视口要远大于 移动设配的宽度

视觉视口

        用户正在看到的网页的区域

理想视口

        布局视口 等于 视觉视口
6、rem

html{

        font-size: 10px;

    }

     那么1rem = 10px 

     要通过媒体查询 根绝不同屏幕的大小 为html设置 font-size 

     rem 相对于html的字体大小 改变而改变 

限制当前设备宽度最大能够到达多少rem

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

        /* 18.75 */      375/18.75=20

	20px=1rem

        html {

            font-size: 20px;

        }

    }

day6(绘图)

1、canvas

具有默认宽高300*150

设置宽高在标签里面

    您当前浏览器不支持canvas 请升级浏览器版本吧

</canvas>
2、绘制直线

您当前浏览器不支持canvas 请升级浏览器版本吧

 1.获取元素

    var canvas = document.querySelector("#can");

     2.获取画笔

    var myCan = canvas.getContext('2d');

    console.log(myCan);

     3.定义一个起点(绘制一个起点)

     moveTo(x,y) 用来绘制起点

    myCan.moveTo(200, 200);

    /4.绘制直线

     lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标

    myCan.lineTo(600, 600);

     5.填充图形

    myCan.stroke();
3、画笔的颜色和粗细
    画笔的颜色和粗细要在填充之前修改

    myCan.strokeStyle = "orange";

    myCan.lineWidth = 10;
4、绘制矩形
 1.获取元素

    var canvas = document.querySelector("#can");

    2.获取画笔

    var myCan = canvas.getContext('2d');

    console.log(myCan);

    路径的开始

    开始路径

    myCan.beginPath();

    3.定义一个起点(绘制一个起点)

     moveTo(x,y) 用来绘制起点

    myCan.moveTo(200, 200);

    4.绘制直线

    lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标

    myCan.lineTo(200, 400);

    myCan.lineTo(600, 400);

    myCan.lineTo(600, 200);

     画笔的颜色和粗细要在填充之前修改

    myCan.strokeStyle = "orange";

    myCan.lineWidth = 10;

     闭合路径

    myCan.closePath();

     5.填充图形

    myCan.stroke();
5、绘制三角形
   1.获取元素

    var canvas = document.querySelector("#can");

     2.获取画笔

    var myCan = canvas.getContext('2d');

    console.log(myCan);

     路径的开始

     开始路径

    myCan.beginPath();

     3.定义一个起点(绘制一个起点)

     moveTo(x,y) 用来绘制起点

    myCan.moveTo(400, 200);

     4.绘制直线

     lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标

    myCan.lineTo(200,500);

    myCan.lineTo(600,500);

     画笔的颜色和粗细要在填充之前修改

    myCan.strokeStyle = "orange";

    myCan.lineWidth = 10;

     闭合路径

    myCan.closePath();

     5.填充图形

    myCan.stroke();
6、快速创建矩形
1.获取元素

    var canvas = document.querySelector("#can");

     2.获取画笔

    var myCan = canvas.getContext('2d');

    myCan.rect(x, y, width, height);

    myCan.rect(200, 200, 400, 100);

    myCan.strokeStyle = "pink";

    myCan.lineWidth = 10;

     填充

    myCan.stroke();
7、快速创建描边矩形
 1.获取元素

    var canvas = document.querySelector("#can");

     2.获取画笔

    var myCan = canvas.getContext('2d');

     myCan.strokeRect(x, y, width, height);

    myCan.strokeRect(200, 200, 400, 200);
8、快速创建填充矩形
      1.获取元素

    var canvas = document.querySelector("#can");

      2.获取画笔

    var myCan = canvas.getContext('2d');

    console.log(myCan);

     myCan.fillRect(x, y, width, height);

     fillStyle 用来修改 填充颜色

    myCan.fillStyle = "pink";

    myCan.fillRect(200, 200, 400, 200);
9、填充三角形

// 1.获取元素

    var canvas = document.querySelector("#can");

    // 2.获取画笔

    var myCan = canvas.getContext('2d');

    // console.log(myCan);

    // 路径的开始

    // 开始路径

    myCan.beginPath();

    // 3.定义一个起点(绘制一个起点)

    // moveTo(x,y) 用来绘制起点

    myCan.moveTo(400, 200);

    // 4.绘制直线

    // lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标

    myCan.lineTo(200,500);

    myCan.lineTo(600,500);

    // 画笔的颜色和粗细要在填充之前修改

    myCan.strokeStyle = "orange";

    myCan.lineWidth = 10;

    // 填充图形

    myCan.fillStyle = "purple"

    myCan.fill();

    // 闭合路径

    myCan.closePath();

    // 5.填充图形

    myCan.stroke();
10、清除矩形
   cxt.clearRect(x, y, width, hegiht);

    myCan.clearRect(260, 380, 100, 100);
11、圆弧
var can = document.querySelector('#can');

    // 获取画笔

    var mycan = can.getContext('2d');

    // 弧度和角度的转换公式: rad = deg*Math.PI/180; deg=rad*180/Math.PI

    // 语法:cxt.arc(x, y, r, startAngle, endAngle, counterclockwise);

    // 开始路径

    mycan.beginPath();

    mycan.moveTo(400,400);

    var strat = 0 * Math.PI / 180;

    var end = 90 * Math.PI / 180;

    // mycan.arc(400, 400, 200, strat, end, false);

         默认是false。true是逆时针,false:顺时针

    mycan.arc(400, 400, 200, strat, end, true);

    // 结束路径

    mycan.closePath();

    mycan.stroke();
12、绘制文本
    mycan.fillStyle = "black";   字体颜色

    mycan.font = "700 30px serif";   字体大小

 mycan.fillText(data[0].title, 450, 500);   ’‘   x   y

day7(HTML5新增API)

1、svg
 canvas 输出的是⼀整幅画布, 就像⼀张图⽚⼀样,放⼤会失真或者锯⻮。 

  svg 输出的图形是⽮量图形,后期可以修改参数来⾃由放⼤缩⼩,不会失真和锯⻮
2、location

// http 协议

    console.log(window.location);

    // 一个完整的url都包含什么

    // 协议+域名+端口号+虚拟目录+文件名+?参数+#锚链接

    // http://127.0.0.1:5500/04-H5-C3/07h5c3/01-location.html?id=1&gender=男#like

    // origin

    // 返回页面来源的域(当前协议 + 主机名+端口号)

    console.log(location.origin);

    // file:// 文件协议 没有域名

    // host返回一个URL的主机名和端口

    console.log(location.host);

    // hostname返回URL的主机名

    console.log(location.hostname);

    // port返回一个URL服务器使用的端口号

    console.log(location.port);

    // pathname返回的URL路径名。

    console.log(location.pathname);

    // protocol返回一个URL协议

    console.log(location.protocol);

    // href返回完整的URL

    console.log(location.href);

    // http://127.0.0.1:5500/%E7%81%AB%E8%8A%B1238/%E8%AF%BE%E7%A8%8B/04-HTML5-CSS3/07-html5-css3/code/02-location.html

    // hash返回从井号 (#) 开始的 URL(锚)

    console.log(location.hash);
3、search
 // 返回一个完整的url

    console.log(location.href);

    // search返回从问号 (?) 开始的 URL(查询部分)

    console.log(location.search);

    var arr = location.search.split("?")[1].split("&");

    console.log(arr);

    var obj = {};

    for (var i = 0; i < arr.length; i++) { 

       console.log( arr[i].split("="));;

       obj[arr[i].split('=')[0]] = arr[i].split('=')[1]

    }

    console.log(obj);

    var _id = Math.floor(Math.random()*10);

    btn.onclick = function(){

        location.href = "./01-svg.html?id="+_id;

    }
4、locaiton
// assign()加载新的文档。跟href一样,可以跳转页面

    // replace()用新的文档替换当前文档。替换当前页面,不记录历史,不可以后退

    // reload()重新加载当前文档。

 location.assign("http://www.4399.com")
5、跳转手机端和PC端

if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {

        window.location.href = "./01-svg.html?id=1";     //跳转到手机端的页面

    } else {

        // window.location.href = "./05-search.html?id=1";     //跳转到pc端的页面

    }
6、map

引用百度地图API

7、online
 // 判断用户设备是否处于脱机状态(没网)

    // navigator.onLine

    console.log(navigator.onLine);

    if (navigator.onLine) {

        console.log("网络状态处于正常");

    } else {

        console.log("世界上最遥远的距离就是没网");

    }

    // 当前设备网络状态正常

    window.ononline = function () {

        console.log('你的浏览器在线工作');

    };

    // 当前设备处于没网状态

    window.onoffline = function () {

        console.log('你的浏览器离线工作');

    }
8、History对象

// 历史 包含了用户在浏览当中访问过的 记录

    console.log(window.history);

    // 返回浏览器历史列表中的 URL 数量。

    console.log(history.length);

    // 返回浏览器在当前 URL 下的状态信息,如果没有调用过

 pushState() 或 replaceState() 方法,则返回默认值 null。

    console.log(history.state);

// 返回历史列表当中的上一个访问记录

// 跳转页面

        history.back();

// 加载历史列表当中的下一个

        history.forward();

// 刷新页面

        // history.go(0)

        // 前进

        // history.go(1)

        // 后退

        history.go(-1);

// 用于在当前历史记录当中添加一个记录

    // history.pushState();

    // 用来修改 History 对象的当前记录,其他都与pushState()方法一模一样。

    // history.replaceState();

    // ctrl + shift + T 恢复之前关闭的标签页

    // try

    // 把你觉得可能会报错的代码放在try里面

    // catch里面会给你返回错误的结果
9、读取文件

elefiles.onchange = function () {

        console.log(this.value);

        // FileList

        console.log(this.files[0]);

        console.log(this.files);

        // 创建实例化对象

        var reader = new FileReader();

        console.log(reader);

        // reader.readAsDataURL():DataURL形式读取文件

        // console.log();

        reader.readAsDataURL(this.files[0])

        // 当文件读取完成时进行显示图片结果

        reader.onload = function () {

            console.log(reader.result);

            console.log(123);

            _img.style.display = "block";

            _img.src = reader.result;

        }

    }

 // 1.给文件控件input 添加事件监听 监听内容的改变

    // 2.创建文件读取的 对象 new FileReader();

    // 3.使用readAsDataURL读取用户上传的this.files[0]

    // 4.当读取完成之后 _img.src = reader.result; 完成缩略图展示
10、读取文本
    elefiles.onchange = function () {

        // 1.获取当前上传的文件

        console.log(this.files);

        // 2.创建FileReader对象

        var reader = new FileReader;

        for (var i = 0; i < this.files.length; i++) {

            readerEveryFile(this.files[i], list);

        }

    }

    // everyfile 每次调用函数都必须传进一个文件

    // ele 元素

    function readerEveryFile(everyfile, ele) {

        var reader = new FileReader;

        // 一次只能读一个

        reader.readAsText(everyfile);

        reader.onload = function () {

            var li = document.createElement("li");

            li.innerText = reader.result;

            ele.appendChild(li);

        }

    }

day8(客户端存储)

1、localStorage
 // 同源策略

    // 协议 域名 端口号一致 就可以访问其内容

    // 如果其中一项不同就违背了同源策略 就访问不到 - 跨域

    // 永久性存储 

    // window.localStorage

    // setItem 设置当前值(key,value)

 localStorage.setItem('anhao', '天王盖地虎');

    // getItem 获取存储在本地的数据(key)

localStorage.getItem("anhao")

    // removeItem 删除某一个本地存储数据(key)

localStorage.removeItem("anhao")

    // clear 清空所有

localStorage.clear()
2、sessionStorage

// 临时存储 当页面关闭时就失效

    sessionStorage.setItem("sessionCode", "to day is 不热");

    // sessionStorage 即使同源也不共享数据 只在当前页面有效

    var rel = sessionStorage.getItem("sessionCode")

    console.log(rel);

    // 删除

    // sessionStorage.removeItem("sessionCode");

    // 清空所有

    // sessionStorage.clear();
3、存储事件触发

// 这个页面触发 存储事件

    // - key : 修改或删除的key值,如果调用clear()时,该属性值为null

    // - newValue: 新设置的值,如果调用removeItem()时,该属性值为null

    // - oldValue : 调用改变前的value值;添加新项时,该属性值为null

    // - storageArea : 当前的storage对象

    // - url : 触发该存储变化脚本所在文档的URL(也就是说哪个页面修改的数据)

    window.addEventListener("storage", function (obj) {

        console.log(obj);

        console.log(obj.key);

        console.log(obj.newValue);

        console.log(obj.oldValue);

        console.log(obj.storageArea);

        console.log(obj.url);

    })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值