当前位置:   article > 正文

移动端网页布局

移动端网页

一、移动端特点

1.移动端和PC端网页不同点

1)PC端网页和移动端网页有什么不同?

a.PC屏幕大,网页固定版心

b.手机屏幕小,网页宽度多数为100%

2.谷歌模拟器

1)我们可以通过京东看一下,一般会有一个PC端的网页和移动端的网页,移动端的网页一般是m开头,俗称m站,就是一个类似于手机应用的网页,不过他和手机应用不同的点是,m站是需要通过浏览器输入网址来进行登陆的,而手机app之间下载就可以

2)可以查看一下京东的pc端网页

3)查看一下京东的m站的网页

这个就类似于手机应用,但是是在页面进行显示,我们可以通过检查源代码的方式,然后通过下面的手机按钮,给调成手机模式

3.分辨率

1)目标:了解屏幕尺寸概念

2)屏幕尺寸

> 指的是屏幕对角线的长度,一般用英寸来度量

3)了解移动主流设备分辨率

PC分辨率

1920*1080

1366*768

......

 

4)总结:

a.硬件分辨率(出厂设置)

b.缩放调节的分辨率(软件设置)

5)分辨率分类

a.物理分辨率是生产屏幕时就固定的,它是不可被改变的

b.逻辑分辨率是由软件(驱动)决定的

6)思考:制作网页参考物理分辨率还是逻辑分辨率

答:逻辑分辨率

7)移动端主流设备分辨率

4.视口

1)目标:使用meta标签设置视口宽度,制作适配不同设备宽度的网页

2)手机屏幕尺寸都不同,网页宽度为100%

3)网页的宽度和逻辑分辨率尺寸相同

​​​​​​​4)网页的宽度和设备宽度(分辨率)相同

解决办法:添加视口标签

<meta name="viewport" content="width=device-width, initial-scale=1.0">

5.二倍图

1)目标:能够使用像素大厨软件测量二倍图中元素的尺寸

2)设计师给的是物理分辨率的图,二倍图

3)网站以二倍图居多,为了让图片更加的清晰

4)设计师给的是二倍图,是物理分辨率,但是我们书写的时候是根据逻辑分辨率来写

5)设计稿的时候要选择2x来进行设计

6)不管设计图给的是几倍,最终都转换成他的逻辑分辨率就可以

 

二、百分比布局

1)目标:能够使用百分比布局开发网页

2)百分比布局,也叫流式布局

3)效果:宽度自适应,高度固定

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. li {
  13. list-style: none;
  14. }
  15. .toolbar {
  16. /* 固定定位 */
  17. /* 定位的使用不一定要使用在一个标签添加到另一个标签的上面,如果没有其他标签,要让标签不按标准流显示,放到其他的位置,也可以使用定位 */
  18. position: fixed;
  19. bottom: 0;
  20. left: 0;
  21. /* 百分比布局,宽度自适应,高度固定 */
  22. width: 100%;
  23. height: 50px;
  24. background-color: pink;
  25. border: 1px solid #fff;
  26. }
  27. .toolbar li img {
  28. height: 100%;
  29. }
  30. .toolbar li {
  31. float: left;
  32. width: 20%;
  33. height: 50px;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <div class="toolbar">
  39. <ul>
  40. <li><a href="#"><img src="images/index.png" alt=""></a></li>
  41. <li><a href="#"><img src="images/classify.png" alt=""></a></li>
  42. <li><a href="#"><img src="images/jd.png" alt=""></a></li>
  43. <li><a href="#"><img src="images/car.png" alt=""></a></li>
  44. <li><a href="#"><img src="images/login.png" alt=""></a></li>
  45. </ul>
  46. </div>
  47. </body>
  48. </html>

三、Flex布局

1.目标:能够使用Flex布局模型灵活、快速的开发网页

2.思考:​​​​​​​

1)多个盒子横向排列使用什么属性

浮动

2)设置盒子间的间距使用什么属性

margin

3)需要注意什么问题?

​​​​​​​浮动的盒子脱标

3.Flex的简单使用

设置为Flex的盒子是不会进行脱标的,即使是没有设置高度,也可以根据子级的内容给撑开

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .box {
  13. /* 高度不写是0,宽度不写是浏览器的宽度 */
  14. /* flex布局不脱标 */
  15. display: flex;
  16. justify-content: space-between;
  17. width: 100%;
  18. /* height: 200px; */
  19. border: 1px solid #000;
  20. }
  21. .box div {
  22. /* float: left;
  23. margin: 10px; */
  24. width: 100px;
  25. height: 100px;
  26. background-color: pink;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <div class="box">
  32. <div>1</div>
  33. <div>2</div>
  34. <div>3</div>
  35. </div>
  36. </body>
  37. </html>

4.Flex布局/弹性布局 (必须是父子级,有父级弹性容器,子级是弹性盒子)

1)是一种浏览器提倡的布局模型

2)布局网页更简单、灵活

3)避免浮动脱标问题

4)检查属性是否可以使用

Can I use... Support tables for HTML5, CSS3, etc

在上面的网站上可以查到一个属性在哪些浏览器上可以使用

 5)作用

a.基于Flex精确灵活控制块级盒子的布局方式,避免浮动布局中脱离文档流现象发生

b.Flex布局非常适合结构化布局

6)设置方式

给父元素添加display:flex,子元素可以自动的挤压和拉伸

7)组成部分

弹性容器(父级)

弹性盒子(子级)

 只需要给父级添加一个display:flex就可以实现横向一排排列

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .box {
  13. /* 视觉效果:子级一行排列/子级水平排列 */
  14. /* 水平排列:默认主轴在水平,弹性盒子都是沿着主轴排列的 */
  15. display: flex;
  16. height: 200px;
  17. border: 1px solid #000;
  18. }
  19. .box div {
  20. width: 100px;
  21. height: 100px;
  22. background-color: pink;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="box">
  28. <div>1</div>
  29. <div>2</div>
  30. <div>3</div>
  31. </div>
  32. </body>
  33. </html>

5.主轴对齐方式

 1)目标:使用justify-content调节元素在主轴的对齐方式

2)思考:网页中,盒子之间有间距吗?

答:有

在Flex布局中,可以调节主轴或侧轴的对齐方式来设置盒子之间的间距

3)修改主轴对齐方式属性:justify-content

