博客列表 >Flex项目属性

Flex项目属性

王佳祥
王佳祥原创
2020年06月25日 14:16:471158浏览

Flex项目属性

一、Flex父元素属性

1. display

  1. 用来定义一个 flex 容器。如果设置为 flex 则容器呈现为块状元素,设置为inline- flex 则容器呈现为行内元素。

CSS 代码:

  1. .container {
  2. display: flex; /* or inline-flex */
  3. }

2. flex-direction

  1. flex-direction 属性确立了主轴,从而定义了 flex 项在 flex 容器中的排布方向。 Flexbox 是单向布局,有些时候我们也称作一维布局。 可以将 flex 项视为主要沿着水平行或垂直列排布。

CSS 代码:

  1. .container {
  2. flex-direction: row | row-reverse | column | column-reverse;
  3. }

3. flex-wrap

  1. 默认情况下,flex 项会尽可能地尝试排在同一行上(行或列),通过设置 flex-wrap 来决定 flex 项是否允需要换行。

CSS 代码:

  1. .container{
  2. flex-wrap: nowrap | wrap | wrap-reverse;
  3. }
  1. nowrap (默认值) : 不换行
  2. wrap: 换行
  3. wrap-reverse: flex 项将 从下到上 根据实际情况排布再多行上折行。

4. flex-flow

  1. 这是 flex-direction flex-wrap 属性的缩写形式。同时定义 flex 容器的主轴和交叉轴。默认是 row nowrap

CSS 代码:

  1. flex-flow: <‘flex-direction’> || <‘flex-wrap’>

5. justify-content

  1. justify-content 属性定义了flex 项沿主轴方向的对齐方式。

CSS 代码:

  1. .container {
  2. justify-content: flex-start | flex-end | center | space-between | space-around;
  3. }

  1. flex-start(默认值):左对齐
  2. flex-end:右对齐
  3. center 居中
  4. space-between:两端对齐,项目之间的间隔都相等。
  5. space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

6. align-items

  1. align-items 定义了 flex 项如何沿当前行在交叉轴上排布的默认行为。可以将其视为交叉轴(垂直于主轴)上的对齐方式。

CSS 代码:

  1. .container {
  2. align-items: flex-start | flex-end | center | baseline | stretch;
  3. }

  1. flex-start:交叉轴的起点对齐。
  2. flex-end:交叉轴的终点对齐。
  3. center:交叉轴的中点对齐。
  4. baseline: 项目的第一行文字的基线对齐。
  5. stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

7.align-content

  1. 当交叉轴上有剩余空间时,align-content 可以设置 flex 容器中的 在交叉轴上如何分配剩余空间,类似于 justify-content 在主轴上对齐单个 flex 项的方式。

CSS 代码:

  1. .container {
  2. align-content: flex-start | flex-end | center | space-between | space-around | stretch;
  3. }

  1. flex-start:与交叉轴的起点对齐。
  2. flex-end:与交叉轴的终点对齐。
  3. center:与交叉轴的中点对齐。
  4. space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  5. space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  6. stretch(默认值):轴线占满整个交叉轴。

二、flex 项目属性

1. order

  1. 默认情况下,flex 项按源(HTML结构)顺序排布。但是,order 属性可以控制它们在 flex 容器中的显示顺序。

CSS 代码:

  1. .item {
  2. order: <integer>; /* 默认值是 0 */
  3. }

  1. order值越小排列越靠前

2. flex-grow(放大因子)

  1. flex-grow 定义了 flex 项在有可用剩余空间时拉伸比例。
  2. 它接受的值作为比例,无单位。它规定了 flex 项应该占 flex 容器中可用空间的比例。
  3. 如果所有 flex 项的 flex-grow 都设置为 1 ,则父容器中的剩余空间将平均分配给所有子项。 如果其中一个子项的值为 2 ,则该子项占用的剩余空间是其他子项的两倍(或者至少会尽力获得)。

CSS 代码:

  1. .item {
  2. flex-grow: <number>; /* default 0 */
  3. }

注:负值对于 flex-grow 无效。

比如我们得 flex 容器中有 6 个 flex 项,每个 flex 项的 flex-grow 初始值都是 1。如果我们将每个 flex 项的 flex-grow 相加起来,总和为 6。因此 flex 容器的总宽度被平均分成了 6 份。每个 flex 项增长到填充容器可用空间的1/6。

