HTML&CSS

402 阅读21分钟

基础知识

1. html:超文本标记语言
2. 网页组成: html + css + js
3. W3C: 万维网联盟,中立的公益性阻止,主要负责指定WEB的标准
4. 命名规则: ① 名字由数字、字母、下划线构成、不能以数字开头;②由对应内容的英文组成,语义化; ③驼峰命名
5. HTNL语法:<开始标签>内容</结束标签>;例:`<b>...</b>`
6. 带属性的标签语法:<标签 属性='属性值'>...</结束标签>; 例`<font color = 'red'>...</font>`

常用标签

1.常用标签<h1></h1><h6></h6>;特点:文字大小依次变小,默认加粗,强调程度依次降低
2.段落:<p></p>
3.换行<br>
4.水平线<hr>

文本标签

1.加粗<b></b>,<strong></strong>
2.倾斜<em></em>,<i></i>
3.变大<big></big>
4.变小<small></small>
注意:浏览器最小字体12px,不能比这个小
5.上标<sup></sup>
6.下标<sub></sub>
7.特殊符号:大空格&emsp;   小空格&nbsp;  版权&copy;  商标&reg;

列表

1.有序列表
    <ol>
        <li></li>
    </ol>
2.无序列表
    <ul>
        <li></li>
    </ul>
3.自定义列表
    <dl>
        <dt></dt>
        <dd></dd>
    </dl>
    

注意:1.li外面必须被ul和ol包裹 2.ol和ul里面只能有li 3.li里面可以有任何元素

图片

<img src='图片地址' alt='替代文本' width='宽度' height='高'>

路径

- 绝对路径:从盘符或者协议出发得到的路径,路径是唯一的
- 相对路径:相当于当前文件得到的路径
        - 同级:./ 或 直呼其名
        - 上级:../
        - /谁

超链接

定义:从一个位置跳转到另一个位置
<a href = '跳转地址' target = '_blank / _self'><>
_blank:新窗口打开;_self:当前窗口打开(默认值)

布局标签

页面排版中使用到的标签 <div></div> ; 一行内容中有特殊样式就用<span></span>

表格

<table border = '边框的粗细'  cellspacing = '0' cellpaddding = '内容和边框的距离'>
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>
表格合并的规则:rowspan 合并行 ; colspan 合并列
1.实现一个基本表格
2.判断跨行还是跨列,给最左上的单元个对应的属性,属性值为占据的单元格数量。
3.保存看错误,然后给对应多余的单元格删除,从后往前删。

表单

在页面中负责数据采集功能的部分
    <form action = '数据提交的地址' method = 'get / post'>
        表单域
        表单按钮
    </form>
    

表单域

<input type = 'text / password / radio / checkbox' name = '' placeholder = '提示文字'>
text:文本输入框
password:密码输入框
radio:单选,同一组单选的name属性值要一样
checkbox:多选

表单按钮

<button type = 'submit / reset / button'></button>
submit:提交
reset:重置
button:普通按钮

CSS:层叠样式表

CSS语法

选择器{
    属性:属性值;
    属性:属性值;
}

CSS的三种引入方式

1.内联式:<div style = '属性:属性值;'><> (强烈不推荐使用,代码繁杂,不利用后期维护)
2.内部式:在head标签里添加style标签,在style标签里写样式
            <head>
                <style>
                    选择器{
                        属性:属性值;
                        属性:属性值;
                    }
                </style>
            </head>
 3.外链式:①新建一个以.css为后缀的css文件;②在head标签里添加一个link标签,在href属性里引入css文件的路径
 

CSS选择器

1.通配符-选中所有的标签 *{}
2.标签选择器 - 选中所有对应的标签。  标签名{}
3.类选择器 - 选中所有对应类名的标签  .类名{}
4.ID选择器 - 选中所有对应ID名的标签   #id名{}
注意:ID名是唯一的,不可重复;;类名可以是多个;一般给网页的大盒子设置id5.后代选择器:e > f 选中e的儿子
             e f 选中e的后代f