4)center的效果:实现的是盒子的容器 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box {
  9. /* 视觉效果:子级一行排列/子级水平排列 */
  10. /* 水平排列:默认主轴在水平,弹性盒子都是沿着主轴排列的 */
  11. display: flex;
  12. /* 居中显示,弹性容器居中 */
  13. justify-content: center;
  14. height: 200px;
  15. border: 1px solid #000;
  16. }
  17. .box div {
  18. width: 100px;
  19. height: 100px;
  20. background-color: pink;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="box">
  26. <div>1</div>
  27. <div>2</div>
  28. <div>3</div>
  29. </div>
  30. </body>
  31. </html>

5)space-between实现的效果:间距在盒子中间显示

  1. /* 间距在弹性盒子之间 */
  2. /* justify-content: space-between; */

 

6)space-evenly:所有的盒子的间距都相等

  1. /* 所有地方的间距都相等 */
  2. justify-content: space-evenly;

7)space-between:盒子的两侧添加边距

  1. /* 中间的距离大,两边小,加在两侧,间距加在子级的两侧,实现的视觉效果子级之间的距离是父级两头距离的二倍 */
  2. justify-content: space-around;

6.侧轴对齐方式

1)目标:使用align-items调节元素在侧轴的对齐方式

2)修改侧轴对齐方向属性

align-items(添加到弹性容器)

align-self:控制某个弹性盒子在侧轴的对齐方式(添加到弹性盒子)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box {
  9. display: flex;
  10. align-items: center;
  11. /* strech拉伸,默认值(子级盒子如果有高度就不拉伸,如果没有高度就会拉伸) */
  12. /* align-items: stretch; */
  13. height: 200px;
  14. border: 1px solid #000;
  15. }
  16. /* 如果子级没有宽度,那么宽度就是内容的宽度 */
  17. .box div {
  18. width: 100px;
  19. height: 100px;
  20. background-color: pink;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="box">
  26. <div>1</div>
  27. <div>2</div>
  28. <div>3</div>
  29. </div>
  30. </body>
  31. </html>

 7.单独控制某个盒子侧轴对齐方式

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box {
  9. display: flex;
  10. height: 200px;
  11. border: 1px solid #000;
  12. }
  13. /* 如果子级没有宽度,那么宽度就是内容的宽度 */
  14. .box div {
  15. width: 100px;
  16. height: 100px;
  17. background-color: pink;
  18. }
  19. /* 在flex布局中,如果没有加高度,那么这个盒子的本身高度就是父级的高度,如果子级给了高,或者不在是拉伸,就不是父级的高度 */
  20. /* 单独设置某个盒子的侧轴对齐方式 */
  21. .box div:nth-child(2) {
  22. align-self: center;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="box">
  28. <div>1</div>
  29. <div>2</div>
  30. <div>3</div>
  31. </div>
  32. </body>
  33. </html>

8.弹性盒子尺寸特点

1)如果没有使用弹性盒子来进行布局,那么没有写宽度,默认就是100%,也就是浏览器页面的宽度,没有写高度就是0

2)如果没有使用弹性盒子来进行布局,那么没有写高度,默认是0,需要设置来让盒子的高度为浏览器的高度

2)如果一个子级属性宽度或者高度写成了100%,那么他的高度或者是宽度就等于是父级的高度或者是宽度

3)如果使用了弹性盒子来进行布局,那么子级如果没有写高度或者是align-items的值是stretch,那么他的高度就是父级的高度,如果写了高度就是写的高度,如果没有写高度他的align-items是center的话那么就是他的内容的高度

4)如果使用了flex来进行布局,没有写宽度,那么盒子的宽度就是内容的宽度。

9.伸缩比

1)目标:使用flex属性修改弹性盒子伸缩比

2)属性:

flex:值

3)取值分类:

数值(整数)

