1. 程式人生 > 實用技巧 >cc分享java:php中PC 和移動端 flex 通用佈局解決方案

cc分享java:php中PC 和移動端 flex 通用佈局解決方案

  • 1.flex 佈局 常用屬性

    • 宣告flexBox容器
      display: flex;

    • 主軸方向:預設行方向
      flex-direction: row;

    • 主軸上的專案是否換行
      flex-wrap: nowrap/wrap;

    • 簡寫:flex-flow:flex-direction flex-wrap;
      flex-flow: row nowrap;

    • 當主軸上存在剩餘空間時,控制空間在專案上的分配方案
      justify-content: flex-start;
      justify-content:flex-end;
      justify-content:center;

    • 僅適用於多行容器,控制專案的對齊方式

      align-content: flex-start;
      align-content: flex-end;
      align-content: center;

    • 控制所有專案在交叉軸上的對齊方式:
      align-items: stretch;預設值
      align-items: flex-start/center/flex-end

    • 設定專案在主軸空間上的增長因子:flex-grow: 2

      1. .container > .item:first-of-type {
      2. /* 第一個增長因子2,第2個和第3個是1,增長因子之和: 2 + 1 + 1 = 4 */
      3. /* 120 / 增長因子之和4 = 30px */
      4. flex-grow: 2;
      5. flex-grow: 0.5;
      6. /* 增長因子和: 0.5 + 1 + 1 = 2.5 */
      7. /* 120px / 2.5 = 48px */
      8. /* 第2個,第3個: 108px */
      9. /* 第1個最終是84px */ }
    • 設定專案在主軸空間上的收縮因子:flex-shrink: 1;

      1. .container > .item {
      2. /* 收縮因子有效的前提是, 所有專案寬度之和必須大於主軸上的當前空間大小 */
      3. width: 160px;
      4. /* 不收縮 */
      5. flex-shrink: 0;
      6. /* 收縮,預設值是1,允許收縮填充主軸全部空間 */
      7. /* 收縮因子之和:  1 + 1 +1 = 3 */
      8. /* 180 / 3 = 60,每個專案需要消化掉60 */
      9. flex-shrink: 1; }
      10. 收縮因子是小數,例如0.5,必須單獨給專案設定
      11. .container > .item:first-of-type {
      12. /* 收縮因子之和: 0.5 + 1 + 1 = 2.5 */
      13. /* 180px / 2.5 = 72px */
      14. /* 第一個專案: 160 - (72*0.5) = 124px */
      15. /* 第二個專案, 第三個專案: 160 -72 = 88px */
      16. flex-shrink: 0.5;}
    • 設定專案在主軸空間上的收縮因子尺寸規則:初始大小 < 基礎尺寸 < 最小寬度

      1. .container > .item {
      2. /* 原始大小,初始大小 */
      3. width: 60px;
      4. /* 基礎尺寸優先順序大於原始大小 */
      5. flex-basis: 80px;
      6. width: 60px;
      7. /* 最小寬度優先順序又大於基礎尺寸 */
      8. min-width: 100px; }
    • 增長因子,收縮因子,基礎尺寸屬性的簡寫

      1. .container > .item {
      2. width: 60px;
      3. /* flex:放大因子 收縮因子 基礎尺寸 */
      4. /* 預設不放大,可收縮,尺寸使用原始大小 */
      5. flex: 0 1 auto;;
      6. /*最常用寫法:可放大、可收縮、尺寸自動 */
      7. flex: 1 1 auto;
      8. /* 等價於 */
      9. flex: 1;
      10. flex: auto;
      11. /* 禁止放大和收縮,儲存原樣 */
      12. flex: 0 0 auto;
      13. flex: none;
      14. /* 恢復原始尺寸 */
      15. /* flex: 0; */
      16. /* 等價於 */
      17. flex: 0 0 0%;
      18. /* 記住常用的值:0,1,auto用法 */
      19. /* 0:全部失效
      20. 1:全部有效
      21. auto:可放大、可縮小、基礎尺寸自動計算*/ }
  • 2.PC 端佈局的通用解決方案

  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>PC端佈局的通用解決方案</title>
  7. <style>
  8. /* 初始化 */
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. a {
  15. color: #666;
  16. text-decoration: none;
  17. }
  18. /* 將body轉為flex */
  19. body {
  20. min-width: 680px;
  21. display: flex;
  22. /* 主軸垂直方向,不換行 */
  23. flex-flow: column nowrap;
  24. }
  25. header,
  26. footer {
  27. height: 50px;
  28. border: solid 1px #000;
  29. }
  30. /* 將頁首轉為flex */
  31. header {
  32. display: flex;
  33. /* 所有專案在交叉軸方向居中顯示 */
  34. align-items: center;
  35. }
  36. header > a {
  37. /* 給每個彈性專案,禁止放大,允許收縮,尺寸給100px */
  38. flex: 0 1 100px;
  39. /* 文字在當前專案中居中 */
  40. text-align: center;
  41. }
  42. /* 設定 LOGO */
  43. header > a:first-of-type {
  44. margin-right: 50px;
  45. }
  46. header > a img:first-of-type {
  47. width: 100%;
  48. height: auto;
  49. padding-left: 20px;
  50. }
  51. header > a:last-of-type {
  52. margin-left: auto;
  53. }
  54. /* 設定滑鼠懸停效果,並忽略LOGO */
  55. header > a:hover:not(:first-of-type) {
  56. color: coral;
  57. }
  58. .container {
  59. display: flex;
  60. min-height: 400px;
  61. /* flex-grow: row nowrap; 預設值*/
  62. margin: 10px auto;
  63. justify-content: center;
  64. }
  65. .container > aside,
  66. .container > main {
  67. border: 1px solid #000;
  68. padding: 10px;
  69. }
  70. .container > aside {
  71. flex: 0 0 200px;
  72. }
  73. .container > aside > h2 {
  74. color: #5184eb;
  75. }
  76. .container > aside > ul {
  77. }
  78. .container > aside > ul li {
  79. list-style: none;
  80. padding: 5px 0px;
  81. line-height: 24px;
  82. text-decoration: grey;
  83. /* 單行文字不換行多餘文字顯示省略號 */
  84. width: 200px;
  85. white-space: nowrap;
  86. overflow: hidden;
  87. text-overflow: ellipsis;
  88. }
  89. .container > aside > ul li a {
  90. color: gray;
  91. font-size: 14px;
  92. word-wrap: break-word;
  93. word-break: normal;
  94. }
  95. .container > aside > ul li a:hover {
  96. color: #5184eb;
  97. }
  98. .container > main {
  99. flex: 0 0 600px;
  100. margin: 0px 10px;
  101. }
  102. footer {
  103. display: flex;
  104. flex-flow: column nowrap;
  105. text-align: center;
  106. }
  107. </style>
  108. </head>
  109. <body>
  110. <!-- 頁首 -->
  111. <header>
  112. <a href="#"><img src="./static//images/new_logo.png" /></a>
  113. <a href="#">要聞</a>
  114. <a href="#">抗肺炎</a>
  115. <a href="#">北京</a>
  116. <a href="#">娛樂</a>
  117. <a href="#">登入/註冊</a>
  118. </header>
  119. <!-- 主體 -->
  120. <div class="container">
  121. <!-- 左邊欄 -->
  122. <aside>
  123. <h2>熱點精選</h2>
  124. <ul>
  125. <li>
  126. <a href="" alt=""
  127. >著名電影表演藝術家於藍逝世享年99歲 曾塑造“江姐”等經典形象</a
  128. >
  129. </li>
  130. <li>
  131. <a href="" alt=""
  132. >武漢和北京都採用了所謂的混檢方法 這種方法可靠嗎?</a
  133. >
  134. </li>
  135. <li>
  136. <a href="" alt="">章瑩穎案民事訴訟再遭駁回:法官稱心理顧問無責</a>
  137. </li>
  138. <li>
  139. <a href="" alt=""
  140. >著名電影表演藝術家於藍逝世享年99歲 曾塑造“江姐”等經典形象</a
  141. >
  142. </li>
  143. <li>
  144. <a href="" alt=""
  145. >武漢和北京都採用了所謂的混檢方法 這種方法可靠嗎?</a
  146. >
  147. </li>
  148. <li>
  149. <a href="" alt="">章瑩穎案民事訴訟再遭駁回:法官稱心理顧問無責</a>
  150. </li>
  151. <li>
  152. <a href="" alt=""
  153. >著名電影表演藝術家於藍逝世享年99歲 曾塑造“江姐”等經典形象</a
  154. >
  155. </li>
  156. <li>
  157. <a href="" alt=""
  158. >武漢和北京都採用了所謂的混檢方法 這種方法可靠嗎?</a
  159. >
  160. </li>
  161. <li>
  162. <a href="" alt="">章瑩穎案民事訴訟再遭駁回:法官稱心理顧問無責</a>
  163. </li>
  164. </ul>
  165. </aside>
  166. <!-- 主體內容區 -->
  167. <main>
  168. <h2>武漢和北京都採用了所謂的混檢方法 這種方法可靠嗎?</h2>
  169. <p>
  170. 混檢大幅提升了核酸檢測能力,比如,現在北京的日檢測能力是20多萬,使用這種結合模式,可使日檢測能力在不增加人力物力的情況下,就可以達到200多萬。
  171. 新京報快訊
  172. 據國家衛健委官方微博訊息,“混檢”有兩種模式。一種是在取樣時,將幾個人如3人或5人分別取樣後,放至同一取樣管中,這種模式也叫做“混合取樣”或稱“混採”,北京多數情況下采用這種模式;另一種則是在實驗室檢測時,將3人或5人的樣本取相同體積混合在一起,也稱“樣本混合“。
  173. 從科學角度講,第一種“混採”模式,不會影響核酸檢測的敏感性,後一種將樣本混合檢測的模式,則對檢測敏感性有一定的影響,但影響程度是已知的。
  174. 在現場取樣中,如採用“混採”,要注意的是有序安排,如5人一組,每人持各自的條碼,取樣時每採一人,將該人條碼貼至取樣管上,這樣就可有效地避免取樣可能弄混的問題。
  175. 分析過程中,如採用“樣本混合”的混檢方案,在混合5人樣本時,也要注意樣本混合過程中,可能存在的樣本弄混問題。
  176. 混檢大幅提升了核酸檢測能力,比如,現在北京的日檢測能力是20多萬,使用這種結合模式,可使日檢測能力在不增加人力物力的情況下,就可以達到200多萬。
  177. 需要強調的是,對於發熱門診有症狀患者、密切接觸者等高風險人群檢測,還是應該採用單採單檢。對於低風險人群的篩查,則可以優先選擇“混檢”。
  178. </p>
  179. </main>
  180. <!-- 右邊欄 -->
  181. <aside>
  182. <h2>今日話題</h2>
  183. <ul>
  184. <li>
  185. <a href="" alt="">希臘紅燈區重開,嫖客只能在房間呆15分鐘?假訊息</a>
  186. </li>
  187. <li>
  188. <a href="" alt="">希臘紅燈區重開,嫖客只能在房間呆15分鐘?假訊息</a>
  189. </li>
  190. <li>
  191. <a href="" alt="">希臘紅燈區重開,嫖客只能在房間呆15分鐘?假訊息</a>
  192. </li>
  193. </ul>
  194. </aside>
  195. </div>
  196. <!-- 頁尾 -->
  197. <footer>
  198. <p>
  199. php中文網 ©版權所有 (2018-2022) | 備案號:
  200. <a href="">皖ICP-18********</a>
  201. </p>
  202. <p>中國.合肥市政務新區999號 | 電話: 0551-888999**</p>
  203. </footer>
  204. </body>
  205. </html>

