Blogger Information
Blog 22
fans 1
comment 0
visits 17737
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第十期商城购物车和结算页面实战(2019-12-31)
齐齐
Original
866 people have browsed it

1.商城购物车

作业要求:商城购物车部分页面中包括全选,单选按钮,并选中的状态。数量按钮可以增加和减少,加入购物车的产品为多个。底部需要有结算按钮,数量和总金额。

1.1 对页面结构进行分析,总体分为五部分。用一个容器(content)将全部内容包裹,方便水平居中显示。

1.2 整个购物车的布局技术采用flex,先设置主轴方向为列。然后再对每一个部分进行下一步的处理。
1.3第一部分比较简单,为一张图片。第二部分,转成flex容器的中的项目,在水平方向两端对齐。第三部分,flex容器水平方向分散对齐。
1.4第四部分,设为flex容器后,修改主轴改为列方向。再对每一个产品详情进行设置,也转为flex容器,方便设置每一个行内块的宽度。再用相对定位技术,让每一小块对齐相应的信息栏。

1.5最后一部分,现将容器转为flex,水平方向靠右对齐,垂直方向居中对齐。然后再对每一个小细节,进行相应的css设置。

html代码部分

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>购物车</title>
  6. <link rel="stylesheet" href="shop_cart.css">
  7. </head>
  8. <body>
  9. <!--导入头部组件-->
  10. <div class="public-head">
  11. <a href="">网站首页</a>
  12. <a href="">专题</a>
  13. <a href="">网站导航</a>
  14. <a href="">二手商品</a>
  15. <a href="">讨论区</a>
  16. <span>
  17. <a href=""><i class="iconfont icon-huiyuan2"></i> 登陆</a>
  18. <a href="">免费注册</a>
  19. </span>
  20. </div>
  21. <!--购物车-->
  22. <div class="shop-cart">
  23. <div class="content">
  24. <div class="cart-logo"><img src="../../static/images/logo.jpg" alt=""></div>
  25. <div class="cart-num">
  26. <span>全部商品 3</span>
  27. <div class="cart-address">
  28. <span>配送至:</span>
  29. <select name="cart-address">
  30. <option value="0">重庆xx号街道</option>
  31. <option value="1">沿河东路南段文星路314号</option>
  32. <option value="0">重庆市渝中区邹容路100号重庆时代广场B2</option>
  33. <option value="1" selected>重庆渝中区大溪沟人和街华福巷大厦1F(靠大礼堂300米)</option>
  34. </select>
  35. </div>
  36. </div>
  37. <div class="cart-top">
  38. <span><input type="checkbox" id="all" checked><label for="all">全选</label></span>
  39. <span>商品信息</span>
  40. <span>单价</span>
  41. <span>数量</span>
  42. <span>金额</span>
  43. <span>操作</span>
  44. </div>
  45. <div class="cart-list">
  46. <div class="cart-infos">
  47. <span><input type="checkbox" name="select" checked></span>
  48. <span class="pic-infos">
  49. <a href=""><img src="../../static/images/lbx.jpg" alt=""></a>
  50. <a href="">买2送1七天量】黄金搭档中老年型多种复合维生素片年货礼盒保健品</a>
  51. </span>
  52. <span>¥288.00</span>
  53. <span><input type="number" name="conunt" value="1" min="1"/></span>
  54. <span>¥288.00</span>
  55. <span>
  56. <a href="">删除</a>
  57. </span>
  58. </div>
  59. <div class="cart-infos">
  60. <span><input type="checkbox" name="select" checked></span>
  61. <span class="pic-infos">
  62. <a href=""><img src="../../static/images/bx.jpg" alt=""></a>
  63. <a href="">海尔出品Leader/统帅 BC/BD-427TD 427升大容量商用冷藏冷冻冰柜</a>
  64. </span>
  65. <span>¥2299.00</span>
  66. <span><input type="number" name="conunt" value="1" min="1"/></span>
  67. <span>¥2299.00</span>
  68. <span>
  69. <a href="">删除</a>
  70. </span>
  71. </div>
  72. <div class="cart-infos">
  73. <span><input type="checkbox" name="select" checked></span>
  74. <span class="pic-infos">
  75. <a href=""><img src="../../static/images/bx1.jpg" alt=""></a>
  76. <a href="">海尔出品Leader/统帅 BCD-335WLDPC法式多门风冷无霜节能冰箱家用</a>
  77. </span>
  78. <span>¥3099.00</span>
  79. <span><input type="number" name="conunt" value="1" min="1"/></span>
  80. <span>¥3099.00</span>
  81. <span>
  82. <a href="">删除</a>
  83. </span>
  84. </div>
  85. </div>
  86. <div class="cart-bottom">
  87. <span>数量:3</span>
  88. <span>合计:<i>¥5686</i></span>
  89. <button>去结算</button>
  90. </div>
  91. </div>
  92. <!--导入底部组件-->
  93. <footer class="public-footer">
  94. <div>
  95. <a href="">简介</a>
  96. <a href="">联系我们</a>
  97. <a href="">招聘信息</a>
  98. <a href="">友情链接</a>
  99. <a href="">用户服务协议</a>
  100. <a href="">隐私权声明</a>
  101. <a href="">法律投诉声明</a>
  102. </div>
  103. <div><span>LOGO</span></div>
  104. <div>
  105. <p>2019 fengniao.com. All rights reserved . 安徽闹着玩有限公司(无聊网)版权所有</p>
  106. <p>皖ICP证150110号 京ICP备14323013号-2 皖公网安备110108024357788号</p>
  107. <p>违法和不良信息举报电话: 0551-1234567 举报邮箱: admin@baidu.com</p>
  108. </div>
  109. <div>
  110. <p>关注公众号</p>
  111. <img src="../../static/images/erwei-code.png" alt="">
  112. </div>
  113. </footer>
  114. </body>
  115. </html>

