HTML5 CSS3

HTML5

HTML即超级文本标记语言(HyperText Markup Language),它是标准通用标记语言下的一个应用,也是一种规范,一种标准它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。
HTML5是超文本标记语言(HTML)的第五次重大修改。

新增标签及属性

结构标签:
    header  页眉(结构块的头部,不仅仅是在整个网页的头部)
    nav     导航
    main    文档主要内容
    article 文章
    aside   旁白,在旁边
    footer  页脚,底部
多媒体标签及其属性:
    audio (音频)标签:
        controls 播放器控制面板
        autoplay 自动播放
        loop 循环
    video (视频)标签:
        controls 播放器控制面板
        autoplay 自动播放
        loop 循环
        width/height 设置一个后,视频会等比例缩放,同时设置两个并不会都生效
        poster 让指定图片作为视频封面
        source(源)标签:放在video标签中,把video的src属性放到source标签上
    (把每种格式的视频地址放置在source标签中的src属性中,让浏览器自动选择支持的格式)
标签的自定义属性:
    <p data-school-name="abc">自定义属性</p>
    data-开头,多个单词用“-”连接
    通过js获取方式//
    var  p = document.querySelector("p");
    var result = p.dataset["schoolName"];
    //获取时,使用驼峰命名法连接。否则无法获取到值

新增表单元素

新增标签:
    keygen  加密表单数据
        例:<keygen></keygen>  写在submit前面
        首先在本地生成公钥和私钥,然后通过私钥加密数据,接着把加密后的数据以及公钥通过请求
      报文上传到服务器。服务器通过公钥来解密数据。
    output  输出一段文字
        例:<output>总金额:¥100.00</output>
        没有特别的含义,也不可以修改;唯一的好处是,语义性更强
    datalist  为某个表单元素添加下拉选项  类似select, 在需要添加的表单元素中 list="id"
        例:<input type="text" list="year">
        <datalist id="year">
            <option>1992</option>
            <option>1993</option>
        </datalist>
    progress  进度条
        <progress max="100" value="60"></progress>
    meter  度量器
        <meter max="100" min="0" low="40" height="90" value="30"></meter>
新增type类型:
    input type="email"  
        //【邮箱】提供了默认的电子邮箱的完整验证,如不能满足验证,会阻止表单提交
    input type="tel"    
        //【电话】并无法实现电话号码验证(全球电话号码格式不同)。
          但其本质目的是为了能够在移动端打开数字键盘
    input type="url"    //【网址】可以验证是否是合法网址(http://)
    input type="number" //【数量】只能输入数字(e例外,科学记数法)
    (value="60"默认值 max="100"最大值 min="0"最小值 )
    input type="search" //【搜索】,可以在输入内容后提供删除按钮
    input type="range"  //【幅度】,类似音量选择
    (value="60"默认值 max="100"最大值 min="0"最小值 )
    input type="color" //【颜色选择器】提供一个颜色选择器
    input type="time"  //【时间选择器】提供一个时间选择器
    input type="date"  //【日历选择器】提供一个日历选择器
    input type="datetime-loacl"  //【时间和日期选择器】提供一个时间和日期选择器
    input type="month"  //【月份】
    input type="week"   //【星期】