6.伪类选择器
    e:hover{} 鼠标悬停在e身上,给e设置样式
    e:hover f{} 鼠标悬停在e身上,给后代f设置样式

优先级的判断规则(面试题)

    权重:!important > 行内样式 > id > 类 > 标签 > * > 继承 > 默认
    权重值:行内样式 - 1000; id - 100; 类 - 10; 标签 - 1;
    计算选择器的权重之和,和越大越优先,如果权重一样,后者覆盖前者

继承(面试题)

概念:具有上下级关系的元素之间,上级元素的样式被下级元素拥有,就是继承
        只有文本和列表相关的属性可以被继承

盒子模型(面试题)

概念:是一种思维模式,主要用于布局
组成:尺寸 + 边框 + 内边距 + 外边距
    尺寸:宽,高 ; 行级元素不能设置宽高:sapn,a
    边框:设置四边的边框 border:*px 线形 颜色;
          设置指定方向的边框 border-方向:*px 线形 颜色;
          线形:solid 实线  dashed 虚线
          方向:top botton left right
    内边距:盒子边框和他里面的内容之间的间隔
            设置指定方向的内边距 padding-方向:*px;(值不能为负数)
            padding:*px; 表示四个方向的内边距一样
            padding:*px *px; 表示上下和左右
            padding:*px *px *px; 表示上 左右 下
            padding:*px *px *px *px;表示上下左右
            padding会撑大盒子,在设置的时候注意减掉设置的宽高
     外边距:盒子边框和盒子之外的元素、内容之间的间隔
             margin-方向:*px;
             (同padding)
             

细节说明

元素在不同的浏览器默认会有不一样的内外边距,所以需要清除内外边距的差异
    *{
        padding:0;
        margin:0;
    }
    
 盒子水平居中
     margin:0 auto;

浮动

是一种布局属性,主要用于实现一行多列效果和图文环绕效果
语法: float:left / right / none;

a的默认样式优先级高于继承下来的样式

margin的bug

1.父随子动(粘连问题)--只存在垂直方向
    解决方案:1.用内边距是实现(记得修改高度)
              2.给父元素添加边框
              3.给父元素设置overflow:hidden;
2.塌陷问题
    解决方案:在一个兄弟元素身上设置足够的间隔

文本属性

1.文本颜色  color: 颜色单词 / 16进制 / raga(R,G,B,0-1)
2.文字大小  font-size:*px / *em / *rem;
    em是相当于父元素的文字大小的倍数
    rem是相当于根元素(html)的文字大小的倍数
3.字体类型  font-family:'字体类型1','字体类型2';
4.文字粗细  font-weight:bold / 700 / normal / 400;
    bold、700 是加粗
    normal400 是正常
5.文字样式  font-style: italic (倾斜)/ oblique(倾斜) / normal;
6.文本修饰线  text-decoration:none / overline / underline / line-thorugh
    overline:上划线
    underline:下划线
    line-thorugh:删除线
7.行高 line-height: *px;
    单行文本:垂直居中于指定大小的盒子
    多行文本调整行间距
8.文本水平对齐方式  text-align: left / right / center / justify (两端对齐,多行才有用);
    注意:行级元素不能使用该属性 spana
9.文本缩进 text-indent:*px / 2em;
    注意:行级元素不能使用该属性

列表相关的属性

去掉列表前面的黑点  list-style: none;

背景相关的属性

背景颜色  background-color: 颜色;
背景图片  background-image: url(图片路径);
背景平铺  background-repeat: no-repeat;
背景图起点 background-position: x y; (单位px,也可以是方向值)
背景图固定 background-attachment: fixed; 
复合属性
    background: 颜色,图片路径,平铺,起点; (属性值不分先后)

常用命名盒子的名字

首页 index  导航 nav  轮播 banner  页头 header  页脚 footer  版心 container

单行文本溢出显示省略号(面试题)

1.设置宽度
2.强制不换行 white-space: nowrap;
3.超出隐藏  overflow: hidden;
4.溢出标识为省略号  text-overflow: ellipsis;

换行设置

white-space: nowrap / pre;
    pre 会保留空格和换行
    nowrap 强制不换行