4)只占用父盒子剩余尺寸

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* * {
  9. box-sizing: border-box;
  10. } */
  11. .box {
  12. display: flex;
  13. /* align-items: center; */
  14. /* strech拉伸,默认值(子级盒子如果有高度就不拉伸,如果没有高度就会拉伸) */
  15. /* align-items: stretch; */
  16. height: 300px;
  17. border: 1px solid #000;
  18. }
  19. /* 如果子级没有宽度,那么宽度就是内容的宽度 */
  20. /* 整个盒子的宽为359,减去border2357357减去第一个盒子的宽度和边距90267267减去另外两个盒子的边距80,为187187/1+3)=46.75 46.75*3 = 140.25 */
  21. .box div {
  22. /* width: 100px; */
  23. height: 100px;
  24. margin: 0 20px;
  25. background-color: pink;
  26. }
  27. .box div:nth-child(1) {
  28. width: 50px;
  29. }
  30. .box div:nth-child(2) {
  31. flex: 1;
  32. }
  33. .box div:nth-child(3) {
  34. flex: 3;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <div class="box">
  40. <div>1</div>
  41. <div>2</div>
  42. <div>3</div>
  43. </div>
  44. </body>
  45. </html>

​​​​​​​ 

四、实战演练 --小兔仙订单页面

如果想要项目的资源或者源代码,私信我或者是底部评论

1.实现的效果

2.html代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>确认订单</title>
  7. <link rel="stylesheet" href="lib/iconfont/iconfont.css">
  8. <link rel="stylesheet" href="css/base.css">
  9. <link rel="stylesheet" href="css/orders.css">
  10. </head>
  11. <body>
  12. <!-- 主体内容:滑动查看 -->
  13. <div class="main">
  14. <!-- 用户信息 -->
  15. <div class="pannel user_msg">
  16. <div class="location">
  17. <i class="iconfont icon-location"></i>
  18. </div>
  19. <div class="user">
  20. <div class="top">
  21. <h5>林丽</h5><p>18500667882</p>
  22. </div>
  23. <div class="bottom">
  24. 北京市 海淀区 中关村软件园 信息科技大厦1号楼410#
  25. </div>
  26. </div>
  27. <div class="more">
  28. <span class="iconfont icon-more"></span>
  29. </div>
  30. </div>
  31. <!-- 商品 -->
  32. <div class="pannel goods">
  33. <div class="pic">
  34. <a href="#"><img src="uploads/pic.png" alt=""></a>
  35. </div>
  36. <div class="info">
  37. <h5>康贝尔 非接触式红外体温仪 领券立减30元 婴儿级材质 测温...</h5>
  38. <p><span>粉色</span><span>红外体温计</span></p>
  39. <div class="price">
  40. <span class="red">¥<i>266</i></span>
  41. <span>¥299</span>
  42. </div>
  43. </div>
  44. <div class="count">
  45. <i class="iconfont icon-x"></i><span>1</span>
  46. </div>
  47. </div>
  48. <!-- 其他信息 -->
  49. <!-- <div class="pannel rest">
  50. </div> -->
  51. <section class="pannel rest">
  52. <div>
  53. <h5>配送方式</h5>
  54. <p>顺丰快递</p>
  55. </div>
  56. <div>
  57. <h5>买家备注</h5>
  58. <p>希望可以尽快发货,谢谢~</p>
  59. </div>
  60. <div>
  61. <h5>支付方式</h5>
  62. <p>支付宝</p>
  63. </div>
  64. </section>
  65. <section class="pannel sumprice">
  66. <div>
  67. <h5>商品总价</h5>
  68. <p>299.00</p>
  69. </div>
  70. <div>
  71. <h5>运费</h5>
  72. <p>0.00</p>
  73. </div>
  74. <div>
  75. <h5>折扣</h5>
  76. <p>-¥30.00</p>
  77. </div>
  78. </section>
  79. </div>
  80. <!-- 底部支付:固定定位 -->
  81. <!-- 固定定位会脱标 -->
  82. <div class="pay">
  83. <!-- 一定要选好大盒子一共先分为几个标签,设置大盒子的布局,然后再在大的盒子标签里面添加小的标签 -->
  84. <div class="left">
  85. <!-- 不要随便换行,会有空格 -->
  86. 合计:
  87. <span class="red"><i>266.00</i></span>
  88. </div>
  89. <div class="right">
  90. <a href="#">去支付</a>
  91. </div>
  92. </div>
  93. </body>
  94. </html>

 3.css代码

  1. body {
  2. background-color: #f7f7f8;
  3. }
  4. /* 公共样式 */
  5. .red {
  6. color: #cf4444;
  7. }
  8. .pannel {
  9. margin-bottom: 10px;
  10. background-color: #fff;
  11. border-radius: 5px;
  12. }
  13. /* 主体内容 */
  14. .main {
  15. /* 80px为了内容不被底部区域盖住 */
  16. padding: 12px 11px 80px;
  17. }
  18. .user_msg {
  19. padding: 15px 0 15px 11px;
  20. display: flex;
  21. justify-content: space-between;
  22. height: 85px;
  23. align-items: center;
  24. }
  25. .user_msg .location {
  26. width: 30px;
  27. height: 30px;
  28. margin-right: 10px;
  29. background-image: linear-gradient(90deg,
  30. #6fc2aa 5%,
  31. #54b196 100%);
  32. border-radius: 50%;
  33. text-align: center;
  34. line-height: 30px;
  35. color: #fff;
  36. }
  37. .user_msg .more {
  38. width: 44px;
  39. height: 44px;
  40. text-align: center;
  41. line-height: 44px;
  42. }
  43. .user_msg .user {
  44. flex: 1;
  45. }
  46. .user_msg .user .top {
  47. display: flex;
  48. }
  49. .user_msg .user .top h5 {
  50. width: 55px;
  51. font-size: 15px;
  52. color: #262626;
  53. font-weight: 400;
  54. }
  55. .user_msg .user .top p {
  56. font-size: 13px;
  57. color: #333333;
  58. }
  59. .user_msg .user .bottom {
  60. margin-top: 5px;
  61. font-size: 12px;
  62. }
  63. /* 商品 */
  64. .goods {
  65. display: flex;
  66. padding: 11px 0 11px 11px;
  67. justify-content: space-between;
  68. height: 107px;
  69. }
  70. .goods .pic {
  71. width: 85px;
  72. height: 85px;
  73. border-radius: 2px;
  74. margin-right: 10px;
  75. }
  76. .goods .count {
  77. width: 44px;
  78. height: 44px;
  79. text-align: center;
  80. line-height: 44px;
  81. }
  82. .goods .info {
  83. flex: 1;
  84. /* background-color: skyblue; */
  85. }
  86. .goods .info h5 {
  87. font-size: 13px;
  88. color: #262626;
  89. font-weight: 400;
  90. }
  91. .goods .info p {
  92. width: 95px;
  93. height: 16px;
  94. margin: 5px 0;
  95. background-color: #f7f7f8;
  96. font-size: 12px;
  97. color: #888;
  98. }
  99. .goods .info p span:first-child {
  100. margin-right: 5px;
  101. }
  102. .goods .info .price {
  103. font-size: 12px;
  104. }
  105. .goods .info .price i{
  106. font-size: 16px;
  107. }
  108. .goods .info .price span:last-child {
  109. margin-left: 5px;
  110. color: #999;
  111. text-decoration: line-through;
  112. }
  113. /* 其他信息区域 */
  114. .rest {
  115. padding: 15px;
  116. }
  117. .rest div {
  118. display: flex;
  119. margin-bottom: 30px;
  120. }
  121. /* 找到第一个和第三个div设置主轴对齐方式 */
  122. .rest div:nth-child(2n+1) {
  123. justify-content: space-between;
  124. }
  125. /* 第二行标题和p之间的距离 */
  126. .rest div:nth-child(2) h5 {
  127. margin-right: 20px;
  128. }
  129. .rest p {
  130. font-size: 13px;
  131. color: #262626;
  132. font-weight: 400;
  133. }
  134. .rest div:nth-child(2) p {
  135. font-size: 12px;
  136. color: #989898;
  137. }
  138. .rest div:last-child {
  139. margin-bottom: 0px;
  140. }
  141. .sumprice {
  142. padding: 15px;
  143. }
  144. .sumprice div {
  145. display: flex;
  146. margin-bottom: 30px;
  147. justify-content: space-between;
  148. }
  149. .sumprice div:last-child {
  150. margin-bottom: 0;
  151. }
  152. /* 底部支付 */
  153. .pay {
  154. position: fixed;
  155. left: 0;
  156. bottom: 0;
  157. display: flex;
  158. /* 主轴对齐方式 */
  159. justify-content: space-between;
  160. /* 侧轴对齐方式 */
  161. align-items: center;
  162. padding: 0 11px;
  163. width: 100%;
  164. height: 80px;
  165. /* background-color: pink; */
  166. border-top: 1px solid #ededed;
  167. }
  168. .pay .left {
  169. font-size: 12px;
  170. }
  171. .pay i {
  172. font-size: 20px;
  173. }
  174. .pay .right a {
  175. display: inline-block;
  176. width: 90px;
  177. height: 35px;
  178. border-radius: 3px;
  179. text-align: center;
  180. line-height: 35px;
  181. color: #fff;
  182. font-size: 13px;
  183. background-image: linear-gradient(90deg,
  184. #6fc2aa 5%,
  185. #54b196 100%);
  186. }

五、主轴方向

1.目标:使用flex-direction改变元素排列方向
2.思考:Flex布局模型中,弹性盒子默认沿着哪个方向排列?
    答:水平方向
3.思考:如何实现内容垂直排列?
4.主轴默认是水平方向,侧轴默认是垂直方向
5.修改主轴方向属性:flex-direction
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. li {
  13. list-style: none;
  14. }
  15. .box li {
  16. /* 1.先确定主轴方向,2.再选择对应的属性实现主轴或者是侧轴居中 */
  17. display: flex;
  18. /* 修改主轴的方向:列 */
  19. /* 侧轴就是水平方向 */
  20. flex-direction: column;
  21. /* 视觉效果:实现盒子水平居中 */
  22. align-items: center;
  23. /* 视觉效果:垂直居中 */
  24. /* justify-content: center; */
  25. width: 80px;
  26. height: 80px;
  27. border: 1px solid #ccc;
  28. }
  29. .box img {
  30. width: 32px;
  31. height: 32px;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <div class="box">
  37. <ul>
  38. <li>
  39. <img src="media.png" alt="">
  40. <span>媒体</span>
  41. </li>
  42. </ul>
  43. </div>
  44. </body>
  45. </html>

​​​​​​​ 

六、弹性盒子换行

1.目标:使用flex-wrap实现弹性盒子多行排列效果

2.思考:默认情况下,多个弹性盒子如何显示?

弹性盒子换行显示:flex-wrap:wrap;

3.注意点:

在前面如果使用浮动来写的话,如果给盒子设置了宽高,那么如果一行排不满的情况下会换行排,但在在弹性布局中,如果给盒子设置了宽高,当小盒子的宽度大于了大盒子的宽度的时候,他不会换行排,而是根据他的弹性,给每个盒子都自动压缩宽度

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. .box {
  14. display: flex;
  15. /* flex-wrap: wrap; */
  16. height: 500px;
  17. border: 1px solid #000;
  18. }
  19. .box div {
  20. width: 100px;
  21. height: 100px;
  22. background-color: pink;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="box">
  28. <div>1</div>
  29. <div>2</div>
  30. <div>3</div>
  31. <div>4</div>
  32. <div>5</div>
  33. <div>6</div>
  34. <div>7</div>
  35. <div>8</div>
  36. </div>
  37. </body>
  38. </html>

  1. .box {
  2. display: flex;
  3. flex-wrap: wrap;
  4. height: 500px;
  5. border: 1px solid #000;
  6. }

七、调整行对齐方式

 1.进行了换行之后,会看到每一行之间是有间距的,这个是换行之后的行对齐方式,可以使用align-content属性来设置他的间距,取值基本与justify-content一样,但是没有evenly

  1. .box {
  2. display: flex;
  3. flex-wrap: wrap;
  4. /* 调节行对齐方式 */
  5. align-content: center;
  6. /* align-content: space-between; */
  7. height: 500px;
  8. border: 1px solid #000;
  9. }

八、PC端小兔仙项目

九、移动端适配

1.rem:目前多数企业在用的解决方案

2.vw/vh:未来的解决方案

3.rem:

媒体查询

flexible.js

1)目标:能够使用rem单位设置网页元素的尺寸
2)网页效果:

屏幕宽度不同,网页元素尺寸不同(等比例缩放)

3)rem单位

> 相对单位

> rem单位是相对于HTML标签的字号计算结果

> 1rem = 1HTML字号大小

使用rem之前需要将html设置字号

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. html {
  13. font-size: 20px;
  14. }
  15. /* 1rem=1html标签字号大小 */
  16. .box {
  17. width: 5rem;
  18. height: 3rem;
  19. background-color: pink;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="box"></div>
  25. </body>
  26. </html>
​​​​​​​
4)思考:

a.手机屏幕大小不同,分辨率不同,如何设置不同的HTML标签字号?

b.设备宽度不同,HTML标签字号设置多少合适?

5)媒体查询

a.目标:能够使用媒体查询设置差异化CSS样式

b.写法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* 使用媒体查询,根据不同的视口宽度,设置不同的根字号 */
  9. @media (width:375px) {
  10. html {
  11. font-size: 40px;
  12. }
  13. }
  14. @media (width:320px) {
  15. html {
  16. font-size:30px;
  17. }
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. </body>
  23. </html>
6)根据不同的设备,HTML设置多少合适?

目前rem布局方案中,将网页等分为10份,HTML标签的字号为视口宽度的1/10

7)rem适配原理