css部分

  1. @import "../public_reset.css";
  2. @import "../public_head/public_head.css";
  3. @import "../public_footer/public_footer.css";
  4. .shop-cart>.content{
  5. /*设置主体为1200px,居中对齐,背景为白色*/
  6. width: 1200px;
  7. margin: 20px auto;
  8. padding:20px;
  9. background: white;
  10. }
  11. .shop-cart>.content>.cart-num{
  12. display: flex;
  13. justify-content: space-between;
  14. margin: 20px 0;
  15. border-bottom: 2px solid #e6e6e6;
  16. line-height: 50px;
  17. }
  18. .shop-cart>.content>.cart-num>span{
  19. font-size: 16px;
  20. color: #f60;
  21. }
  22. .shop-cart>.content>.cart-top{
  23. display: flex;
  24. justify-content: space-around;
  25. height: 40px;
  26. align-items: center;
  27. }
  28. .shop-cart>.content>.cart-list{
  29. margin: 30px 0;
  30. }
  31. .shop-cart>.content>.cart-list>.cart-infos{
  32. display: flex;
  33. justify-content: space-around;
  34. align-items: center;
  35. height: 100px;
  36. }
  37. .shop-cart>.content>.cart-list>.cart-infos:hover{
  38. background:wheat;
  39. }
  40. .shop-cart>.content>.cart-list>.cart-infos>.pic-infos{
  41. width: 280px;
  42. display: flex;
  43. align-items: center;
  44. }
  45. .shop-cart>.content>.cart-list>.cart-infos>.pic-infos>a:hover{
  46. color: #f60;
  47. }
  48. .shop-cart>.content>.cart-list>.cart-infos>.pic-infos img{
  49. width: 60px;
  50. height: 60px;
  51. margin-right: 10px;
  52. }
  53. .shop-cart>.content>.cart-list>.cart-infos>:nth-of-type(4) input{
  54. width: 40px;
  55. }
  56. .shop-cart>.content>.cart-list>.cart-infos>:nth-of-type(1){
  57. position: relative;
  58. left: 20px;
  59. }
  60. .shop-cart>.content>.cart-list>.cart-infos>:nth-of-type(2){
  61. position: relative;
  62. left: -30px;
  63. }
  64. .shop-cart>.content>.cart-list>.cart-infos>:nth-of-type(3){
  65. position: relative;
  66. left: -100px;}
  67. .shop-cart>.content>.cart-list>.cart-infos>:nth-of-type(4){
  68. position: relative;
  69. left: -75px;}
  70. .shop-cart>.content>.cart-list>.cart-infos>:nth-last-of-type(2){
  71. position: relative;
  72. left: -55px;}
  73. .shop-cart>.content>.cart-list>.cart-infos>:last-of-type{
  74. position: relative;
  75. left: -22px;}
  76. .shop-cart>.content>.cart-bottom{
  77. display: flex;
  78. justify-content: end;
  79. align-items: center;
  80. }
  81. .shop-cart>.content>.cart-bottom>:not(:last-child){
  82. width:195px ;
  83. }
  84. .shop-cart>.content>.cart-bottom>span>i{
  85. color: red;
  86. font-size: 16px;
  87. font-style: normal;
  88. }
  89. .shop-cart>.content>.cart-bottom>:last-child{
  90. width: 120px;
  91. height: 40px;
  92. border:none;
  93. background: red;
  94. color: white;
  95. cursor: pointer;
  96. font-size: 16px;
  97. }
  98. .shop-cart>.content>.cart-bottom>:last-child:hover{
  99. background: #178cee;
  100. }

