em是相对父元素的单位,比如父元素字体大小10px,那么子元素写2em就是2倍的父元素=>20px
注意:浏览器默认字体最小12px

rem是相对根父元素的单位,如根父元素字体大小10px,子元素2rem表示20px,子元素的子元素4px表示40px

viewPort视口

调试成手机模式时
尺寸 选择自适应 可以进行调试
vw viewPort width 把 宽度 分为100份 100vw = 全屏宽度
50vw 不管屏幕多大 始终 占一般
vh height

媒体查询

rem相对根元素的大小来确定子元素大小的,但是不能跟随屏幕的尺寸而变化(手机端)
所以利用媒体查询限定屏幕宽度来设置相应的文字大小

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>媒体查询</title>
  8. <!--
  9. rem 是相对根元素的 大小 但是 不能随着屏幕尺寸变化
  10. 媒体查询 查询 设备的信息 常用的就是
  11. -->
  12. <style>
  13. @media screen and (max-width:500px) {
  14. /*屏幕宽度 小于 500px进来 */
  15. html {
  16. font-size: 10px;
  17. }
  18. div {
  19. font-size: 1rem;
  20. }
  21. }
  22. @media screen and (min-width:520px) and (max-width:720px) {
  23. /*屏幕宽度 520px 720进来 */
  24. html {
  25. font-size: 100px;
  26. }
  27. div {
  28. font-size: 1rem;
  29. }
  30. }
  31. @media screen and (min-width:720px) and (max-width:920px) {
  32. /*屏幕宽度 720 920进来 */
  33. html {
  34. font-size: 200px;
  35. }
  36. div {
  37. font-size: 1rem;
  38. }
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div>watch me</div>
  44. </body>
  45. </html>

第三方

引入写好的第三方的JS文件,例如监听浏览器大小来设置对应的字体大小

弹性布局

flex
/ 设置弹性盒子 /
display: flex;

  1. /* 纵向 竖着 */<br /> /* flex-direction: column; */
  2. /* 是否换行 */<br /> /* flex-wrap: nowrap; */

order:改变标签的顺序 结构不变,不影响JS的逻辑

li:first-child {
/ 指定顺序 但是 标签结构的顺序 并没有变 所以不影响相关的JS 逻辑
默认是 order :0
数字越大越靠后,不是真实地序号
/
order: 5;
}
li:nth-child(2) {
order: 4;
}

居中:/ 调整主轴方向上的 对齐方式 /
justify-content: center;
/ 侧轴 和主轴垂直相交 的方向 /
align-items: center;

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>居中</title>
  8. <style>
  9. /* 水平 和 竖直 都居中 */
  10. div{
  11. height: 100px;
  12. border: 1px solid red;
  13. display: flex;
  14. /* 主轴 就是 direction 的方向 */
  15. /* 调整主轴方向上的 对齐方式 */
  16. justify-content: center;
  17. /* 侧轴 和主轴垂直相交 的方向 */
  18. align-items: center;
  19. /* -o-flex:
  20. -ms-flex: ;
  21. -moz-flex: ; */
  22. }
  23. span{
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div>
  29. <span> 居中</span>
  30. </div>
  31. </body>
  32. </html>

移动端:

触摸:

之所以不是点击事件,是因为点击事件会延迟300MS,所以移动端专门用自己的移动端事件
touchstart touchmove touchend touchcancel(touchcancel一般来电话点击取消的触摸事件)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>触摸</title>
  8. <script src="./yzs.tools.js"></script>
  9. <style>
  10. #box{
  11. width: 300px;
  12. height: 300px;
  13. /* 颜色
  14. rgb(r,g,b)
  15. rgba
  16. 英文
  17. 十六进制 ff 00 00 RGB
  18. hsl(hue, saturation, lightness)
  19. hsla(hue, saturation, lightness, alpha)
  20. */
  21. background-color:#0000FF;
  22. margin: 0 auto;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div id="box"></div>
  28. <script>
  29. let box = document.querySelector("#box")
  30. // 点击事件 延迟 300ms ,所以移动端专门用自己 移动端事件
  31. // box.addEventListener("click",function(){
  32. // console.log("click------")
  33. // })
  34. // 移动端 一般 是触摸
  35. box.addEventListener("touchstart",function(e){
  36. // 兼容性的写法
  37. let event = e || window.event
  38. box.style.borderRadius = "50%"
  39. console.log("touchstart",event)
  40. // PC端 是在targert里面存储
  41. // 移动端 是在touches 里面 为什么+s 是数组
  42. // 移动端可以 多个手指 同时点击
  43. // 获取手指点击的位置
  44. console.log("位置X:",event.touches[0].clientX)
  45. })
  46. box.addEventListener("touchmove",function(){
  47. console.log("move")
  48. // box.style.backgroundColor = "pink"
  49. box.style.backgroundColor = randomColor()
  50. })
  51. box.addEventListener("touchend",function(){
  52. console.log("end")
  53. box.style.borderRadius = 0
  54. })
  55. // 来电话 语音
  56. box.addEventListener("touchcancel",function(){
  57. console.log("cancel")
  58. })
  59. </script>
  60. </body>
  61. </html>

zepto相当于移动端的小型的JS库

动画:

animation: name1 10s infinite;

  1. .move {
  2. width: 30px;
  3. height: 30px;
  4. /*
  5. 动画 名字 时长 重复次数
  6. 时长 一定要带单位
  7. infinite 无限次重复
  8. */
  9. animation: name1 10s infinite;
  10. }
  11. /* 关键帧动画 */
  12. @keyframes name1 {
  13. 0%{
  14. width: 30px;
  15. height: 30px;
  16. background-color: green;
  17. }
  18. 20%{
  19. width: 100px;
  20. height: 100px;
  21. background-color: yellow;
  22. }
  23. 100%{
  24. width: 500px;
  25. height: 500px;
  26. background-color: red;
  27. border-radius: 50%;
  28. }
  29. }
  1. <title>animation 拆解</title>
  2. <style>
  3. .move {
  4. width: 30px;
  5. height: 30px;
  6. background-color: orange;
  7. /* 动画名称 */
  8. animation-name: animation;
  9. /* 动画时长 */
  10. animation-duration: 5s;
  11. /* 动画结束后的状态 */
  12. animation-fill-mode: forwards;
  13. /* 动画播放次数 */
  14. animation-iteration-count: 1;
  15. /* 延迟时间 */
  16. /* animation-delay: 5s; */
  17. /* 动画 反向 */
  18. animation-direction: alternate;
  19. /* 贝塞尔曲线 */
  20. animation-timing-function: ease-in;
  21. }
  22. .move:hover {
  23. /* 动画播放状态 */
  24. animation-play-state: paused;
  25. }
  26. /* 关键帧动画 */
  27. @keyframes animation {
  28. 0% {
  29. width: 40px;
  30. height: 40px;
  31. }
  32. 100% {
  33. width: 300px;
  34. height: 300px;
  35. background-color: red;
  36. border-radius: 50%;
  37. }
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="move"></div>
  43. </body>

animate()
参数1: {} 需要进行动画的 属性 和值
参数2: 动画持续时间
参数3: 运动速率 贝塞尔曲线
参数4: 动画结束时候的回调函数
参数5: 延迟时间

  1. $("div").click(function(){
  2. $(this).animate({
  3. marginTop:"100px",
  4. borderRadius:"10px"
  5. },5000,"linear",function(){
  6. $(this).html("结束了,代码简单,怎么想出来的难")
  7. },2000)
  8. })

过度动画:
动画分为2种:关键帧动画 —》 进行关键帧的设置
过渡动画—》补间动画
当前元素 只要有”属性” 发生变化时,就可以进行平滑的过渡
自己补充了开始 到结束中间的过程,所以叫补间动画

  1. <style>
  2. .show{
  3. width: 100px;
  4. height: 100px;
  5. margin: 0 auto;
  6. background-color: orange;
  7. /* 过渡动画 动画的属性 时长 延迟时间 贝塞尔 */
  8. transition: all 5s;
  9. }
  10. .show:hover{
  11. width: 200px;
  12. height: 200px;
  13. border-radius: 50%;
  14. background-color: yellowgreen;
  15. }
  16. </style>

事件:

tap 事件相当于 pc 浏览器中的 click 效果
tap :单击事件
doubleTap :双击事件
longTap :长按事件
swipe 清扫事件
swipeLeft :左()清扫事件(swipeRight,swipeUp,swipeDown)

私有前缀

浏览器自己支持一些比较超前的技术 比如 flex 圆角
> 早期的时候 w3c标准 是不支持的
> 但是为了这个用户体验 某些浏览器自己兼容
>-o-flex: 欧朋 Opera
>-ms-flex: ; IE
>-moz-flex: ; 火狐 FirFox
>-webkit-flex chrome safari(Mac自带的)

短路

image.png