a.目标:实现在不同宽度的设备中,网页元素尺寸等比缩放效果

b.rem单位尺寸

> 确定设计稿对应的设备的HTML标签字号

查看设计稿宽度----> 确定参考设备宽度(视口宽度)---->确定基准根字号(1/10视口宽度)

> rem单位的尺寸

rem单位尺寸 = px单位数值/基准根字号

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. @media (width:320px) {
  9. html {
  10. font-size: 32px;
  11. }
  12. }
  13. @media (width:375px) {
  14. html {
  15. font-size: 37.5px;
  16. }
  17. }
  18. @media (width:414px) {
  19. html {
  20. font-size: 41.4px;
  21. }
  22. }
  23. .box {
  24. /* 68*29 */
  25. /* width:68px */
  26. /* 设计稿:375 HTML 37.5 68/37.5 */
  27. width: 1.813rem;
  28. height: 0.733rem;
  29. background-color: pink;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="box"></div>
  35. </body>
  36. </html>
8)flexible

a.目标:使用flexible.js实现不同的窗口适配

b.我们需要根据不同的视口宽度进行不同的媒体查询来设置字号大小,但是每个手机的宽度都不一样,如果自己写得写好多媒体查询,导入了flexible文件,就可以不用写媒体查询来进行适配

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .box {
  9. /* 68*29 */
  10. /* width:68px */
  11. /* 设计稿:375 HTML 37.5 68/37.5 */
  12. width: 1.813rem;
  13. height: 0.733rem;
  14. background-color: pink;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div class="box"></div>
  20. <script src="js/flexible.js"></script>
  21. </body>
  22. </html>

4.Less

1)目标:使用Less运算写法完成px单位到rem单位的转换

2)思考:在px单位转换到rem单位过程中,那项工作是最麻烦的?

答:除法运算

3)Less是一个CSS预处理器,Less文件的后缀是.less

4)扩充了CSS语言,使CSS具备一定的逻辑性,计算能力

5)注意:浏览器不识别Less代码,目前阶段,网页要引入对应的CSS文件

6)编译插件

Easy Less:vscode插件

作用:less文件保存自动生成css文件

7)使用:

安装完成之后,我们只需要写.less文件,保存就会生成同名的.css文件

8)Less语法

目标:使用Less语法快速编译生成CSS代码

a.注释

> 单行注释://

mac的单行注释的快捷键:command+/

> 块注释:/* */

mac的多行注释的快捷键:option+shift+a

> 生成的css代码中单行注释是不显示的

b.运算

> 加、减、乘直接书写计算表达式