整体效果展示

2.结算页

作业要求:商城购物车有收货地址和提交按钮。

2.1 对防的结算页面,去掉不需要部分将其分为了七部分。也用到一个容器(content)将全部内容包裹,让整体水平居中显示。

2.2 第二部分信息地址部分,用的无序列表,让容器转为flex后,再对里面每一个地址栏在进行转为flex容器,里面的内容为垂直显示,水平项目的对齐方式为分散。

2.3 第四部分和第五部分,沿用了购物车的思想来实现。第六部分实现,让一个区块靠右对齐,再转为flex容器,让主轴方向为垂直分散对齐,交叉轴为靠右对齐。

html代码部分

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>结算页面</title>
  6. <!--导入当前组件css样式表-->
  7. <link rel="stylesheet" href="shop_settlement.css">
  8. </head>
  9. <body>
  10. <!--导入头部组件-->
  11. <div class="public-head">
  12. <a href="">网站首页</a>
  13. <a href="">专题</a>
  14. <a href="">网站导航</a>
  15. <a href="">二手商品</a>
  16. <a href="">讨论区</a>
  17. <span>
  18. <a href=""><i class="iconfont icon-huiyuan2"></i> 登陆</a>
  19. <a href="">免费注册</a>
  20. </span>
  21. </div>
  22. <div class="shop-settlenment">
  23. <div class="content">
  24. <h5>收货地址</h5>
  25. <!--收货地址-->
  26. <div class="shop-address">
  27. <ul>
  28. <li class="select">
  29. <span>重庆(张先生收)</span>
  30. <p>重庆渝中区大溪沟人和街华福巷大厦1F(靠大礼堂300米)</p>
  31. <a href="">修改</a>
  32. </li>
  33. <li>
  34. <span>四川(张先生收)</span>
  35. <p>重庆市渝中区邹容路100号重庆时代广场B2</p>
  36. </li>
  37. <li>
  38. <span>重庆(张先生收)</span>
  39. <p>重庆渝中区大溪沟人和街华福巷大厦1F(靠大礼堂300米)</p>
  40. </li>
  41. <li>
  42. <span>四川(张先生收)</span>
  43. <p>重庆市渝中区邹容路100号重庆时代广场B2</p>
  44. </li>
  45. </ul>
  46. </div>
  47. <!--订单信息-->
  48. <h5>确认订单信息</h5>
  49. <div class="cart-top">
  50. <span>商品信息</span>
  51. <span>单价</span>
  52. <span>数量</span>
  53. <span>金额</span>
  54. </div>
  55. <div class="settlenment-infos">
  56. <div class="cart-infos">
  57. <span class="pic-infos">
  58. <a href=""><img src="../../static/images/lbx.jpg" alt=""></a>
  59. <a href="">买2送1七天量】黄金搭档中老年型多种复合维生素片年货礼盒保健品</a>
  60. </span>
  61. <span>¥288.00</span>
  62. <span>1</span>
  63. <span>¥288.00</span>
  64. </div>
  65. <div class="cart-infos">
  66. <span class="pic-infos">
  67. <a href=""><img src="../../static/images/bx.jpg" alt=""></a>
  68. <a href="">海尔出品Leader/统帅 BC/BD-427TD 427升大容量商用冷藏冷冻冰柜</a>
  69. </span>
  70. <span>¥2299.00</span>
  71. <span>1</span>
  72. <span>¥2299.00</span>
  73. </div>
  74. <div class="cart-infos">
  75. <span class="pic-infos">
  76. <a href=""><img src="../../static/images/bx1.jpg" alt=""></a>
  77. <a href="">海尔出品Leader/统帅 BCD-335WLDPC法式多门风冷无霜节能冰箱家用</a>
  78. </span>
  79. <span>¥3099.00</span>
  80. <span>1</span>
  81. <span>¥3099.00</span>
  82. </div>
  83. </div>
  84. <!--用户确定信息-->
  85. <div class="shop—certain">
  86. <span>实付款:¥<i>5686.00</i></span>
  87. <span>寄送至: 重庆渝中区大溪沟人和街华福巷大厦1F(靠大礼堂300米)</span>
  88. <span>收货人:张先生 13xxxxx45219</span>
  89. </div>
  90. <button>提交订单</button>
  91. </div>
  92. <!--导入底部组件-->
  93. <footer class="public-footer">
  94. <div>
  95. <a href="">简介</a>
  96. <a href="">联系我们</a>
  97. <a href="">招聘信息</a>
  98. <a href="">友情链接</a>
  99. <a href="">用户服务协议</a>
  100. <a href="">隐私权声明</a>
  101. <a href="">法律投诉声明</a>
  102. </div>
  103. <div><span>LOGO</span></div>
  104. <div>
  105. <p>2019 fengniao.com. All rights reserved . 安徽闹着玩有限公司(无聊网)版权所有</p>
  106. <p>皖ICP证150110号 京ICP备14323013号-2 皖公网安备110108024357788号</p>
  107. <p>违法和不良信息举报电话: 0551-1234567 举报邮箱: admin@baidu.com</p>
  108. </div>
  109. <div>
  110. <p>关注公众号</p>
  111. <img src="../../static/images/erwei-code.png" alt="">
  112. </div>
  113. </footer>
  114. </div>
  115. </body>
  116. </html>