超出设置

overflow: visible(可见的-默认值) / hidden(隐藏) / auto(自动显示滚动条);

溢出的标识

text-overflow: ellipsis(省略号) / clip(裁剪);

垂直对齐

vertical-align: top / middle / bottom / baseline(基线); => 只有行内块元素可以使用
应用场景:
        1.图片3px问题
        2.表单元素垂直对齐(给input设置)
        3.表格内容垂直对齐

元素的分类(面试题)

1.块级元素:独占一行,是一个完整的盒子,可以设置宽高等
2.行级元素:有多宽占据多宽,不是一个完整的盒子,不可以设置宽高,垂直方向的内外边距
3.行内块元素:同时拥有块级元素和行级元素的特点
4.可变元素

非常规分类

置换元素:浏览器要解析标签和属性才能决定显示什么内容。如:inupt img button
非置换元素

元素嵌套规则

1.块级元素里面可以有任何元素,行级元素里只能由行级元素
2.a标签里可以有块级元素
3.ul/ol 里面只能有lili外面只能有ul/ol
4.p标签里只能有行级元素

元素类型的转换

display: inline(行内元素) / block(块) / inline-block(行内块) / none(隐藏);

图片格式

gif 动图
svg 矢量图
png 带透明格式的图
jpg 可以提高或者降低缩放级别的图,会填充透明为白色

定位

将元素放在指定的位置上,特指position
语法:position: 定位方式;
      left: *px; 或 right: *px;
      top: *px; 或 bottom: *px;

定位方式

1.static 静态定位:元素默认自带的定位方式
2.fixed 固定定位:基于浏览器当前屏进行定位,不会随着内容滚动而滚动
3.relative 相对定位:基于元素本身的位置,会占据原来的位置
4.absolute 绝对定位:基于最近的被设置非静态定位的上级元素进行定位,如果都没有的就基于浏览器第一屏进行定位。(会随着内容滚动而滚动)
常用场景:子绝父相

盒子完全居中(面试题)

第一种:
position: fixed;
left:50%;
margin-left:负的宽度的一半;
top:50%;
margin-top:负的高度的一半;

第二种:
position:fixed;
left:0;
top:0;
right:0;
bottom:0;
margin:auto;

元素在z轴的堆叠层次

z-index:数字;
说明:元素默认的值为0,值越大越靠上,可正可负,该属性要生效,元素必须有设置非静态定位。

锚点连接

<div id = 'id名'></div>
<a href = '#要跳转区域的id名'></a>

透明度

opacity: 0-1;
filter: alpha(opacity = 0-100); => 针对低版本的浏览器

宽高自适应

宽高自适应:能根据屏幕大小、设备类型、分辨率等,自动调整元素,以适应得到一个比较正常的效果

宽度自适应:1.不设置宽度;2.设置百分比;3.设置最大最小宽度:min-width:*px; max-width:*px;
    pc端所有整屏盒子都应该有一个min-width,属性值为版心盒子的宽度
高度自适应:1.不设置高度:如果子元素浮动,会脱离文档流,导致元素高度塌陷
            2.设置百分比
                注意:如果需要实现一屏页面,需要设置
                    html,body{
                            height:100%;
                        }
             3.设置最大最小宽度
                 min-height: *px;
                 max-height: *px;
             

清除浮动带来的影响--解决高度塌陷(面试题)

方案1:给浮动的父元素设置overflow: hidden;
方案2:给浮动元素最后面添加一个兄弟div,取类名clear,设置样式  .clear{clear:both;}
        注意:该元素身上不能有任何其他的样式
方案3(推荐使用):1.给浮动元素的父亲添加类名clearfix
                2.设置样式
                    .clearfix:after{
                        display: block;
                        content: '';
                        clear: both;
                        height: 0;
                    }

伪元素

e:after{content:"..."}在e元素的内容之后插入
e:before{content:"..."}在e元素的内容之前插入

伪元素和伪类的区别(面试题)

概念上:伪类是一种临时状态,只有状态触发的时候生效。伪元素是一个假的元素,虚拟的dom节点
表示上:伪类使用单冒号;伪元素使用双冒号
:after  ::after 都是伪元素,版本不同而已