> 除法需要添加小括号或. 

  1. .box {
  2. width: 100 + 10px;
  3. width: 100 - 20px;
  4. width: 100 * 2px;
  5. // 除法
  6. width: (68 / 37.5rem);
  7. // height: 29 ./ 37.5rem;
  8. }
  1. .box {
  2. width: 110px;
  3. width: 80px;
  4. width: 200px;
  5. width: 1.81333333rem;
  6. }

c.​Less嵌套后代选择器

嵌套:

> 思考:书写CSS选择器时,如何避免样式冲突?

> 作用:快速生成后代选择器

 > 注意:

&不生成后代选择器,表示当前选择器,通常配合伪类或伪元素使用

  1. .father {
  2. color: red;
  3. .son {
  4. width: 100px;
  5. &:hover {
  6. color: green;
  7. }
  8. }
  9. }
  1. .father {
  2. color: red;
  3. }
  4. .father .son {
  5. width: 100px;
  6. }
  7. .father .son:hover {
  8. color: green;
  9. }

d.使用Less变量设置属性值

思考:网页中,文字颜色基本都是统一的,如果网站改版,变换文字颜色,如何修改代码?

> 把颜色提前存储到一个容器,设置属性值为这个容器名

> 变量:存储数据,方便使用和修改

> 语法:定义变量:@变量名:值;

              使用变量:CSS属性:@变量名 

  1. // 1.定义 2.使用
  2. @color:pink;
  3. .box {
  4. color: @color;
  5. }
  6. .father {
  7. color: @color;
  8. }
  1. .box {
  2. color: pink;
  3. }
  4. .father {
  5. color: pink;
  6. }

e.能够使用Less导入语法引入其他Less文件

思考:开发网页时,网页如何引入公共样式

》开发网页的时候如果想要引入外部的样式,那么就需要link一下css样式,如果我们有基础的base的less,然后不想每一个都生成css文件,然后每一个都引入的话,我们可以直接在我们写的less文件中,导入base.less,这样直接就把base.less的css文件样式导入到了我们自己写的less文件中

》Less导入

导入:@import"文件路径“

.less文件

  1. @import './01-体验less.less';
  2. // 如果是less文件导入,后缀可以省略掉less
  3. @import './02-Less注释';

.css文件

  1. .father {
  2. background-color: pink;
  3. width: 1.81333333rem;
  4. }
  5. .father .son {
  6. background-color: blue;
  7. }
  8. /*
  9. 块注释
  10. */
  11. /*
  12. 第一行
  13. 第二行
  14. 第三行
  15. */

d.使用Less语法导出CSS文件

思考:目前,Less文件导出的CSS文件位置是哪里?

方法一:配置EasyLess插件,实现所有Less有相同的导出路径

配置插件:设置---->搜索Easyless------>在setting.json中编辑----->添加代码(注意,必须是双引号)

点击左下角的设置图标选择settings

搜索Easy

选择下面的Edit in settings.json 

 在json里面写要导出的css的路径,我们要在css文件夹中导入,如果有css文件夹就直接在css文件夹中生成,如果没有css文件夹,那么就会创建一个css文件夹

  1. "less.compile": {
  2. "out": "./css/"
  3. }

方法二:

在需要导出的less文件里面直接写// out:./abc/

上面的文件都是生成跟less同样的文件名,如果想要生成不同的文件名,那么就自己书写要生成的文件名

e.是否所有的文件都需要导出CSS文件?

禁止导出:在less文件第一行添加://out:false

不是所有的文件都需要导出css文件,比如我们的base.less文件,直接在自己的less文件引入就可以

  1. // out:false
  2. .box {
  3. background-color: pink;
  4. }

十、项目实现-游乐园项目

如果想要这个项目的资源和源代码,私信我或者底部评论

1.实现的效果

2.html代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <link rel="short cut icon" href="favicon.ico">
  8. <link rel="stylesheet" href="lib/iconfont/iconfont.css">
  9. <link rel="stylesheet" href="css/index.css">
  10. </head>
  11. <body>
  12. <!-- 主体内容 -->
  13. <div class="main">
  14. <!-- banner -->
  15. <div class="banner">
  16. <ul>
  17. <li><a href="#"><img src="./uploads/banner_1.png" alt=""></a></li>
  18. </ul>
  19. </div>
  20. <!-- 乐园活动标题 -->
  21. <div class="title">
  22. <h4>乐园活动</h4>
  23. </div>
  24. <!-- 活动 -->
  25. <!-- 内容多了可以自动滑动 -->
  26. <section class="item">
  27. <div class="pic">
  28. <a href="#"><img src="uploads/item_2.png" alt=""></a>
  29. <!-- 收藏图标 -->
  30. <i class="iconfont icon-shoucang1"></i>
  31. <!-- 活动状态 -->
  32. <div class="active off">进行中</div>
  33. </div>
  34. <div class="txt">
  35. <div class="top">
  36. <h5>摄影兴趣班- 7天教会你精通摄影,培养孩子兴趣从娃娃抓起</h5>
  37. <p>免费</p>
  38. </div>
  39. <div class="bottom">
  40. <p>
  41. <i class="iconfont icon-qizhi"></i>
  42. <span>200</span>人报名
  43. </p>
  44. <p>
  45. <i class="iconfont icon-shizhong"></i>
  46. <span>本周六</span>开始
  47. </p>
  48. </div>
  49. </div>
  50. </section>
  51. <section class="item">
  52. <div class="pic">
  53. <a href="#"><img src="uploads/item_2.png" alt=""></a>
  54. <!-- 收藏图标 -->
  55. <i class="iconfont icon-shoucang1"></i>
  56. <!-- 活动状态 -->
  57. <div class="active off">进行中</div>
  58. </div>
  59. <div class="txt">
  60. <div class="top">
  61. <h5>摄影兴趣班- 7天教会你精通摄影,培养孩子兴趣从娃娃抓起</h5>
  62. <p>免费</p>
  63. </div>
  64. <div class="bottom">
  65. <p>
  66. <i class="iconfont icon-qizhi"></i>
  67. <span>200</span>人报名
  68. </p>
  69. <p>
  70. <i class="iconfont icon-shizhong"></i>
  71. <span>本周六</span>开始
  72. </p>
  73. </div>
  74. </div>
  75. </section>
  76. <section class="item">
  77. <div class="pic">
  78. <a href="#"><img src="uploads/item_2.png" alt=""></a>
  79. <!-- 收藏图标 -->
  80. <i class="iconfont icon-shoucang1"></i>
  81. <!-- 活动状态 -->
  82. <div class="active off">进行中</div>
  83. </div>
  84. <div class="txt">
  85. <div class="top">
  86. <h5>摄影兴趣班- 7天教会你精通摄影,培养孩子兴趣从娃娃抓起</h5>
  87. <p>免费</p>
  88. </div>
  89. <div class="bottom">
  90. <p>
  91. <i class="iconfont icon-qizhi"></i>
  92. <span>200</span>人报名
  93. </p>
  94. <p>
  95. <i class="iconfont icon-shizhong"></i>
  96. <span>本周六</span>开始
  97. </p>
  98. </div>
  99. </div>
  100. </section>
  101. <section class="item">
  102. <div class="pic">
  103. <a href="#"><img src="uploads/item_2.png" alt=""></a>
  104. <!-- 收藏图标 -->
  105. <i class="iconfont icon-shoucang1"></i>
  106. <!-- 活动状态 -->
  107. <div class="active off">进行中</div>
  108. </div>
  109. <div class="txt">
  110. <div class="top">
  111. <h5>摄影兴趣班- 7天教会你精通摄影,培养孩子兴趣从娃娃抓起</h5>
  112. <p>免费</p>
  113. </div>
  114. <div class="bottom">
  115. <p>
  116. <i class="iconfont icon-qizhi"></i>
  117. <span>200</span>人报名
  118. </p>
  119. <p>
  120. <i class="iconfont icon-shizhong"></i>
  121. <span>本周六</span>开始
  122. </p>
  123. </div>
  124. </div>
  125. </section>
  126. <section class="item">
  127. <div class="pic">
  128. <a href="#"><img src="uploads/item_2.png" alt=""></a>
  129. <!-- 收藏图标 -->
  130. <i class="iconfont icon-shoucang1"></i>
  131. <!-- 活动状态 -->
  132. <div class="active off">进行中</div>
  133. </div>
  134. <div class="txt">
  135. <div class="top">
  136. <h5>摄影兴趣班- 7天教会你精通摄影,培养孩子兴趣从娃娃抓起</h5>
  137. <p>免费</p>
  138. </div>
  139. <div class="bottom">
  140. <p>
  141. <i class="iconfont icon-qizhi"></i>
  142. <span>200</span>人报名
  143. </p>
  144. <p>
  145. <i class="iconfont icon-shizhong"></i>
  146. <span>本周六</span>开始
  147. </p>
  148. </div>
  149. </div>
  150. </section>
  151. </div>
  152. <!-- 底部工具栏 -->
  153. <footer>
  154. <a href="#" class="current">
  155. <i class="iconfont icon-index-copy"></i>
  156. <p>首页</p>
  157. </a>
  158. <a href="#">
  159. <i class="iconfont icon-index-copy"></i>
  160. <p>首页</p>
  161. </a>
  162. <a href="#">
  163. <i class="iconfont icon-index-copy"></i>
  164. <p>首页</p>
  165. </a>
  166. </footer>
  167. <script src="js/flexible.js"></script>
  168. </body>
  169. </html>