新增属性:
    <input type="text" placeholder="请输入用户名" autofocus autocomplete="on" />
        placeholder 提示文本占位
        autofocus 网页打开时自动获取焦点
        autocomplete 自动提示
        (autocomplete的两个前提:1.成功提交过;2.当前input标签有name属性)

    <input type="tel" required pattern="^(\+86)?\d{10}$" />
        required 当前输入框 必须输入内容,否则阻止提交
        pattern 正则表达式(注意,在这里不需要写在//符号中)

    <input type="file" name="photo" multiple />
        multiple 可以选择多个文件

    <input type="email" name="email" multiple />
        multiple 可以输入多个邮箱地址,","分隔

    <input type="text" name="adress" form="myForm" />
        form属性,可以把没有在表单(id="myForm")中的元素,在该表单数据提交时,一起提交。

新增的接口

1.网络接口

<script>
    //online 网络连通事件
    //offline 网络断开事件

    window.addEventListener("online", function () {
        alert("网络连通了");
    })
    window.addEventListener("offline", function () {
        alert("网络断开了");
    })
</script>

2.全屏接口

<script>
    // requestFullScreen();//开启全屏
    // cancelFullScreen(); //退出全屏
    // fullScreenElement();//判断是否全屏
    // 注意: 不同浏览器需要添加不同的前缀
    /* chrome webkit
     * firefox moz
     * ie ms
     * opera o
     * */
    //注意: 全屏是针对元素设置, 退出全屏是针对文档设置, 判断是否全屏也是针对文档判断的
 例:
 var div = document.querySelector("#box");
 document.querySelector("#btn").addEventListener("click", ()=>{
    if(div.requestFullScreen){
        div.requestFullScreen();
    }else if(div.webkitRequestFullScreen){
        div.webkitRequestFullScreen();
    }else if(div.mozRequestFullScreen){
        div.mozRequestFullScreen();
    }
    // ...
 })
</script>

3.FileReader

<script>
    //reader.readAsDataURL(file[0]); //保存
    //reader.onload =function(){} //监听文件保存完毕
    //reader.result;//取出保存的文件
    upFile.onchange = function () {
        var reader = new FileReader();
        //类似于构造函数模式创建一个新的实例
        var file = upFile.files;//当文件上传窗口内容发生改变时,将其flies属性值取出
//注意: 由于文件上传窗口可以一次上传多个文件(multiple),所以其files属性获得的是伪数组
        reader.readAsDataURL(file[0]);
        //因为上传窗口未添加multiple属性,故取伪数组第一项即可
//将用户上传的文件及其路径以一种 二进制编码格式 保存在reader的readAsDataURL属性中
        reader.onload = function () {
            //因为文件解析保存需要时间,故监听其保存完毕后使用
        img.src = reader.result;
            //保存在对象reader.readAsDataURL中的值,通过reader.result 即可取出.
        }
    }
</script>

4.元素拖拽事件:

<script>
    //ondragstart 拖拽开始事件
    //ondragover 拖拽中事件
    //ondrop 拖拽空投事件
    document.ondragstart = function (event) {
        event.dataTransfer.setData("text/html", event.target.id);
//将被拖拽元素的 id 以 text/html 格式保存在事件对象的dataTransfer属性中,通过setData
    }
    document.ondragover = function (event) {
        event.preventDefault();
        //如需成功触发ondrop事件,必须先取消浏览器默认阻止拖拽,必须在dragover中取消
    }
    document.ondrop = function (event) {
        var tar = event.dataTransfer.getData("text/html");
        //取得dataTransfer属性中保存的被拖拽元素的 id ,通过getData方法
        event.target.appendChild(document.getElementById(tar));
    }
</script>

5.地理定位接口:

<script>
    var box = document.querySelector("#box");
    function getLocation() {
        if (navigator.geolocation) {  
        //通过导航获取 地理位置信息  (判断是否浏览器是否支持)
            navigator.geolocation.getCurrentPosition(success, defeat, option)
            //该方法会获取当前地理位置信息,由回调函数接收
            /*success:获取地理位置信息成功时执行的回调函数
             *defeat:获取地理位置信息失败时执行的回调函数
             *option:调整获取当前地理位置信息的方式
             * */
        } else {
            box.innerHTML = "Geolocation is not supported by this browser."
        }
    }

    function success(position) {
        position.coords.latitude; //经度
        position.coords.longitude; //纬度
        position.coords.accuracy; //精度
        position.coords.altitude; //海拔
    }
    function defeat(error) {
        switch (error.code) {
            case error.PERMISSION_DENIED:
                box.innerHTML = "User denied the request for Geolocation."
                break;
            case error.POSITION_UNAVAILABLE:
                box.innerHTML = "Location information is unavailable."
                break;
            case error.TIMEOUT:
                box.innerHTML = "The request to get user location timed out."
                break;
            case error.UNKNOWN_ERR:
                box.innerHTML = "An unknown error occurred."
                break;
        }
    }
    function option(eve) {
        eve.enableHighAccuracy = true;   //是否使用高精度
        eve.timeout = 3000;   //超时时间
        eve.maximumAge = 100;     //浏览器重新获取地理位置信息的间隔时间
    }
    //注意: 实时获取到用户的经纬度即可确定用户的位置, 
    也可藉此利用百度地图位置接口向用户展示地理位置信息
</script>

6.页面/本地存储

<script>
    //sessionStorage  【页面存储】
    /*  1.数据是在页面中临时存储的,其他页面和浏览器无法访问
     *  2.数据在当前页面关闭或浏览器关闭时,即时清除
     *  3.sessionStorage 存储器的大小在5M左右
     * */
    //localStorage  【本地存储】
    /*本地存储的特点:
     *  1.数据是存储在浏览器中的(硬盘里)浏览器其他页面可以访问(其他浏览器无法访问)
     *  2.除非手动清除,否则永久存在
     *  3.localStorage 存储器的大小在20M左右
     * */
    sessionStorage.setItem("userName", txt.value); //设置数据
    sessionStorage.getItem("userName"); //获取数据
    sessionStorage.removeItem("userName"); //移除数据
    localStorage.setItem("userName", txt.value); //设置数据
    localStorage.getItem("userName"); //获取数据
    localStorage.removeItem("userName"); //移除数据
</script>

7.应用程序缓存配置

<html lang="en" manifest="demo.appcache"><!--manifest 载货单,货单-->
<!--manifest="应用程序缓存清单文件的路径  建议文件的扩展名是appcache,
      这个文件的本质就是一个文本文件"-->

demo.appcache 文件书写语法如下:

CACHE MANIFEST
# 后面写注释,该文件告知浏览器需要缓存的文件清单列表
# 当前文档的第一句代码必须是CACHE MANIFEST关键字

#需要缓存的文件清单列表,以CACHE关键字开头
CACHE:
../images/l1.jpg
../images/l2.jpg
# *:代表所有文件

# 配置每一次都需要重新从服务器获取的文件清单列表,以NETWORK关键字开头
NETWORK:
../images/l3.jpg

# 配置如果文件无法获取则使用指定的文件进行替代,以FALLBACK关键字开头
FALLBACK:
../images/l4.jpg ../images/banner_1.jpg
# /:代表所有文件

CSS3

原文链接(https://segmentfault.com/n/1330000013610000)

CSS即层叠样式表(Cascading StyleSheet)。 在网页制作时采用层叠样式表技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。
CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括: 盒子模型、列表模块、超链接方式 、语言模块 、背景和边框 、文字特效 、多列布局等。

CSS3 新增选择器

【属性选择器】(E:element  attr:attribute)
    1. E(attr)    选择指定元素标签名 且 拥有指定属性名的 元素
    2. E(attr=value)   选择指定元素标签名E 且 拥有指定属性名attr 且 该属性值【是value】 的元素(严格匹配)
    3. E(attr*=value)  选择指定元素标签名E 且 拥有指定属性名attr 且 该属性值【有1个或多个value】 的元素
    4. E(attr^=value)  选择指定元素标签名E 且 拥有指定属性名attr 且 该属性值【以value开头】 的元素(严格匹配)
    5. E(attr$=value)  选择指定元素标签名E 且 拥有指定属性名attr 且 该属性值【以value结尾】 的元素(严格匹配)
    //此类型选择器中的*^$类似正则表达式中的含义, 但也有不同. 在正则中
    //+表示1个或多个; *表示0个或多个; ?表示0个或1个; ^严格模式开始; $严格模式结束
【伪类选择器】
    [兄弟伪类]:
    .cls + E   选择拥有cls类名的元素后面的第一个相邻的兄弟元素E
    .cls ~ E   选择拥有cls类名的元素后面的所有的兄弟元素E
    [父元素伪类]:
    E:first-child   选择E元素的父级元素中的第一个子元素 且必须是E类型元素,如果不是,无法起作用
    E:last-child   选择E元素的父级元素中的最后一个子元素 且必须是E类型元素,如果不是,无法起作用
    E:first-of-type   选择E元素的父级元素中的第一个E类型子元素,忽略掉其他类型元素
    E:last-of-type   选择E元素的父级元素中的最后一个E类型子元素,忽略掉其他类型元素
    E:nth-child(从1开始的索引 || 关键字 || 表达式:an+b)
        //选择E元素的父级元素中的指定条件的子元素 ( 正序 )
    E:nth-of-type(从1开始的索引 || 关键字 || 表达式:an+b)
        //选择E元素的父级元素中的指定条件的E类型子元素,忽略掉其他类型元素 ( 正序 )
    E:nth-last-child()   如果在nth后添加last则表示倒序
    E:nth-last-of-type()   如果在nth后添加last则表示倒序
    E:empty   选择E元素的父级元素中的内容为空的E类型元素(没有任何内容的,空格也没有)
    E:target   当E元素被锚点选中时
【伪元素选择器】
    E::before
    E::after
    //注意: 前后的伪元素都是添加在元素内部的!!!
    //设置伪元素时,必须添加content属性,即使内容为空
    //因为这两个伪元素是行内元素,所以如需设置宽高,则必须转换其显示方式
    E::first-letter   E元素中内容的第一个字符
    E::frist-line    E元素中内容的第一行
    E::selection    E元素中当前被选中内容的样式

边框圆角、阴影

【边框圆角】
    正方形(正圆):
    border-radius: 50%;
    border-radius: 10px 20px 30px 40px;(左上, 右上, 右下, 左下)
    矩形(椭圆):
    border-radius: 100px/50px; ("/"两边的值,分别表示xy值的距离)
    border-radius: 左上x 右上x 右下x 左下x/左上y 右上y 右下y 左下y (连写方式)
    如需给单独顶角设置, 可以写作:
    border-top-left-radius:
    border-top-right-radius:
    border-bottom-left-radius:
    border-bottom-right-radius:
【阴影】
    [文本阴影] text-shadow: x, y, blur, color;
    [边框阴影] box-shadow:h v blur spread color inset;
        h: 水平方向的偏移值
        v: 垂直方向的偏移值
        blur: 模糊度
        spread: 阴影的扩展和收缩,可选:默认0
        color: 颜色,可选:默认#000
        inset: 内阴影 ,可选:默认0

线性和径向渐变

【线性渐变】 linear 线性的;gradient 变化率;
    linear-gradient 线性渐变色,(背景颜色,但只能写在background中,不能写在其他地方)
    linear-gradient(方向,起始颜色 位置,颜色2 位置,颜色3 位置...)
    方向:to top(0deg),to right(90deg),to bottom(180deg),to left(270deg),0-360deg(自定义角度)
    颜色 位置:blue 30%(从起始位置0%到终点位置100%,距离等分,blue颜色从30%开始渐变)
    注意:除了起止颜色,其他都是可选项
    repeating 重复线性渐变:background: repeating-linear-gradient();

【径向渐变】 radial 半径的,放射状的;
    radial-gradient 径向渐变色,(背景颜色,但只能写在background中,不能写在其他地方)
    radial-gardient(形状  大小  坐标,起始颜色 位置,颜色2 位置,颜色3 位置...)
    形状:circle(圆)产生正圆的渐变;ellipse 适配当前的形状 ——默认值
    大小:
        closest-side 最近边;
        farthest-side 最远边;
        closest-corner 最近角;
        farthest-side 最远角 --默认值
    坐标:at x y (x横坐标,y坐标;可以写具体的数值,也可以写left/right/top/bottom/center)
        默认值是:at center center
    例如:
    background: radial-gradient(circle farthest-side at left top, blue, red);
    注意:除了起止颜色,其他都是可选项
    repeating 重复径向渐变:background: repeating-radial-gradient();

背景、边框样式

【背景样式】
    background-repeat: space; (可选 space/round)
    (round 图片缩放平铺 间距仍为0,使边角对齐盒子边框/space 图片原样平铺间距扩大,使边角对齐盒子边框)
    background-attachment: fixed;(可选 fixed/scroll/local)
        fixed 图片会固定在当前位置,无论容器滚动,还是内容滚动,图片都不会动;
        scroll 图片会跟随容器滚动,但不会跟随内容滚动;
        local 图片既会跟随容器滚动,也会跟随内容滚动;
    background-size: 300px 500px;(宽 高;也可只设置宽度,此时高度会等比例缩放)
    background-size: 50% 50%;(宽比例 高比例;注意:此比例是针对容器的宽高计算的)
    background-size: contain;(等比例缩放(放大),以较大值为准,容器包含图片)
    background-size: cover;(等比例缩放(放大),以较小值为准,图片填满容器)
    background-origin: border-box;  (可选 border-box/padding-box/content-box)
        设置背景坐标的原点,默认是边框左上角(border-box)
    background-clip: border-box; (可选 border-box/padding-box/content-box)
        设置背景的显示区域,默认是盒子内部区域(padding-box)
【边框样式】
    border-image-source: url(""); 背景图片的源文件路径
    border-image-slice: 30 fill;
        从图片的四个边开始,向内部切30px,将图片分成9块(注意:30没有单位);fill表示 展示中间的切片
    border-image-width:
        边框的图片的宽度。如果没有,默认是元素原始的边框宽度。建议与原始边框宽度保持一致
    border-image-outset:
        扩展边框的宽度,一般不建议设置,会影响盒子的大小,即使你设置了box-sizing:border-box;
    border-image-repeat: repeat; (可选 repeat/round/stretch)
        repeat; 直接将切好的图片重复平铺;
        round; 将切好的图片缩放之后自适应平铺;
        stretch; 将切好的图片自适应拉伸;
    注意:边框图片的本质是背景,并不会影响元素内容的放置,内容只会被容器的border和padding影响。

过渡、变换、动画

【过渡效果】
    transition-property: left;  添加过渡效果的样式属性名称
    transition-duration: 2s;  添加过渡效果的耗时,以秒为单位
    transition-timing-function:  (可选 linear/ease...  过渡的方式)
        linear 线性过渡
        ease 平滑过渡
        ...
    transition-delay: 1s;  添加过渡效果延迟时间
    连写方式:
    transition: left 2s linear 1s;
        多个样式的过渡效果,可以","连接连写;
    全局方式:
    transition: all 2s step(4);
        为所有样式的过渡效果设置时间,建议不要这么写,效率低下
        (浏览器会去查找哪些属性需要过渡,再一一添加transition-property属性)
        step(4) 设置过渡效果需几步完成。
【2D 变换】
    transform   移动是参照原始的位置
    【移动】
    transform: tarnslate(x,y); 移动的x,y 轴距离;
    transform: tarnslateX(); 移动的x 轴的距离;
    transform: tarnslateY(); 移动的y 轴的距离;
    【缩放】(1是原始大小,小于1是缩放,大于1是扩展)
    transform: scale(x,y); 缩放x,y 轴的程度;
    transform: scale(x); 缩放x 轴的程度;
    transform: scale(y); 缩放y 轴的程度;
    【旋转】
    transform: rotate(角度值); 一个值,即围绕z轴,在平面上旋转
    【斜切】
    transform: skew(x deg,y deg); 先执行水平方向的斜切值,再执行垂直方向的斜切值
    transform: skew(x deg); 只有一个值,即表示水平方向的斜切值;
    tarnsform: skewX(x deg); 单独设置 水平方向的斜切值;
    transform: skewY(y deg); 单独设置 垂直方向的斜切值;
    【旋转轴心】
    tarnsform-origin: right top;  设置旋转轴心的坐标;
【3d 变换】
    transform: translate3d(x,y,z); 设置x,y,z轴的偏移值;
        也可分别设置3个方向的偏移值,translateX();translateY();translateZ();
    transform: scale3d(x,y,z); 设置x,y,z轴的缩放值;
        也可分别设置3个方向的缩放值,scaleX();scaleY();scaleZ();
    transform: rotate3d(x,y,z,deg); 设置x,y,z轴的向量值及旋转角度;
    transfrom-style: preserve-3d; 保留变换后的状态;设置给父盒子!
    perspective: 500px;  设置观察景深;(观察者相对目标的距离)
    perspective-origin: x,y;  设置观察原点坐标;
【关键帧动画】
    animation连写方式:
    animation: name duration timing delay iteration;
    @keyframes animateName{
        0%{
            ...
        }
        50%{
            ...
        }
        100%{
            ...
        }
    }
    animation-name: animateName; 指定动画的名称;
    animation-duration: 2s; 指定动画的耗时;
    animation-iteration-count: infinite; 设置动画播放次数,可以是具体数值,也可以是无限infinite
    animation-direction: alternate; 设置为交替动画,比如摆钟;
    animation-delay: 2s;  指定动画延时执行;
    animation-fill-mode: forwards;(可选 forwards )设置保留动画结束时的状态;
        forwards  保留动画结束时的状态;
            在有延迟时,不会立刻进入动画初始状态
        backwards  不保留动画结束的状态;
            在有延迟时,会立刻进入动画初始状态
        both  既保留动画结束时的状态,还会立刻进入动画的初始状态;
    animation-timing-function: linear; 设置动画的方式,线性动画,或者steps(60);分步动画
    animation-play-state: running;(running/paused) 控制动画播放和暂停

伸缩盒子、多列布局

【伸缩盒子】
    display: flex;//设置父容器为伸缩盒子,会使里面的每一个子元素自动变成伸缩项
    justify-content: flex-start;(设置子元素主轴方向的排列方式)
        flex-start  居左 默认值
        flex-end    居右
        center      水平居中
        space-between   空白区域平均分配至盒子中间,两边盒子贴紧父容器
        space-around    空白区域平均分配至盒子两边,类似给每个子元素设置margin: 0 auto;
    align-items: flex-start;(设置子元素侧轴方向的排列方式)
        flex-start  居上 默认值
        flex-end    局下
        center      垂直居中
        stretch     垂直拉伸   默认值
        baseline    基线对齐
    当子元素宽度之和 大于/小于 父容器宽度时,子元素默认会自动伸展/收缩,以适应父容器的宽度。
    flex-flow: row wrap; (同时设置flex-direction/flex-wrap)
    flex-wrap: nowrap; (可选 nowrap/wrap...)设置是否换行
        nowrap  默认 不换行(元素收缩自身)
        wrap    换行
    flex-direction: row (可选 row/column) 设置主轴方向
        row 默认 水平方向(row-reverse 水平反向排列)
        column  垂直方向(column-reverse 垂直反向排列)
    [ 给子元素设置在父容器中所占比例 ]:
    flex: auto;(同时设置flex-grow/flex-shrink)设置一个数即可,浏览器会自动识别,或者auto
    表示每个子元素获得/承担 父容器 剩余/不足 空间所占的比例
    align-self: auto; (可选 auto/flex-start/flex-end/center/baseline/stretch)
        设置单个元素垂直方向的对齐方式
    flex-grow: 0; (默认值为0)
        计算方式:(当前元素的flex-grow值)/(它所有兄弟元素(包含自身)的flex-grow值的和),
        即是当前元素获得父容器剩余空间的所占比例;当前元素获得一定比例的剩余空间后会伸展自身
    flex-shrink: 1; (默认值为1)
        计算方式:(当前元素的flex-shrink值)/(它所有兄弟元素(包含自身)的flex-shrink值的和),
        即是当前元素承担父容器不足空间的所占比例;当前元素承担一定比例的不足空间后会收缩自身
【属性详解】
    #box{
        display: flex;

        flex-direction: row; /* 决定主轴的方向 */
        flex-wrap: wrap; /* 决定是否换行 */

        justify-content: space-between; /* 决定主轴(默认纵轴)之间的对齐方式 */
        align-content: space-between; /* 决定侧轴(默认横轴)之间的对齐方式 */
        
        align-items: center;  /* 决定子项在侧轴上的对齐方式 ( 在弹性盒子中没有justify-items属性 )*/
    }
    .item{
        flex: 1 1 auto; /* 指定该项放大、缩小比例,以及在伸缩之前的大小 */

        order: 1; /* 指定该子项的排列顺序 */
        align-self: center; /* 指定该子项自己的对齐方式 */
    }
【多列布局】
     column-count: 3; 设置列数;
     column-rule: dashed 2px red; 列数之间的样式,类似边框
     column-gap: ;设置间隙大小;
     column-width: ;
         注意:column-count与column-width冲突时,取大优先,填满屏幕
     column-span: ;跨列(可选  1/all)
posted @ 2021-09-02 10:27  海焰  阅读(93)  评论(0编辑  收藏  举报