多种显示与隐藏的区别

visibility: hidden / visible;占据原来的位置,不可以触摸点击
display: none / block; 不占据原来的位置
opacity:0-1;占据原位置,可以触摸点击

表格的标签和属性

属性:1.双线边框之间的间隔 border-spacing: *px; 
      2.表格细边框 border-collapse:collapse; 如果要实现真正的细边框,需要给td设置边框 
      3.表格单元格均分宽度:table-layout:fixed; 必须给表格设置宽度才可以生效
      
标签
    <thead></thead>
    <tbody></tbody>
    <tfoot></tfoot>
    注意tabletr不是父子关系

表单

<fieldset>  => 表单字段集
    <legend></legend> => 字段集标题
</fieldset>

label标签--改善用户鼠标体验
    <input id = 'id名'><label for = '对应选项的id名'></label><label><input> 关联的内容</label>
    
下拉框
    <select>
        <option value = ''></option>
    </select>
    默认提交value的值,没有就提交内容
    option身上的属性 selected

BFC

BFC:是一个独立的区域,区域与区域之间不会互相影响----格式化上下文
触发/创建BFC的情况
    1.浮动
    2.定位值为absolute和fixed
    3.overflow属性不为visible的时候
    4.display的值为inline-block / flex / inline-flex
 应用场景:
     1.margin的粘连问题
     2.清除浮动
     3.两列的自适应布局
         左边固定,右边自适应:左边设置宽度,左浮动;右边不设置宽度,设置overflow:hidden;

兼容性

兼容性:同一个页面在不同的浏览器或者版本中效果不一致

处理兼容性问题的方式:CSS3添加私有前缀(面试题)

代表性浏览器         浏览器内核       前缀
    欧朋               presto         -o-
    IE                 trident        -ms-
    火狐               gecko          -moz-
  谷歌、safari         webkit         -webkit-   

常见的兼容性问题

1.图片3px问题
    - 给图片设置vertical-align:top;
    - 给图片设置dispaly:block;
2.图片与图片在水平方向上有间隔
    - 给图片设置浮动
    - 让图片与图片的代码之间没有任何空白,换行
3.图片外面有连接,低版本浏览器会有边框
    - 给图片设置 border: none;
4.图片png24格式,在IE6里面不透明
    - 保存为png8 / gif 格式
5.表单元素垂直方向上没有对齐(一般是input和button)
    - 给元素设置 vertical-align:top
    - 给元素设置浮动
6.鼠标形状为手型的时候,高版本不认识hand
    - cursor: hand; 低版本
    - cursor: pointer; 高版本
7.margin的问题
    - 粘连问题
    - 塌陷问题

精灵图:雪碧图 - sprites

步骤:1.设置一个指定大小的盒子
      2.将精灵图设置为盒子的背景图
      3.通过background-position调整背景图的起始位置
优点:1.减少请求,提高性能
      2.减少文件数量,降低命名难度
      3.减少内层占用
缺点:步骤繁琐,增删图标麻烦

盒子模型的模式--标准模式和怪异模式(面试题)

概念:默认情况下有文档声明就是标准模式,没有在低版本浏览器就是怪异模式
语法:box-sizing:border-box(怪异模式) / content-box(标准模式);
区别:元素实际占据的宽高计算方式不一样
    - 标准模式:实际占据的宽度 = width + border + padding + margin
    - 怪异模式:实际占据的宽度 = width + margin

H5新增的标签

标签语义化:标签有含义,有意义,见名知意,提倡用正确的标签描述内容
优点:方便SEO ,代码具有可读性,方便更新和维护
结构化标签
    页头        header
    页脚        footer
    主题        main
    侧栏        aside
    文章        article
    独立的区域   section
    导航        nav

其他标签

1.图文组
    <figure>
        <figcaption>标题</figcaption>
    </figure>
2.高亮  <mark></mark>
3.标题组  <hgroup></hgroup>
4.对话框  <dialog open></dialog>
5.画布  <canvas></canvas>

音频