3.less代码 

  1. @import './base.less';
  2. @import './normalize.less';
  3. // 设置根字号 变量,存储37.5
  4. @rootSize: 37.5rem;
  5. body {
  6. background-color: #F0F0F0;
  7. }
  8. // 主体内容
  9. .main {
  10. padding-bottom: (50 / @rootSize);
  11. //banner
  12. .banner {
  13. height: (160 / @rootSize);
  14. }
  15. // 活动标题
  16. .title {
  17. height: (40 / @rootSize);
  18. line-height: (40 / @rootSize);
  19. padding-left: (15 / @rootSize);
  20. h4 {
  21. font-size: (14 / @rootSize);
  22. color: #3c3c3c;
  23. }
  24. }
  25. //活动
  26. .item {
  27. margin-bottom: (10 / @rootSize);
  28. //图片区域
  29. .pic {
  30. position: relative;
  31. height: (160 / @rootSize);
  32. // 收藏图标
  33. i {
  34. position: absolute;
  35. top: (15 / @rootSize);
  36. right: (18 / @rootSize);
  37. font-size: (24 / @rootSize);
  38. }
  39. // 活动图标
  40. .active {
  41. position: absolute;
  42. left: (15 / @rootSize);
  43. top: (-4 / @rootSize);
  44. width: (68 / @rootSize);
  45. height: (29 / @rootSize);
  46. background-image: url(../images/status_active.png);
  47. background-size: contain;
  48. font-size: (12 / @rootSize);
  49. text-align: center;
  50. line-height: (25 / @rootSize);
  51. color: #fff;
  52. // 交集选择器 必须是active标签同时应用了off这个类
  53. &.off {
  54. background-image: url(../images/status_default.png);
  55. }
  56. }
  57. // .off {
  58. // //灰色图片
  59. // }
  60. }
  61. // 文字
  62. .txt {
  63. padding: (10 / @rootSize) (15 / @rootSize);
  64. background-color: #fff;
  65. .top {
  66. display: flex;
  67. justify-content: space-between;
  68. h5 {
  69. width: (290 / @rootSize);
  70. font-size: (15 / @rootSize);
  71. color: #3c3c3c;
  72. font-weight: normal;
  73. }
  74. p {
  75. font-size: (15 / @rootSize);
  76. color: #FE6249;
  77. }
  78. }
  79. .bottom {
  80. display: flex;
  81. margin-top: (10 / @rootSize);
  82. p {
  83. margin-right: (15 / @rootSize);
  84. font-size: (11 / @rootSize);
  85. i {
  86. font-size: (11 / @rootSize);
  87. }
  88. color: #B4B4B4;
  89. }
  90. }
  91. }
  92. }
  93. }
  94. // 底部工具栏
  95. // 定位脱标,不再是块级,得设置宽度
  96. footer {
  97. position: fixed;
  98. bottom: 0;
  99. left: 0;
  100. display: flex;
  101. justify-content: space-around;
  102. align-items: center;
  103. width: 100%;
  104. height: (50 / @rootSize);
  105. background-color: #FECA49 ;
  106. text-align: center;
  107. a {
  108. color: #D78B09;
  109. font-size: (11 / @rootSize);
  110. .icon-index-copy {
  111. font-size: (24 / @rootSize);
  112. }
  113. // a.current
  114. &.current {
  115. color: #fff;
  116. }
  117. }
  118. }

十一、vw / vh

1.目标:能够使用vw单位设置网页元素的尺寸

1)相对单位

2)相对视口的尺寸计算结果

3)vw:viewport width

1vw = 1/100视口宽度

4)vh:viewport height

1vh = 1/100视口高度

2.vw体验

vw和vh能够自动的根据屏幕的宽度和高度进行适配,自动进行适配,不用使用媒体查询根据不同的屏幕宽度进行计算,也不用导入flexible.js