pc 端解決方案:

  • 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>移動端的解決方案</title>
    7. <link rel="stylesheet" href="static/css/font-icon.css" />
    8. <style>
    9. /* 樣式初始化 */
    10. * {
    11. margin: 0;
    12. padding: 0;
    13. box-sizing: border-box;
    14. }
    15. a {
    16. color: #666;
    17. text-decoration: none;
    18. }
    19. html {
    20. /* vw: 可視區寬度,100指100份 */
    21. /* vh:可視區的高度,100指100份 */
    22. width: 100vw;
    23. height: 100vh;
    24. font-size: 14px;
    25. color: #666;
    26. }
    27. body {
    28. /* 設定最小寬度 */
    29. min-width: 360px;
    30. background-color: #fff;
    31. display: flex;
    32. flex-flow: column nowrap;
    33. }
    34. body > header {
    35. color: white;
    36. background-color: #333;
    37. height: 30px;
    38. display: flex;
    39. align-items: center;
    40. justify-content: space-between;
    41. position: fixed;
    42. width: 100vw;
    43. padding: 0 15px;
    44. }
    45. body > .slider {
    46. height: 180px;
    47. }
    48. body > .slider > img {
    49. /* width: 100%; */
    50. height: 100%;
    51. }
    52. /* 主導航區 */
    53. nav {
    54. height: 200px;
    55. margin-bottom: 10px;
    56. display: flex;
    57. /* 轉為多行容器 */
    58. flex-flow: row wrap;
    59. align-content: space-around;
    60. }
    61. nav div {
    62. width: 25%;
    63. display: flex;
    64. flex-flow: column nowrap;
    65. align-items: center;
    66. }阜新市地暖科技有限責任公司|貴港市形象策劃經銷部|亳州市裝飾設計培訓中心|以殺止殺網|拌稂子網|議論紛紛網|簡歷吧|鍋燒雞網|龍潛鳳採網|雲起龍驤網|一字不苟網|中鴿網
    67. nav > div > a:first-of-type {
    68. text-align: center;
    69. }
    70. nav > div img {
    71. width: 50%;
    72. }
    73. .hostgoods {
    74. padding-left: 20px;
    75. }
    76. /* 每個區域標題樣式 */
    77. .title {
    78. margin-top: 10px;
    79. font-size: 1.2rem;
    80. font-weight: normal;
    81. text-align: center;
    82. }
    83. /* 熱銷商品區 */
    84. .hot-goods {
    85. border-top: 1px solid #cdcdcd;
    86. margin-top: 10px;
    87. font-size: 0.8rem;
    88. display: flex;
    89. /* 水平多行容器 */
    90. flex-flow: row wrap;
    91. }
    92. .hot-goods img {
    93. width: 100%;
    94. }
    95. .hot-goods > .goods-img {
    96. /* 內邊距重置大小 */
    97. padding: 10px;
    98. box-sizing: border-box;
    99. /* 允許放大不允許縮小,否則專案不會換行,多行容器失效 */
    100. flex: 1 0 30vw;
    101. /* 再將每個商品描述轉為flex */
    102. display: flex;
    103. /* 主軸垂直且不允許換行 */
    104. flex-flow: column nowrap;
    105. justify-content: center;
    106. }
    107. /* 商品描述的最後一個區域轉flex,並設定專案在主軸上排列對齊方式 */
    108. .hot-goods > .goods-img > div {
    109. display: flex;
    110. /* 分散對齊 */
    111. justify-content: space-around;
    112. }
    113. /* 熱銷樣式 */
    114. .hot {
    115. color: coral;
    116. }
    117. /* 商品列表 */
    118. .list-goods {
    119. padding: 10px;
    120. border-top: 1px solid #cdcdcd;
    121. margin-top: 10px;
    122. font-size: 0.8rem;
    123. display: flex;
    124. /* 主軸必須垂直 */
    125. flex-flow: column nowrap;
    126. }
    127. /* 每個專案也轉為flex */
    128. .list-goods > .goods-desc {
    129. margin: 10px 0;
    130. display: flex;
    131. }
    132. /* 列表中每個專案的樣式,加些間距 */
    133. .list-goods > .goods-desc > a {
    134. padding: 10px;
    135. box-sizing: border-box;
    136. }
    137. .list-goods > .goods-desc > a:last-of-type:hover {
    138. color: lightseagreen;
    139. }
    140. /* 圖片全部適應專案空間 */
    141. .list-goods img {
    142. width: 100%;
    143. }
    144. body > footer {
    145. color: #666;
    146. background-color: #efefef;
    147. border-top: 1px solid #ccc;
    148. height: 55px;
    149. position: fixed;
    150. bottom: 0;
    151. width: 100vw;
    152. display: flex;
    153. justify-content: space-evenly;
    154. padding-bottom: 100px;
    155. }
    156. body > footer a {
    157. margin-top: 10px;
    158. font-size: 0.8rem;
    159. display: flex;
    160. /* 垂直排列不換行 */
    161. flex-flow: column nowrap;
    162. /* 交叉軸專案居中顯示 */
    163. align-items: center;
    164. }
    165. body > footer a > span:first-of-type {
    166. /* 圖示字型設定大一些 */
    167. font-size: 1.6rem;
    168. }
    169. </style>
    170. </head>
    171. <body>
    172. <!-- 頁首 -->
    173. <header>
    174. <a href="">LOGO</a>
    175. <span class="iconfont"></span>
    176. </header>
    177. <!-- 輪播圖 -->
    178. <div class="slider">
    179. <img src="static/images/banner.jpg" alt="banner" />
    180. </div>
    181. <!-- 主導航區 -->
    182. <nav>
    183. <div>
    184. <a href=""><img src="static/images/link1.webp"</a>
    185. <a href="">京東超市</a>
    186. </div>
    187. <div>
    188. <a href=""><img src="static/images/link2.webp" alt="" /></a>
    189. <a href="">服裝百貨</a>
    190. </div>
    191. <div>
    192. <a href=""><img src="static/images/link3.webp" alt="" /></a>
    193. <a href="">數碼精品</a>
    194. </div>
    195. <div>
    196. <a href=""><img src="static/images/link4.webp" alt="" /></a>
    197. <a href="">優惠劵</a>
    198. </div>
    199. <div>
    200. <a href=""><img src="static/images/link1.webp" alt="" /></a>
    201. <a href="">超市精選</a>
    202. </div>
    203. <div>
    204. <a href=""><img src="static/images/link2.webp" alt="" /></a>
    205. <a href="">服裝百貨</a>
    206. </div>
    207. <div>
    208. <a href=""><img src="static/images/link3.webp" alt="" /></a>
    209. <a href="">數碼精品</a>
    210. </div>
    211. <div>
    212. <a href=""><img src="static/images/link4.webp" alt="" /></a>
    213. <a href="">優惠劵</a>
    214. </div>
    215. </nav>
    216. <!-- 熱銷商品 -->
    217. <div class="hostgoods">
    218. <h2>
    219. 熱銷商品<span class="iconfont hot" style="color: coral;"></span>
    220. </h2>
    221. </div>
    222. <div class="hot-goods">
    223. <div class="goods-img">
    224. <a href=""><img src="static/images/goods1.jpg" alt="" /></a>
    225. <p>Apple iPhone 11 128G</p>
    226. <div>
    227. <span>62299 元</span>
    228. <span class="iconfont hot"></span>
    229. </div>
    230. </div>
    231. <div class="goods-img">
    232. <a href=""><img src="static/images/goods1.jpg" alt="" /></a>
    233. <p>Apple iPhone X 512G</p>
    234. <div>
    235. <span>8299 元</span>
    236. <span class="iconfont hot"></span>
    237. </div>
    238. </div>
    239. <div class="goods-img">
    240. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
    241. <p>華為膝上型電腦</p>
    242. <div>
    243. <span>5699 元</span>
    244. <span class="iconfont hot"></span>
    245. </div>
    246. </div>
    247. <div class="goods-img">
    248. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
    249. <p>小米膝上型電腦</p>
    250. <div>熘魚肚網衡陽網鳳穿金衣網滑溜鵪鶉網眾心塔牡丹蠍託網邁凱輪車隊官方網站創富原創小說網瑞時小說網道基原創小說網紅牛公司無彈窗小說網
    251. <span>3999 元</span>
    252. <span class="iconfont hot"></span>
    253. </div>
    254. </div>
    255. <div class="goods-img">
    256. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
    257. <p>聯想膝上型電腦</p>
    258. <div>
    259. <span>4399 元</span>
    260. <span class="iconfont hot"></span>
    261. </div>
    262. </div>
    263. </div>
    264. <!-- 商品列表區 -->
    265. <h2 class="title">
    266. 商品列表<span class="iconfont hot" style="color: coral;"></span>
    267. </h2>
    268. <div class="list-goods">
    269. <div class="goods-desc">
    270. <a href=""><img src="static/images/goods4.jpg" alt="" /></a>
    271. <a href=""
    272. >[白條24期免息]Apple蘋果iPhone 11 手機 128G 全網通, 免費領取500元話費,
    273. 今天17:00下單,明晨12:00之前送達,7天無理由退貨,官方提供售後,
    274. 以上都是我瞎編的<span
    275. class="iconfont hot"
    276. style="vertical-align: middle;"
    277. ></span
    278. ></a
    279. >
    280. </div>
    281. <div class="goods-desc">
    282. <a href=""><img src="static/images/goods3.jpg" alt="" /></a>
    283. <a href=""
    284. >[白條24期免息]Apple洗衣機,專業清洗蘋果手機,
    285. 蘋果電腦,iPad,洗好保證不能用, 免費領取500元保險費,
    286. 今天17:00下單,明晨12:00之前送達,7天無理由退貨,官方提供售後,
    287. 以上都是我瞎編的<span
    288. class="iconfont hot"
    289. style="vertical-align: middle;"
    290. ></span
    291. ></a
    292. >
    293. </div>
    294. <div class="goods-desc">
    295. <a href=""><img src="static/images/goods5.png" alt="" /></a>
    296. <a href=""
    297. >[白條24期免息]Apple蘋果iPhone 11 手機 128G 全網通, 免費領取500元話費,
    298. 今天17:00下單,明晨12:00之前送達,7天無理由退貨,官方提供售後,
    299. 以上都是我瞎編的<span
    300. class="iconfont hot"
    301. style="vertical-align: middle;"
    302. ></span
    303. ></a
    304. >
    305. </div>
    306. <div class="goods-desc">
    307. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
    308. <a href=""
    309. >[白條24期免息]華為筆記本MateBook 14 全面屏輕薄效能膝上型電腦
    310. 十代酷睿(i5 16G 512G MX250 觸控屏 多屏協同)灰, 以上都是我瞎編的<span
    311. class="iconfont hot"
    312. style="vertical-align: middle;"
    313. ></span
    314. ></a
    315. >
    316. </div>
    317. </div>
    318. <!-- 頁尾 -->
    319. <footer>
    320. <a href="">
    321. <span class="iconfont hot"></span>
    322. <span>首頁</span>
    323. </a>
    324. <a href="">
    325. <span class="iconfont hot"></span>
    326. <span>分類</span>
    327. </a>
    328. <a href="">
    329. <span class="iconfont hot"></span>
    330. <span>購物車</span>
    331. </a>
    332. <a href="">
    333. <span class="iconfont hot"></span>
    334. <span>未登入</span>
    335. </a>
    336. </footer>
    337. </body>
    338. </html>