<audio src = '音频的路径' controls auntrols loop></audio>
controls 控件
auntrols 自动播放
loop  循环

视频

<video src = '视频路径' controls poster = '海报路径' width = '' height = ''>
    <sourse src = '视频路径'>
</video>
注意:如果有sourse标签,video身上就不需要src属性

媒体文件的引入标签

<embed src = '图片、视频、音频的路径'>

HTML5新增的属性和标签

1.<form novalidate  autocomplete = 'on / off'></form>
novalidate 设置表单不验证
autocomplete 设置是否打开自动补全功能,默认打开

2.<input autofocus required maxlength = '数值' minlength = '数值' mutiple disable readonly checked>
       - autofocus 自动获取焦点
       - required 必填
       - maxlength 最大长度
       - minlength 最小长度
       - mutiple 设置可以多选
       - disable 按钮禁用
       - readonly 只读--用于做权限
       - checked 默认选中该选项

软件开发思想

 渐进增强:先针对低版本浏览器完成页面,以保证基本的功能实现。然后针对高版本浏览器添加更多酷炫的效果和功能。向后看   
 优雅降级:先针对高版本浏览器完成所有功能,然后针对低版本浏览器降低需求,保证基本功能能够实现。向以前看

CSS3新增的属性和选择器

属性

1.文字阴影:
    text-shadow:x方向的偏移 y方向的偏移 模糊程度 阴影的颜色;
    例:text-shadow:10px 10px 10px red;
    注意:模糊程度*px,不能为负数
2.盒子阴影:
    box-shadow:x方向的偏移 y方向的偏移 模糊程度 阴影的颜色 inset;
    例:box-shadow:10px 10px 10px red;
    没有inset就是外阴影,有就是内阴影
3.圆角半径:
    border-radius:*px / *%;
    注意:如果要实现正圆,必须宽高一致
4.背景的大小:
    background-size:宽度 高度;

自定义字体
    @font-size{
        font-famliy:'自定义字体的名字';
        src:url(字体文件ttf的路径);
    }
    使用的时候,给对应的元素设置 font-famliy:'自定义字体的名字';

选择器

属性选择器
    e[f]              选中有f属性的元素e
    e[f='v']          选中f属性的属性值为v的元素e
    e[f^='v']         选中f属性的属性值为以v开头的元素e
    e[f$='v']         选中f属性的属性值为以v结尾的元素e    


结构伪类选择器
    1.选中第一个元素e                  e:first-child
    2.选中最后一个元素e                e:last-child
    3.选中第n个元素e                   e:nth-child(n)
    4.选中倒数第n个元素e                e:nth-last-child(n)
    5.选中唯一的元素e                   e:only-child
    注意:小括号中的n是乘法因子,可以是数字、英文、数字表达式
    注意:child系列强调的是该元素在父元素的所有儿子中的排序!
    :nth-child(n)  权重为10


UI状态伪类选择器
    1.被选中的元素e                 e:checked
    2.可用的元素e                   e:enabled
    3.不可用的元素e                 e:disabled


否定伪类选择器
    e:not(f)            选中e元素中,不满足条件的f的剩余元素


目标伪类选择器
    e:target                当e是目标的时候,实现的样式

渐变过渡动画

渐变

背景渐变
1.线性渐变
    设置普通的线性渐变            background:linear-gradient(颜色1,颜色2);
    设置渐变方向                  background:linear-gradient(to 方向,颜色1,颜色2);       
    设置对角渐变                  background:linear-gradient(to 方向1 方向2,颜色1,颜色2);
    设置渐变的角度                background:linear-gradient(*deg,颜色1,颜色2);
    设置渐变的比例                background:linear-gradient(颜色1 *%,颜色2 *%);
    [如果两个颜色间没有过度变化,将比例设置成一样即可]
    
2.径向渐变
    设置普通径向渐变               background:radial-gradient(颜色1,颜色2);
    设置渐变比例                   background:radial-gradient(颜色1 *%,颜色2 *%);
    设置渐变形状                   background:radial-gradient(circle / ellipse 颜色1,颜色2);
                                                                圆      椭圆