1)vw体验

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* 1. vw = 1/100视口宽度 */
  9. .box {
  10. width: 50vw;
  11. height: 34vw;
  12. background-color: pink;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div class="box"></div>
  18. </body>
  19. </html>

 

187.5 = 3.75*50

127.5 = 3.75 *34 

195 = 3.90 *50

132.59 = 3.90*34

3.vh体验

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* 2.vh= 1/100视口高度 */
  9. .box {
  10. width: 50vh;
  11. height: 34vh;
  12. background-color: pink;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div class="box"></div>
  18. </body>
  19. </html>

 

333.5 = 50 * 6.67

226.77 = 34 * 6.67

422 = 8.44 * 50

286.95 = 8.44 * 34 

4.vw适配原理

1)目标:实现在不同宽度的设备中,网页元素尺寸等比缩放效果

2)vw单位尺寸

a.确定设计稿宽度------> 确定参考设备宽度(视口宽度)------> 确定wm尺寸(1/100视口宽度)

b.vw单位的尺寸 = px单位数值 / (1/100视口宽度)

  1. // out:./
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. }
  6. .box {
  7. width: (68 / 3.75vw);
  8. height: (29 / 3.75vw);
  9. background-color: pink;
  10. }
  11. .box2 {
  12. width: (68 / 6.67vh);
  13. height: (29 / 6.67vh);
  14. background-color: green;
  15. }

全写vw可以,全写vh可以,但是不要一个写vw,一个写vh,而且使用vh和vw布局的时候不一定两个大小都一样

十二、项目实战-----使用vw完成B站首页 

1.实现的效果

2.html代码 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>B站</title>
  7. <link rel="stylesheet" href="fonts/iconfont.css">
  8. <link rel="stylesheet" href="css/index.css">
  9. </head>
  10. <body>
  11. <!-- 1。头部 -->
  12. <header>
  13. <div class="top">
  14. <div class="left">
  15. <a href="#">
  16. <i class="iconfont Navbar_logo"></i>
  17. </a>
  18. </div>
  19. <div class="right">
  20. <!-- 在flex布局中,即使是行内标签,加宽加高也生效 -->
  21. <a href="#">
  22. <!-- 字体图标一般用i标签来进行包裹 -->
  23. <i class="iconfont ic_search_tab"></i>
  24. </a>
  25. <a href="#" class="login"><img src="images/login.png" alt=""></a>
  26. <a href="#" class="download"><img src="images/download.png" alt=""></a>
  27. </div>
  28. </div>
  29. <div class="bottom">
  30. <div class="tab">
  31. <ul>
  32. <li><a href="#" class="current">首页</a></li>
  33. <li><a href="#">动画</a></li>
  34. <li><a href="#">番剧</a></li>
  35. <li><a href="#">国创</a></li>
  36. <li><a href="#">首页</a></li>
  37. </ul>
  38. </div>
  39. <div class="more">
  40. <a href="#">
  41. <i class="iconfont general_pulldown_s"></i>
  42. </a>
  43. </div>
  44. </div>
  45. </header>
  46. <!-- tab栏:菜单的个数和内容的个数相等的 -->
  47. <!-- 2.视频区域 -->
  48. <!--视频区域布局 -->
  49. <section class="video_content">
  50. <!-- 一份视频,共计有5个菜单,应该有5份视频的div -->
  51. <div class="video_list">
  52. <a href="#">
  53. <div class="pic">
  54. <img src="images/1.jpg" alt="">
  55. <div class="count">
  56. <p>
  57. <i class="iconfont icon_shipin_bofangshu"></i>
  58. <span>132</span>
  59. </p>
  60. <p>
  61. <i class="iconfont icon_shipin_danmushu"></i>
  62. <span>2.4</span>
  63. </p>
  64. </div>
  65. </div>
  66. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  67. </a>
  68. <a href="#">
  69. <div class="pic">
  70. <img src="images/1.jpg" alt="">
  71. <div class="count">
  72. <p>
  73. <i class="iconfont icon_shipin_bofangshu"></i>
  74. <span>132</span>
  75. </p>
  76. <p>
  77. <i class="iconfont icon_shipin_danmushu"></i>
  78. <span>2.4</span>
  79. </p>
  80. </div>
  81. </div>
  82. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  83. </a>
  84. <a href="#">
  85. <div class="pic">
  86. <img src="images/1.jpg" alt="">
  87. <div class="count">
  88. <p>
  89. <i class="iconfont icon_shipin_bofangshu"></i>
  90. <span>132</span>
  91. </p>
  92. <p>
  93. <i class="iconfont icon_shipin_danmushu"></i>
  94. <span>2.4</span>
  95. </p>
  96. </div>
  97. </div>
  98. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  99. </a>
  100. <a href="#">
  101. <div class="pic">
  102. <img src="images/1.jpg" alt="">
  103. <div class="count">
  104. <p>
  105. <i class="iconfont icon_shipin_bofangshu"></i>
  106. <span>132</span>
  107. </p>
  108. <p>
  109. <i class="iconfont icon_shipin_danmushu"></i>
  110. <span>2.4</span>
  111. </p>
  112. </div>
  113. </div>
  114. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  115. </a>
  116. <a href="#">
  117. <div class="pic">
  118. <img src="images/1.jpg" alt="">
  119. <div class="count">
  120. <p>
  121. <i class="iconfont icon_shipin_bofangshu"></i>
  122. <span>132</span>
  123. </p>
  124. <p>
  125. <i class="iconfont icon_shipin_danmushu"></i>
  126. <span>2.4</span>
  127. </p>
  128. </div>
  129. </div>
  130. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  131. </a>
  132. <a href="#">
  133. <div class="pic">
  134. <img src="images/1.jpg" alt="">
  135. <div class="count">
  136. <p>
  137. <i class="iconfont icon_shipin_bofangshu"></i>
  138. <span>132</span>
  139. </p>
  140. <p>
  141. <i class="iconfont icon_shipin_danmushu"></i>
  142. <span>2.4</span>
  143. </p>
  144. </div>
  145. </div>
  146. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  147. </a>
  148. <a href="#">
  149. <div class="pic">
  150. <img src="images/1.jpg" alt="">
  151. <div class="count">
  152. <p>
  153. <i class="iconfont icon_shipin_bofangshu"></i>
  154. <span>132</span>
  155. </p>
  156. <p>
  157. <i class="iconfont icon_shipin_danmushu"></i>
  158. <span>2.4</span>
  159. </p>
  160. </div>
  161. </div>
  162. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  163. </a>
  164. <a href="#">
  165. <div class="pic">
  166. <img src="images/1.jpg" alt="">
  167. <div class="count">
  168. <p>
  169. <i class="iconfont icon_shipin_bofangshu"></i>
  170. <span>132</span>
  171. </p>
  172. <p>
  173. <i class="iconfont icon_shipin_danmushu"></i>
  174. <span>2.4</span>
  175. </p>
  176. </div>
  177. </div>
  178. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  179. </a>
  180. <a href="#">
  181. <div class="pic">
  182. <img src="images/1.jpg" alt="">
  183. <div class="count">
  184. <p>
  185. <i class="iconfont icon_shipin_bofangshu"></i>
  186. <span>132</span>
  187. </p>
  188. <p>
  189. <i class="iconfont icon_shipin_danmushu"></i>
  190. <span>2.4</span>
  191. </p>
  192. </div>
  193. </div>
  194. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  195. </a>
  196. <a href="#">
  197. <div class="pic">
  198. <img src="images/1.jpg" alt="">
  199. <div class="count">
  200. <p>
  201. <i class="iconfont icon_shipin_bofangshu"></i>
  202. <span>132</span>
  203. </p>
  204. <p>
  205. <i class="iconfont icon_shipin_danmushu"></i>
  206. <span>2.4</span>
  207. </p>
  208. </div>
  209. </div>
  210. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  211. </a>
  212. <a href="#">
  213. <div class="pic">
  214. <img src="images/1.jpg" alt="">
  215. <div class="count">
  216. <p>
  217. <i class="iconfont icon_shipin_bofangshu"></i>
  218. <span>132</span>
  219. </p>
  220. <p>
  221. <i class="iconfont icon_shipin_danmushu"></i>
  222. <span>2.4</span>
  223. </p>
  224. </div>
  225. </div>
  226. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  227. </a>
  228. <a href="#">
  229. <div class="pic">
  230. <img src="images/1.jpg" alt="">
  231. <div class="count">
  232. <p>
  233. <i class="iconfont icon_shipin_bofangshu"></i>
  234. <span>132</span>
  235. </p>
  236. <p>
  237. <i class="iconfont icon_shipin_danmushu"></i>
  238. <span>2.4</span>
  239. </p>
  240. </div>
  241. </div>
  242. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  243. </a>
  244. <a href="#">
  245. <div class="pic">
  246. <img src="images/1.jpg" alt="">
  247. <div class="count">
  248. <p>
  249. <i class="iconfont icon_shipin_bofangshu"></i>
  250. <span>132</span>
  251. </p>
  252. <p>
  253. <i class="iconfont icon_shipin_danmushu"></i>
  254. <span>2.4</span>
  255. </p>
  256. </div>
  257. </div>
  258. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  259. </a>
  260. <a href="#">
  261. <div class="pic">
  262. <img src="images/1.jpg" alt="">
  263. <div class="count">
  264. <p>
  265. <i class="iconfont icon_shipin_bofangshu"></i>
  266. <span>132</span>
  267. </p>
  268. <p>
  269. <i class="iconfont icon_shipin_danmushu"></i>
  270. <span>2.4</span>
  271. </p>
  272. </div>
  273. </div>
  274. <div class="txt ellipsis-2">你活着补刀就是对我最大的侮辱,韩信最强王者组单杀集锦9455#</div>
  275. </a>
  276. </div>
  277. </section>
  278. <!-- 3.按钮固定 -->
  279. </body>
  280. </html>