css部分

  1. /*导入样式重置文档*/
  2. @import "../public_reset.css";
  3. @import "../public_head/public_head.css";
  4. @import "../public_footer/public_footer.css";
  5. .shop-settlenment>.content{
  6. /*设置主体为1200px,居中对齐,背景为白色*/
  7. width: 1200px;
  8. margin: 20px auto;
  9. padding:20px;
  10. box-sizing: border-box;
  11. background: white;
  12. /*将容器转为flex容器*/
  13. display: flex;
  14. /*主轴方向为垂直方向*/
  15. flex-direction: column;
  16. }
  17. .shop-settlenment>.content h5{
  18. font-size: 14px;
  19. color:#333;
  20. line-height: 40px;
  21. }
  22. .shop-settlenment>.content>.shop-address>ul{
  23. /*将容器转为flex容器*/
  24. display: flex;
  25. }
  26. .shop-settlenment>.content>.shop-address>ul>li{
  27. width: 237px;
  28. height: 106px;
  29. padding: 10px 15px;
  30. margin-right: 14px;
  31. margin-bottom: 14px;
  32. box-sizing: border-box;
  33. /*设置收货地址背景图*/
  34. background-image: url("../../static/images/shop/default.png");
  35. /*将容器转为flex容器*/
  36. display: flex;
  37. flex-direction: column;
  38. justify-content: space-around;
  39. }
  40. .shop-settlenment>.content>.shop-address>ul>li:hover,.shop-settlenment>.content>.shop-address>ul>li.select{
  41. /*设置选中收货地址背景图*/
  42. background-image: url("../../static/images/shop/hover.png");
  43. }
  44. .shop-settlenment>.content>.shop-address>ul>li.select>a{
  45. color:#c97;
  46. }
  47. .shop-settlenment>.content>.shop-address>ul>li>span{
  48. /*设置底边框线*/
  49. border-bottom: 1px solid #f2f2f2;
  50. line-height: 30px;
  51. }
  52. .shop-settlenment>.content>.cart-top{
  53. display: flex;
  54. justify-content: space-around;
  55. border-bottom: 1px solid #f2f2f2;
  56. align-items: center;
  57. height: 40px;
  58. }
  59. .shop-settlenment>.content>.settlenment-infos{
  60. display: flex;
  61. /*设置主轴的方向*/
  62. flex-direction: column;
  63. justify-content: space-around;
  64. }
  65. .shop-settlenment>.content>.settlenment-infos>.cart-infos{
  66. margin-top: 20px;
  67. height: 100px;
  68. display: flex;
  69. justify-content: space-around;
  70. align-items: center;
  71. }
  72. .shop-settlenment>.content>.settlenment-infos>.cart-infos>.pic-infos{
  73. width:280px;
  74. display: flex;
  75. align-items: center;
  76. }
  77. .shop-settlenment>.content>.settlenment-infos>.cart-infos>.pic-infos>a:hover{
  78. color: #ff0000;
  79. }
  80. .shop-settlenment>.content>.settlenment-infos>.cart-infos>.pic-infos img{
  81. width: 60px;
  82. height: 60px;
  83. margin-right: 10px;
  84. }
  85. .shop-settlenment>.content>.settlenment-infos>.cart-infos>:nth-of-type(1){
  86. position: relative;
  87. left: -50px;
  88. }
  89. .shop-settlenment>.content>.settlenment-infos>.cart-infos>:nth-of-type(2){
  90. position: relative;
  91. left: -150px;
  92. }
  93. .shop-settlenment>.content>.settlenment-infos>.cart-infos>:nth-of-type(3){
  94. position: relative;
  95. left: -80px;
  96. }
  97. .shop-settlenment>.content>.settlenment-infos>.cart-infos>:nth-of-type(4){
  98. position: relative;
  99. left: -20px;
  100. }
  101. .shop-settlenment>.content>.shopcertain{
  102. /*设置确定信息的边框线*/
  103. border:1px solid #ff0036;
  104. width: 320px;
  105. padding: 10px;
  106. height: 80px;
  107. /*靠右对齐*/
  108. margin-left: auto;
  109. /*转为flex容器*/
  110. display: flex;
  111. /*主轴水平方向*/
  112. flex-direction: column;
  113. /*主轴分散对齐*/
  114. justify-content: space-around;
  115. /*交叉轴靠右对齐*/
  116. align-items: end;
  117. }
  118. .shop-settlenment>.content>.shopcertain>span>i{
  119. font-size: 26px;
  120. color:#ff0036;
  121. }
  122. .shop-settlenment>.content>button{
  123. /*去掉边框*/
  124. border: none;
  125. width: 180px;
  126. height: 40px;
  127. /*字体样式*/
  128. color:#f2f2f2;
  129. background: #ff0036;
  130. align-self: end;
  131. }
  132. .shop-settlenment>.content>button:hover{
  133. background: #f60;
  134. }

知识小结:

1.flex容器单行垂直方向对齐用align-items,多行容器用align-content,水平方向对齐只有一个justift-content属性。
2.flex虽然是一维,在细节处理非常棒。简单轻松实现了水平垂直居中的效果,是传统布局不能轻易实现的。
3.构造dom布局的时候,考虑的不是很全面。不知道怎么划分比较合适,思路上还有欠缺。例如结算页,写完发现,第一部分可以和第二部分合并成一个区块,第三也可以和第四合并在一起。什么时候用flex好,什么时候用grid,还是迷糊中。怎么构造源代码结构,最让人头疼的地方。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:页面的样式写得非常酷
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post