3.重复渐变
    设置线性渐变的重复          background:repeating-linear-gradient(颜色1 *%,颜色2 *%);
    设置径向渐变的重复          background:repeating-radial-gradient(颜色1 *%,颜色2 *%);

过渡

过度:让变化慢慢进行--必须是可以数值化的东西
语法:transition:属性名1 变化时间 延迟时间 变化曲线,属性名2 变化时间 延迟时间 变化曲线;
例:transition:width 2s 2s linear,height 3s 2s linear;
    变化曲线:linear是匀速变化

动画

1.定义动画
    @keyframes 动画名{
        0%{
            开始状态的样式
        }
        *%{
            各个中间状态的样式
        }
        100%{
            结束状态的样式
        }
    }
2.执行动画
    给想要有对应动画的选择器里面写:
        animation:动画名  动画执行时间  延迟的时间  执行的次数  执行的方向  变化曲线;
        例:animation:run 3s 3s infinite alternate linear;
            执行的次数:数字 或者 infinite - 无限循环
            执行方向:alternate - 来回移动
            变化曲线:linear 匀速变化
    动画执行动态
        animation-play-state:running 执行 / paused 暂停;

弹性盒子

概念:是一种新的布局方式,让元素有能力控制子元素的排列方式。
语法:将元素设置成弹性盒子
      display:flex / inline-flex;
      设置成弹性盒子以后,该元素被叫做容器,该元素的子元素叫做项目

容器身上的属性

1.设置主轴的方向
        flex-direction:row / column / row-reverse / column-reverse;
        row:一行排列(默认值)
        column:竖着排列
        reverse:反向(极少用)

2.设置项目在主轴方向的排列方式
        justify-content:flex-start / center / flex-end / space-between / space-evenly / space-around;
            space-between:间隔在之间
            space-evenly:均分间隔
            space-around:间隔在周围

3.设置项目是否换行
        flex-wrap:nowrap 不换行 / wrap 换行 / wrap-reverse;

4.设置主轴方向和是否换行【复合属性-意义不大】
        flex-flow:flex-direction的值  flex-wrap的值;

5.设置项目在侧轴上的对齐方式
        align-items:stretch / flex-start / center / flex-end / baseline;
        stretch(默认值)- 拉伸铺满

6.设置多根轴线的排列方式【单根轴线无效】
        align-content:stretch / flex-start / center / flex-end / space-between / space-evenly / space-around;
        注意:必须要有换行才可以生效

项目身上的属性

1.设置项目是否缩小
        flex-shrink:数字;
        默认为1,会缩小
        设置为0,不缩小
        其他数字代表缩小的份数

2.设置项目是否放大
        flex-grow:数字;
        默认为0,不放大
        设置为1,会放大

3.项目放缩尺寸复合属性
        flex:flex-grow  flex-shrink flex-basis;【默认是:0 1 auto】
        设置flex:1;的意思是 1 1 auto;
        设置flex:1;可以让该项目实现自适应

4.设置项目单独的对齐方式
        align-self:flex-start / flex-end / center;

    设置项目的基准尺寸【了解 = width】

    设置项目的排序【了解】
        order:数字;
        默认为0,可以为负数
        

grid网格布局

概念:是一种新的布局方式,让元素有能力控制子元素的排列方式。 
语法:将元素设置成网格布局 display:gird / inline-gird; 
设置成网格布局以后,该元素被叫做容器,该元素的子元素叫做项目

容器身上的属性

/*1固定值*/
grid-template-rows: 200px 200px 200px ; // 设置几行 属性值有几个就代表有几行
grid-template-columns: 200px 200px 200px;  // 设置几列 属性值有几个就代表有几列

/*2百分比*/
grid-template-rows: 33.3% 33.3% 33.4% ;
grid-template-columns: 33 .3% 33.3% 33.4% ; 

/* 3 repeat */
grid-template-rows: repeat(3,33.33%);  // repeat(几行,33.33%)
grid-template-coLumns: repeat(3,33.33%);