3.less代码

  1. @import './base.less';
  2. @vw:3.75vw;
  3. @color:#fb7299;
  4. // 头部固定
  5. header {
  6. position: fixed;
  7. width: 100%;
  8. // width: 100vw;
  9. height: (84 / @vw);
  10. background-color: #fff;
  11. // 使下面的视频区域在头部的下面
  12. z-index: 1;
  13. // top
  14. .top {
  15. display: flex;
  16. justify-content: space-between;
  17. align-items: center;
  18. height: (44 / 3.75vw);
  19. // background-color: green;
  20. padding-left: (18 / @vw);
  21. padding-right: (12 / 3.75vw);
  22. .left {
  23. .iconfont {
  24. font-size: (28 / 3.75vw);
  25. color: @color;
  26. }
  27. }
  28. .right {
  29. display: flex;
  30. .iconfont {
  31. font-size: (22 / @vw);
  32. color: #ccc;
  33. }
  34. .login {
  35. width: (24 / @vw);
  36. height: (24 / @vw);
  37. margin-left: (24 / @vw);
  38. }
  39. .download {
  40. width: (72 / @vw);
  41. height: (24 / @vw);
  42. margin-left: (24 / @vw);
  43. }
  44. }
  45. }
  46. // 底部
  47. .bottom {
  48. display: flex;
  49. justify-content: space-between;
  50. height: (40 / @vw);
  51. border-bottom: (1 / @vw) solid #eee;
  52. .more {
  53. a {
  54. display: block;
  55. width: (40 / @vw);
  56. height: (40 / @vw);
  57. // background-color: pink;
  58. text-align: center;
  59. line-height: (40 / @vw);
  60. color: #ccc;
  61. .iconfont {
  62. font-size: (22 / @vw);
  63. }
  64. }
  65. }
  66. //使用了flex布局,行内标签加宽加高也生效,但是下面的例子是给ul加了flex,
  67. // 所以li是加宽加高生效的,但是a加宽加高不生效,flex是直接给父级加才会生效,如果给爷爷加不生效
  68. .tab {
  69. ul {
  70. display: flex;
  71. li {
  72. padding: 0 (16 / @vw);
  73. line-height:(38 / @vw);
  74. a {
  75. display: block;
  76. height: (38 / @vw);
  77. font-size: (14 / @vw);
  78. &.current {
  79. color: @color;
  80. border-bottom: 2px solid @color;
  81. }
  82. }
  83. }
  84. }
  85. }
  86. }
  87. }
  88. // 视频
  89. .video_content {
  90. // margin-top: (84 / @vw);
  91. padding: (84 / @vw) (5 / @vw) 0;
  92. // padding: 0 (5 / @vw) ;
  93. .video_list {
  94. display: flex;
  95. // 弹性盒子换行
  96. flex-wrap: wrap;
  97. a {
  98. width: 50%;
  99. padding: (8 / @vw) (5 / @vw);
  100. // background-color: pink;
  101. font-size: (12 / @vw);
  102. .txt {
  103. margin-top: (5 / @vw);
  104. }
  105. .pic {
  106. position: relative;
  107. .count {
  108. position: absolute;
  109. left: 0;
  110. bottom: 0;
  111. width: 100%;
  112. display: flex;
  113. justify-content: space-between;
  114. padding: (8 / @vw);
  115. background-image: linear-gradient(to top,rgba(0,0,0,0.3));
  116. color: #fff;
  117. .iconfont {
  118. // 图跟字居中
  119. vertical-align: middle;
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }
   

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/447375
推荐阅读
相关标签
  

闽ICP备14008679号