当我们将第 3 个 flex 项的 flex-grow 设置为 2 时,flex 容器现在被分成了 7 等份,因为所有 flex-grow 属性是:1 + 1 + 2 + 1 + 1 + 1。第 3 个 flex 项占了整个容器空间的 2/7,其他的占了 1/7。

3. flex-shrink(缩小因子)

  1. flex-shrink 定义了 flex 项的收缩的能力。(注:与 flex-grow 拉伸正好相反,flex-shrink 决定 flex 项允许收缩多少比例。)

CSS 代码:

  1. .item {
  2. flex-shrink: <number>; /* default 1 */
  3. }

注:负值对于 flex-shrink 无效。

4. flex-basis

  1. flex-basis 定义了在分配剩余空间之前 flex 项默认的大小。可以设置为某个长度值(e.g. 20%, 5rem,等)或者关键字。关键字 auto 意味着 flex 项会按照其本来的大小显示

CSS 代码:

  1. .item {
  2. flex-basis: <length> | auto; /* default auto */
  3. }

如果设置为 0 , 则 flex 项内容周围的空隙不会根据 flex-grow 按比例分配,如果设置为 auto,则 flex 项周围额外的空袭会根据 flex-grow 按照比例分配

5. flex

  1. flex flex-growflex-shrinkflex-basis 三个属性的缩写。其中第二个和第三个参数(flex-shrink flex-basis)是可选的。默认值为0 1 auto

CSS 代码:

  1. .item {
  2. flex: none | [ < 'flex-grow'> < 'flex-shrink'>? || < 'flex-basis'> ]
  3. }

推荐使用缩写形式而不是单独地设置每一个属性,缩写形式中会更加智能地计算出相关值。

6. align-self

  1. align-self 属性允许某个单独的 flex 项覆盖默认的对齐方式

CSS 代码:

  1. .item {
  2. align-self: auto | flex-start | flex-end | center | baseline | stretch;
  3. }

三、FlexPC端布局

  • 代码:
  1. title>PC端布局的通用解决方案</title>
  2. <style>
  3. /*初始化*/
  4. * {
  5. font-size: 16px;
  6. padding: 0;
  7. margin: 0;
  8. box-sizing: border-box; /*不加内边距和边框的宽度,默认是content-box*/
  9. }
  10. body {
  11. display: flex;
  12. flex-flow: column nowrap; /*从上到下排列,不换行*/
  13. }
  14. nav {
  15. display: flex;
  16. justify-content: start;
  17. align-items: center;
  18. min-width: 80px;
  19. background: #000;
  20. }
  21. nav > a:not(:first-of-type) {
  22. width: 150px;
  23. text-align: center;
  24. color: #fff;
  25. text-decoration: none;
  26. height: 50px;
  27. line-height: 50px;
  28. margin-left: 40px;
  29. }
  30. nav > a:not(:first-of-type):hover {
  31. background: rgba(87, 87, 87, 0.5);
  32. color: rgb(241, 79, 79);
  33. }
  34. nav > a:last-of-type {
  35. margin-left: auto;
  36. }
  37. nav > a > img {
  38. height: 50px;
  39. }
  40. .container {
  41. display: flex;
  42. flex-flow: row nowrap;
  43. justify-content: center;
  44. align-items: center;
  45. margin: 10px auto;
  46. }
  47. aside {
  48. min-width: 200px;
  49. min-height: 600px;
  50. background: lightgoldenrodyellow;
  51. }
  52. main {
  53. min-width: 600px;
  54. min-height: 600px;
  55. margin: 0 10px;
  56. background: lightblue;
  57. }
  58. footer {
  59. display: flex;
  60. height: 80px;
  61. background: #000;
  62. justify-content: center;
  63. align-items: center;
  64. flex-flow: column nowrap;
  65. }
  66. footer > div {
  67. display: flex;
  68. justify-content: center;
  69. }
  70. footer > div:first-of-type a {
  71. width: 100px;
  72. font-size: 14px;
  73. height: 20px;
  74. }
  75. a {
  76. text-decoration: none;
  77. color: rgb(184, 184, 184);
  78. }
  79. footer > div:last-of-type {
  80. margin-top: 10px;
  81. color: rgb(184, 184, 184);
  82. }
  83. footer > div:last-of-type span {
  84. font-size: 14px;
  85. margin: 0 20px;
  86. }
  87. </style>
  88. </head>
  89. <body>
  90. <!-- 页眉 -->
  91. <header>
  92. <nav>
  93. <a href=""><img src="logo.png" alt="" /></a>
  94. <a href="">首页</a>
  95. <a href="">电器城</a>
  96. <a href="">医药馆</a>
  97. <a href="">营业厅</a>
  98. <a href="">登录/注册</a>
  99. </nav>
  100. </header>
  101. <!-- 主体 -->
  102. <div class="container">
  103. <aside>左边栏</aside>
  104. <main>主体内容</main>
  105. <aside>右边栏</aside>
  106. </div>
  107. <!-- 页脚 -->
  108. <footer>
  109. <div>
  110. <a href="">关于天猫</a>
  111. <a href="">帮助中心</a>
  112. <a href="">开放平台</a>
  113. <a href="">诚聘英才</a>
  114. <a href="">联系我们</a>
  115. <a href="">网站合作</a>
  116. <a href="">法律声明</a>
  117. <a href="">隐私权政策</a>
  118. <a href="">知识产权</a>
  119. <a href="">廉正举报</a>
  120. <a href="">规则意见征集</a>
  121. </div>
  122. <div>
  123. <span>浙江省网络食品销售第三方平台提供者备案:浙网食A33010002</span>
  124. <span> 互联网药品交易服务资格证书:国A20150001</span>
  125. </div>
  126. </footer>
  127. </body>
  128. </html>
  • 预览:

四、Flex移动端布局

  • 代码:
  1. <title>移动端布局</title>
  2. <style>
  3. * {
  4. margin: 0;
  5. padding: 0;
  6. box-sizing: border-box;
  7. }
  8. a {
  9. text-decoration: none;
  10. color: #666;
  11. }
  12. html {
  13. width: 100vw; /*当前可视区的宽度*/
  14. /* vh:可视区的高度 */
  15. height: 100vh;
  16. font-size: 14px;
  17. color: #666;
  18. }
  19. body {
  20. min-width: 360px;
  21. background: #fff;
  22. display: flex;
  23. flex-flow: column nowrap;
  24. }
  25. body > header {
  26. color: #fff;
  27. background: #333;
  28. height: 30px;
  29. display: flex;
  30. align-items: center;
  31. justify-content: space-between;
  32. position: fixed;
  33. width: 100vw;
  34. padding: 0 15px;
  35. }
  36. /*轮播图*/
  37. body > .slider {
  38. height: 180px;
  39. }
  40. body > .slider > img {
  41. width: 100%;
  42. }
  43. /*导航区*/
  44. nav {
  45. height: 200px;
  46. margin-bottom: 10px;
  47. display: flex;
  48. /*转为多行容器*/
  49. flex-flow: row wrap;
  50. }
  51. nav div {
  52. width: 25vw;
  53. display: flex;
  54. flex-flow: column nowrap;
  55. align-items: center;
  56. }
  57. nav > div > a:first-of-type {
  58. text-align: center;
  59. }
  60. nav > div img {
  61. width: 50%;
  62. }
  63. /* 热销商品 */
  64. .hot-goods {
  65. display: flex;
  66. flex-flow: row wrap;
  67. justify-content: space-around;
  68. margin: 10vw 0;
  69. }
  70. .hot-goods > .goods-img {
  71. display: flex;
  72. flex-flow: column nowrap;
  73. justify-content: center;
  74. align-items: center;
  75. }
  76. .hot-goods .hot {
  77. color: coral;
  78. }
  79. /* 商品列表 */
  80. .shop {
  81. display: flex;
  82. flex-flow: column nowrap;
  83. margin-top: 10vw;
  84. font-size: small;
  85. }
  86. .shop > .goods-desc {
  87. display: flex;
  88. margin-bottom: 10vw;
  89. }
  90. .shop > .goods-desc img {
  91. width: 20vw;
  92. }
  93. .shop > .goods-desc > a:first-of-type {
  94. margin-left: 5vw;
  95. }
  96. .shop > .goods-desc > a:last-of-type {
  97. margin: 0 10vw;
  98. }
  99. .shop > .goods-desc .hot {
  100. color: coral;
  101. }
  102. footer {
  103. display: flex;
  104. justify-content: space-around;
  105. height: 10vw;
  106. background: rgb(231, 231, 231);
  107. position: fixed;
  108. bottom: 0;
  109. width: 100vw;
  110. }
  111. footer > a {
  112. display: flex;
  113. flex-flow: column nowrap;
  114. justify-content: center;
  115. text-align: center;
  116. }
  117. footer > a > span:first-of-type {
  118. color: coral;
  119. }
  120. footer > a > span:last-of-type {
  121. color: #333;
  122. }
  123. </style>
  124. </head>
  125. <body>
  126. <!-- 页眉 -->
  127. <header>
  128. <a href="">LOGO</a>
  129. <span class="iconfont">&#xe61f;</span>
  130. </header>
  131. <!-- 轮播图 -->
  132. <div class="slider">
  133. <img src="static/images/banner.jpg" alt="" />
  134. </div>
  135. <!-- 主导航区 -->
  136. <nav>
  137. <div>
  138. <a href=""><img src="static/images/link4.webp" alt="" /></a>
  139. <a href="">优惠劵</a>
  140. </div>
  141. <div>
  142. <a href=""><img src="static/images/link1.webp" alt="" /></a>
  143. <a href="">超市精选</a>
  144. </div>
  145. <div>
  146. <a href=""><img src="static/images/link2.webp" alt="" /></a>
  147. <a href="">服装百货</a>
  148. </div>
  149. <div>
  150. <a href=""><img src="static/images/link3.webp" alt="" /></a>
  151. <a href="">数码精品</a>
  152. </div>
  153. <div>
  154. <a href=""><img src="static/images/link4.webp" alt="" /></a>
  155. <a href="">优惠劵</a>
  156. </div>
  157. <div>
  158. <a href=""><img src="static/images/link1.webp" alt="" /></a>
  159. <a href="">超市精选</a>
  160. </div>
  161. <div>
  162. <a href=""><img src="static/images/link2.webp" alt="" /></a>
  163. <a href="">服装百货</a>
  164. </div>
  165. <div>
  166. <a href=""><img src="static/images/link3.webp" alt="" /></a>
  167. <a href="">数码精品</a>
  168. </div>
  169. </nav>
  170. <!-- 热销商品 -->
  171. <h2>
  172. 热销商品<span class="iconfont hot" style="color: red;">&#xe60b;</span>
  173. </h2>
  174. <div class="hot-goods">
  175. <div class="goods-img">
  176. <a href=""><img src="static/images/goods1.jpg" alt="" /></a>
  177. <p>Apple iPhone 11 128g</p>
  178. <div>
  179. <span>6299&nbsp;元</span>
  180. <span class="iconfont hot">&#xe602;</span>
  181. </div>
  182. </div>
  183. <div class="goods-img">
  184. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
  185. <p>华为笔记本电脑</p>
  186. <div>
  187. <span>8999&nbsp;元</span>
  188. <span class="iconfont hot">&#xe602;</span>
  189. </div>
  190. </div>
  191. <div class="goods-img">
  192. <a href=""><img src="static/images/goods1.jpg" alt="" /></a>
  193. <p>Apple iPhone 11 128g</p>
  194. <div>
  195. <span>6299&nbsp;元</span>
  196. <span class="iconfont hot">&#xe602;</span>
  197. </div>
  198. </div>
  199. <div class="goods-img">
  200. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
  201. <p>华为笔记本电脑</p>
  202. <div>
  203. <span>8999&nbsp;元</span>
  204. <span class="iconfont hot">&#xe602;</span>
  205. </div>
  206. </div>
  207. <div class="goods-img">
  208. <a href=""><img src="static/images/goods1.jpg" alt="" /></a>
  209. <p>Apple iPhone 11 128g</p>
  210. <div>
  211. <span>6299&nbsp;元</span>
  212. <span class="iconfont hot">&#xe602;</span>
  213. </div>
  214. </div>
  215. <div class="goods-img">
  216. <a href=""><img src="static/images/goods2.jpg" alt="" /></a>
  217. <p>华为笔记本电脑</p>
  218. <div>
  219. <span>8999&nbsp;元</span>
  220. <span class="iconfont hot">&#xe602;</span>
  221. </div>
  222. </div>
  223. </div>
  224. <!-- 商品列表 -->
  225. <h2>
  226. 商品列表<span class="iconfont hot" style="color: red;">&#xe64b;</span>
  227. </h2>
  228. <div class="shop">
  229. <div class="goods-desc">
  230. <a href=""><img src="static/images/p40.png" alt="" /></a>
  231. <a href=""
  232. >领劵200【12期免息+当天发】HUAWEI/华为P40
  233. 5G手机官方旗舰店官网正品华为mate30pro/直降nova7se/p40pro+
  234. <span class="iconfont hot" style="vertical-align: middle;"
  235. >&#xe675;</span
  236. ></a
  237. >
  238. </div>
  239. <div class="goods-desc">
  240. <a href=""><img src="static/images/i7.png" alt="" /></a>
  241. <a href=""
  242. >华为/HUAWEI&nbsp;MateBook&nbsp;X&nbsp;Pro2020款英特尔十代i7-10510U+16GB+512GB/1TBSSD独显笔记本
  243. <span class="iconfont hot" style="vertical-align: middle;"
  244. >&#xe675;</span
  245. >
  246. </a>
  247. </div>
  248. <div class="goods-desc">
  249. <a href=""><img src="static/images/p40.png" alt="" /></a>
  250. <a href=""
  251. >领劵200【12期免息+当天发】HUAWEI/华为P40
  252. 5G手机官方旗舰店官网正品华为mate30pro/直降nova7se/p40pro+
  253. <span class="iconfont hot" style="vertical-align: middle;"
  254. >&#xe675;</span
  255. ></a
  256. >
  257. </div>
  258. <div class="goods-desc">
  259. <a href=""><img src="static/images/i7.png" alt="" /></a>
  260. <a href=""
  261. >华为/HUAWEI&nbsp;MateBook&nbsp;X&nbsp;Pro2020款英特尔十代i7-10510U+16GB+512GB/1TBSSD独显笔记本
  262. <span class="iconfont hot" style="vertical-align: middle;"
  263. >&#xe675;</span
  264. >
  265. </a>
  266. </div>
  267. <div class="goods-desc">
  268. <a href=""><img src="static/images/p40.png" alt="" /></a>
  269. <a href=""
  270. >领劵200【12期免息+当天发】HUAWEI/华为P40
  271. 5G手机官方旗舰店官网正品华为mate30pro/直降nova7se/p40pro+
  272. <span class="iconfont hot" style="vertical-align: middle;"
  273. >&#xe675;</span
  274. ></a
  275. >
  276. </div>
  277. <div class="goods-desc">
  278. <a href=""><img src="static/images/i7.png" alt="" /></a>
  279. <a href=""
  280. >华为/HUAWEI&nbsp;MateBook&nbsp;X&nbsp;Pro2020款英特尔十代i7-10510U+16GB+512GB/1TBSSD独显笔记本
  281. <span class="iconfont hot" style="vertical-align: middle;"
  282. >&#xe675;</span
  283. >
  284. </a>
  285. </div>
  286. <div class="goods-desc">
  287. <a href=""><img src="static/images/p40.png" alt="" /></a>
  288. <a href=""
  289. >领劵200【12期免息+当天发】HUAWEI/华为P40
  290. 5G手机官方旗舰店官网正品华为mate30pro/直降nova7se/p40pro+
  291. <span class="iconfont hot" style="vertical-align: middle;"
  292. >&#xe675;</span
  293. ></a
  294. >
  295. </div>
  296. <div class="goods-desc">
  297. <a href=""><img src="static/images/i7.png" alt="" /></a>
  298. <a href=""
  299. >华为/HUAWEI&nbsp;MateBook&nbsp;X&nbsp;Pro2020款英特尔十代i7-10510U+16GB+512GB/1TBSSD独显笔记本
  300. <span class="iconfont hot" style="vertical-align: middle;"
  301. >&#xe675;</span
  302. >
  303. </a>
  304. </div>
  305. </div>
  306. <footer>
  307. <a href="">
  308. <span class="iconfont hot">&#xe60c;</span>
  309. <span>首页</span>
  310. </a>
  311. <a href="">
  312. <span class="iconfont hot">&#xe64b;</span>
  313. <span>分类</span>
  314. </a>
  315. <a href="">
  316. <span class="iconfont hot">&#xe602;</span>
  317. <span>购物车</span>
  318. </a>
  319. <a href="">
  320. <span class="iconfont hot">&#xe65b;</span>
  321. <span>未登录</span>
  322. </a>
  323. </footer>
  324. </body>
  325. </html>
  • 预览:

五、学习总结

只有通过多练习才能知道自己到底会不会,自己掌握了那些内容,自己是怎么理解的,还有哪些内容是自己不会的,从而帮助自己更快的学习。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议