/* 4. repeate autofill */
grid-tempLate-rows: repeat(auto-fill,33.33%);
grid-template-columns: repeat (auto-fill,33.33%);

grid-template-rows: 100px 200px auto;
grid-template-coLumns: 100px 200px autq;

控制间距
    gird-row-gap:20px;  // 行间距
    gird-column-gap:20px;  // 列间距

    gird-gap:20px 20px; // 复合写法
    
    新版可以去掉 gird ,写成下面这种
        row-gap:20px;
        column- gap:20px; 

        gap:20px 20px;
        
                            
前提是项目比容器小才能生效
justify-content: center; // 水平居中
al ign- content: center; // 垂直居中


合并
    grid-template-areas : 'a e e'
                            'd e e'
                            'g h i'

项目身上的属性

grid-area:e;  就可以实现合并   要配合grid-template-areas 才能实现合并

实现合并:
grid- coLumn:2/4;
grid-row:1/3;

移动端开发

移动端基础

- 移动端开发环境:手机浏览器
- 调试移动网页代码:谷歌浏览器手机模式

视口

概念:就是浏览器显示页面内容的屏幕区域,视口可以分布局视口、视觉视口和理想视口
布局视口:兼容早期PC端
视觉视口
理想视口:保证PC端和移动端等比列放缩
** 语法:<meta name="viewport" content="width=device-width, initial-scale=1.0"> **
    注意:移动端开发网页时,一定要添加

高倍屏
    像素
    分辨率
    物理像素/设备像素
    逻辑像素/css像素
    物理像素比 = 物理像素 / 逻辑像素

移动端开发技术方案
    - pc端一套代码        www.jd.com
      移动端一套代码       m.jd.com

    - 响应式
        开发一套代码,能运行在pc端,也能兼容运行在移动端

响应式常用的3种布局

      小:600px以下。大部分手机适用。
        语法:@media screen and (max-width:600px){}
      大:大于1200px。大部分PC适用。
             @media screen and (min-width:1200px){}
      中:除去小和大就是中间的

移动端开发适配

在不同的手机上,显示效果一样(字体、宽高不变)
当屏幕改变时,改变根元素html字体大小,rem作为单位的元素值随之变化

如何让根元素html值变化
    - 用javascript代码监听屏幕改变
        如果改变,根据当前屏幕大小设置html元素字体fontsize值

移动端开发适配的步骤
       1. 按照正常设计稿尺寸开发 单位px
       2. 引入根据屏幕尺寸改变根元素字体大小的js文件 rem.js
       3. 安装vscode插件 插件名为: px to rem
            作用: 将px值转为rem单位值
            使用: 3.1 设置  rem与px比值
                         默认值: 1rem = 16px
                                 1rem = 100px
                        alt + s 
                  3.2 改变css中px单位rem单位
                       alt + z

2D&3D转换

2D

移动 transform:translate(*px); 默认X轴移动
        transform:translate(*px,*px);

旋转 transform:rotate(*deg); 默认Z轴旋转 顺时针方向
        transform:rotateX(*deg);定义X轴方向旋转
        transform:rotateY(*deg);定义Y轴方向旋转
        注意:可以为负数,逆时针方向

缩放 transform:scale(*); 默认X轴,Y轴同时缩放
         transform:scaleX(*); X轴缩放
         transform:scaleY(*); Y轴缩放
         transform:scale(*,*); 定义X轴,Y轴缩放

3D

移动:transform:translateZ(*px); 定义Z轴的移动
          transform:translate3d(10px,20px,30px); 定义3D平移移动

透视:perspective:*px; 值越小,图像越大
        注意:必须添加父元素身上

旋转:transform:rotate(*deg); 默认Z轴旋转 顺时针方向
        transform:rotateX(*deg);定义X轴方向旋转
        transform:rotateY(*deg);定义Y轴方向旋转

改变旋转的基点
        transform-origin:X Y Z;
        x、y的值可以为数值,也可以是方向
        z只能是数值
    
3D呈现 transform-style:flat \ preservr-3d;
            flat:默认值 ,子元素不开启3d呈现
            preservr-3d :开启
            注意:也是给父元素添加