index3.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  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, shrink-to-fit=no">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <!-- Bootstrap 的 CSS 文件 -->
  9. <link rel="stylesheet" href="./css/bootstrap.min.css">
  10. <link rel="stylesheet" href="./css/common.css">
  11. <link rel="stylesheet" href="./css/normalize.css">
  12. <style>
  13. .shopping-tab {
  14. padding: 30px;
  15. background-color: #F8F8F8;
  16. }
  17. .shopping-tab .tab-box {
  18. width: 600px;
  19. margin: 0 auto;
  20. display: flex;
  21. position: relative;
  22. /*padding-bottom: 20px;*/
  23. font-size: 20px;
  24. justify-content: space-around;
  25. border-bottom: 1px solid #99999990;
  26. }
  27. .shopping-tab .tab-box .tab {
  28. padding-bottom: 20px;
  29. padding-left: 10px;
  30. padding-right: 10px;
  31. cursor: pointer;
  32. color: #99999990;
  33. }
  34. .shopping-tab .tab-box .tab.active {
  35. color: #999999;
  36. position: relative;
  37. }
  38. .shopping-tab .tab-box .tab.active:before {
  39. position: absolute;
  40. bottom: 0;
  41. left: 0;
  42. content: "";
  43. width: 100%;
  44. height: 2px;
  45. background-color: #999999;
  46. }
  47. .shopping-tab .tab-box .line {
  48. bottom: 0;
  49. left: 0;
  50. width: 100%;
  51. height: 1px;
  52. /*background-color: #99999990;*/
  53. position: absolute;
  54. }
  55. .shopping-detail-box,
  56. .shopping-cart {
  57. width: 1200px;
  58. display: flex;
  59. margin: 20px auto 0;
  60. }
  61. .shopping-detail-box .shopping-detail,
  62. .shopping-cart .shopping-detail {
  63. padding-right: 30px;
  64. flex: 1;
  65. }
  66. .shopping-detail-box .shopping-detail .title,
  67. .shopping-cart .shopping-detail .title {
  68. padding-bottom: 10px;
  69. border-bottom: 1px solid #999999;
  70. margin-bottom: 10px;
  71. }
  72. .shopping-cart .product {
  73. display: flex;
  74. width: 100%;
  75. }
  76. .shopping-cart .product img {
  77. width: 100px;
  78. height: 100px;
  79. }
  80. .shopping-cart .product .info {
  81. width: 300px;
  82. font-size: 20px;
  83. color: #333;
  84. padding-left: 20px;
  85. }
  86. .shopping-cart .product .info div:nth-child(1) {
  87. margin-top: 10px;
  88. margin-bottom: 20px;
  89. }
  90. .shopping-cart .product .input-box {
  91. display: flex;
  92. height: 50px;
  93. align-items: center;
  94. border: 1px solid #9999;
  95. }
  96. .shopping-cart .product .input-box .plus-box {
  97. border-left: 1px solid #999999;
  98. }
  99. .shopping-cart .product .input-box .plus-box span {
  100. width: 100%;
  101. display: inline-block;
  102. text-align: center;
  103. cursor: pointer;
  104. }
  105. .shopping-cart .product .input-box .plus-box span:nth-child(1) {
  106. border-bottom: 1px solid #999999;
  107. }
  108. .shopping-cart .product input {
  109. border: 0;
  110. }
  111. .shopping-detail-box .shopping-detail .shopping-detail-form {}
  112. .shopping-detail-box .shopping-detail .shopping-detail-form .line {
  113. border-bottom: 1px solid #999999;
  114. }
  115. .shopping-detail-box .shopping-detail .shopping-detail-form .time-box {
  116. display: flex;
  117. box-sizing: border-box;
  118. justify-content: space-between;
  119. }
  120. .shopping-detail-box .shopping-detail .shopping-detail-form .time-box .form-check {
  121. width: 48%;
  122. display: flex;
  123. align-items: center;
  124. padding: 20px 30px;
  125. font-size: 12px;
  126. box-sizing: border-box;
  127. border: 1px solid #B2B2B2;
  128. }
  129. .shopping-detail-box .shopping-detail .shopping-detail-form .time-box .form-check.active {
  130. background-color: #EBEBEB;
  131. }
  132. .summary {
  133. width: 300px;
  134. }
  135. .summary .title {
  136. padding-bottom: 10px;
  137. margin-bottom: 10px;
  138. border-bottom: 1px solid #999999;
  139. }
  140. .line {
  141. width: 100%;
  142. border-bottom: 1px solid #999999;
  143. }
  144. .summary .product {
  145. display: flex;
  146. }
  147. .summary .product img {
  148. border: 1px solid #999999;
  149. width: 80px;
  150. height: 80px;
  151. margin-right: 10px;
  152. }
  153. .summary .product .info {
  154. padding: 10px 0;
  155. font-size: 18px;
  156. }
  157. .summary .total-box {
  158. display: flex;
  159. justify-content: space-between;
  160. }
  161. .summary .total-box.big {
  162. font-size: 30px;
  163. }
  164. .payment-options .credit-box {
  165. padding: 15px 30px;
  166. border: 1px solid #9999;
  167. }
  168. .payment-options .credit-box .title {
  169. font-size: 30px;
  170. }
  171. .payment-options .credit-box .title div:nth-child(2) {
  172. font-size: 16px;
  173. }
  174. .payment-options .credit-box .h-card-box {
  175. display: flex;
  176. justify-content: space-between;
  177. }
  178. .payment-options .credit-box .h-card {
  179. border: 1px solid #999999;
  180. border-radius: 4px;
  181. padding-right: 4px;
  182. display: flex;
  183. align-items: center;
  184. width: 30%;
  185. }
  186. .payment-options .credit-box .h-card input {
  187. border: 0;
  188. width: 70%;
  189. }
  190. .payment-options .credit-box .h-card i {
  191. font-size: 30px;
  192. }
  193. .paypal {
  194. display: flex;
  195. justify-content: flex-start;
  196. }
  197. .paypal .h-icon {
  198. box-sizing: border-box;
  199. white-space: nowrap;
  200. }
  201. </style>
  202. </head>
  203. <body>
  204. <!-- 导航栏 -->
  205. <nav class="nav-box">
  206. <div class="logo">
  207. <img src="img/logo.png" alt="">
  208. </div>
  209. <ul>
  210. <li>Home</li>
  211. <li>About</li>
  212. <li>Shop</li>
  213. <li>Help</li>
  214. <li>Your Cart</li>
  215. </ul>
  216. </nav>
  217. <div class="shopping-tab">
  218. <div class="tab-box">
  219. <div class="tab active" data-page="shopping-cart-page">1.shopping Cart</div>
  220. <div class="tab " data-page="shopping-detail-page">2.shopping Detail</div>
  221. <div class="tab" data-page="payment-options-page">3.Payment Options</div>
  222. <div class="line"></div>
  223. </div>
  224. </div>
  225. <!-- 1.shopping Cart -->
  226. <div class="shopping-cart-page shopping-cart ">
  227. <div class="shopping-detail">
  228. <div class="title">
  229. Shopping Cart
  230. </div>
  231. <div class="product">
  232. <img src="img/logo.png" alt="">
  233. <div class="info">
  234. <div>PRODUCT NAME</div>
  235. <div>$300</div>
  236. </div>
  237. <div class="input-box">
  238. <input type="number" class="form-control">
  239. <span class="plus-box">
  240. <span class="plus" data-price="300">+</span>
  241. <span class="minus" data-price="300">-</span>
  242. </span>
  243. </div>
  244. </div>
  245. <br>
  246. <div class="product">
  247. <img src="img/logo.png" alt="">
  248. <div class="info">
  249. <div>PRODUCT NAME</div>
  250. <div>$300</div>
  251. </div>
  252. <div class="input-box">
  253. <input type="number" class="form-control">
  254. <span class="plus-box">
  255. <span class="plus" data-price="300">+</span>
  256. <span class="minus" data-price="300">-</span>
  257. </span>
  258. </div>
  259. </div>
  260. <br>
  261. <div class="line"></div>
  262. <br>
  263. <div>
  264. <button type="submit" class="btn btn-primary mb-2">Pay Now</button>
  265. <button type="submit" class="btn btn-secondary mb-2">Cancel</button>
  266. </div>
  267. </div>
  268. <div class="summary">
  269. <div class="title">Summary</div>
  270. <h4>ENTER COUPON CODE</h4>
  271. <div class="line"></div>
  272. <br>
  273. <div class="total-box">
  274. <span>SUBTOTAL</span>
  275. <span>$600</span>
  276. </div>
  277. <div class="total-box">
  278. <span>SHOPPING</span>
  279. <span>FREE</span>
  280. </div>
  281. <div class="total-box">
  282. <span>TEXES</span>
  283. <span>$13</span>
  284. </div>
  285. <br>
  286. <div class="line"></div>
  287. <br>
  288. <div class="total-box big">
  289. <span>TOTAL</span>
  290. <span>$<span class="total">613</span></span>
  291. </div>
  292. </div>
  293. <br>
  294. <br>
  295. </div>
  296. <!-- 2.shopping Detail -->
  297. <div class="shopping-detail-page shopping-detail-box">
  298. <div class="shopping-detail">
  299. <div class="title">
  300. Shopping Detail
  301. </div>
  302. <form class="shopping-detail-form">
  303. <div class="row">
  304. <div class="col">
  305. <input type="text" class="form-control" placeholder="First name">
  306. </div>
  307. <div class="col">
  308. <input type="text" class="form-control" placeholder="Last name">
  309. </div>
  310. </div>
  311. <br>
  312. <div class="row">
  313. <div class="col">
  314. <input type="text" class="form-control" placeholder="Address">
  315. </div>
  316. </div>
  317. <br>
  318. <div class="row">
  319. <div class="col">
  320. <input type="text" class="form-control" placeholder="Address2">
  321. </div>
  322. </div>
  323. <br>
  324. <div class="row">
  325. <div class="col">
  326. <select class="form-control">
  327. <option>Country</option>
  328. <option>1</option>
  329. <option>2</option>
  330. <option>3</option>
  331. <option>4</option>
  332. <option>5</option>
  333. </select>
  334. </div>
  335. <div class="col">
  336. <input type="text" class="form-control" placeholder="City">
  337. </div>
  338. </div>
  339. <br>
  340. <div class="row">
  341. <div class="col">
  342. <input type="text" class="form-control" placeholder="Zip/Postal Code">
  343. </div>
  344. <div class="col">
  345. <input type="text" class="form-control" placeholder="Phone Number">
  346. </div>
  347. </div>
  348. <br>
  349. <div class="line"></div>
  350. <br>
  351. <div class="time-box">
  352. <div class="form-check">
  353. <input class="form-check-input" type="radio" name="exampleRadios" id="option1" value="option1">
  354. <div>
  355. <div>Free Shipping</div>
  356. <div>Between2-5 working days</div>
  357. </div>
  358. </div>
  359. <div class="form-check">
  360. <input class="form-check-input" type="radio" name="exampleRadios" id="option2" value="option2">
  361. <div>
  362. <div>Next Day Delivery - $20</div>
  363. <div>24 hours from checkout</div>
  364. </div>
  365. </div>
  366. </div>
  367. <br>
  368. <div class="line"></div>
  369. <br>
  370. <div>
  371. <button type="submit" class="btn btn-primary mb-2">Next</button>
  372. <button type="submit" class="btn btn-secondary mb-2">Cancel</button>
  373. </div>
  374. </form>
  375. </div>
  376. <div class="summary">
  377. <div class="title">Summary</div>
  378. <br>
  379. <div class="product">
  380. <img src="img/logo.png" alt="">
  381. <div class="info">
  382. <div>PRODUCT NAME</div>
  383. <div>$300</div>
  384. </div>
  385. </div>
  386. <br>
  387. <div class="product">
  388. <img src="img/logo.png" alt="">
  389. <div class="info">
  390. <div>PRODUCT NAME</div>
  391. <div>$300</div>
  392. </div>
  393. </div>
  394. <br>
  395. <div class="line"></div>
  396. <br>
  397. HAVE A VOUCHER?
  398. <br>
  399. <br>
  400. <div class="line"></div>
  401. <br>
  402. <div class="total-box">
  403. <span>SUBTOTAL</span>
  404. <span>$600</span>
  405. </div>
  406. <div class="total-box">
  407. <span>SHOPPING</span>
  408. <span>FREE</span>
  409. </div>
  410. <div class="total-box">
  411. <span>TEXES</span>
  412. <span>$13</span>
  413. </div>
  414. <br>
  415. <div class="line"></div>
  416. <br>
  417. <div class="total-box big">
  418. <span>TOTAL</span>
  419. <span>$613</span>
  420. </div>
  421. </div>
  422. <br>
  423. <br>
  424. </div>
  425. <!-- 3.Payment Options -->
  426. <div class="payment-options-page shopping-detail-box payment-options">
  427. <div class="shopping-detail">
  428. <div class="title">
  429. Payment method
  430. </div>
  431. <div class="paypal-box">
  432. </div>
  433. <div class="credit-box">
  434. <input class="form-check-input" type="radio" name="exampleRadios" id="option3" value="option1">
  435. <label class="title" for="option3">
  436. <div>Credit Card</div>
  437. <div>Lorem ipsurn dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor</div>
  438. </label>
  439. <div class="h-card-box">
  440. <div class="input-group h-card mb-3 mr-3" style="width: 70%;">
  441. <input type="text" class="form-control" placeholder="0000 0000 0000 0000"
  442. aria-label="Recipient's username" aria-describedby="button-addon2">
  443. <div class="input-group-append">
  444. <i class="bi bi-credit-card"></i>
  445. </div>
  446. </div>
  447. <div class="input-group h-card mb-3 mr-3">
  448. <input type="text" class="form-control" placeholder="MM/YY" aria-label="Recipient's username"
  449. aria-describedby="button-addon2">
  450. </div>
  451. <div class="input-group h-card mb-3">
  452. <input type="text" class="form-control" placeholder="CVV" aria-label="Recipient's username"
  453. aria-describedby="button-addon2">
  454. <div class="input-group-append">
  455. <i class="bi bi-patch-exclamation"></i>
  456. </div>
  457. </div>
  458. </div>
  459. <div class="input-group h-card mb-3" style="width: 100%;">
  460. <input type="text" class="form-control" placeholder="Card Holder Name"
  461. aria-label="Recipient's username" aria-describedby="button-addon2">
  462. </div>
  463. </div>
  464. <br>
  465. <div class="line"></div>
  466. <br>
  467. <div class="credit-box paypal">
  468. <input class="form-check-input" type="radio" name="exampleRadios" id="option4" value="option4">
  469. <label class="title" for="option4" style="border: 0; width: ;">
  470. <div>PayPal</div>
  471. <div>Lorem ipsum dolor sit amet, consectctur adipiscingelit,
  472. sed do ciusmod tempor incididunt ut labore</div>
  473. </label>
  474. <div class="h-icon">
  475. <i style="font-size: 50px;" class="bi bi-paypal"></i>
  476. <span style="font-size: 50px;">PayPal</span>
  477. </div>
  478. </div>
  479. <br>
  480. <div>
  481. <button type="submit" class="btn btn-primary mb-2">Pay Now</button>
  482. <button type="submit" class="btn btn-secondary mb-2">Cancel</button>
  483. </div>
  484. </div>
  485. <div class="summary">
  486. <div class="title">Summary</div>
  487. <br>
  488. <div class="product">
  489. <img src="img/logo.png" alt="">
  490. <div class="info">
  491. <div>PRODUCT NAME</div>
  492. <div>$300</div>
  493. </div>
  494. </div>
  495. <br>
  496. <div class="product">
  497. <img src="img/logo.png" alt="">
  498. <div class="info">
  499. <div>PRODUCT NAME</div>
  500. <div>$300</div>
  501. </div>
  502. </div>
  503. <br>
  504. <div class="line"></div>
  505. <br>
  506. HAVE A VOUCHER?
  507. <br>
  508. <br>
  509. <div class="line"></div>
  510. <br>
  511. <div class="total-box">
  512. <span>SUBTOTAL</span>
  513. <span>$600</span>
  514. </div>
  515. <div class="total-box">
  516. <span>SHOPPING</span>
  517. <span>FREE</span>
  518. </div>
  519. <div class="total-box">
  520. <span>TEXES</span>
  521. <span>$13</span>
  522. </div>
  523. <br>
  524. <div class="line"></div>
  525. <br>
  526. <div class="total-box big">
  527. <span>TOTAL</span>
  528. <span>$613</span>
  529. </div>
  530. </div>
  531. <br>
  532. <br>
  533. </div>
  534. <br>
  535. <br>
  536. <div class="footer-box">
  537. <div class="nav">
  538. <div class="item">Home</div>
  539. <div class="item">About</div>
  540. <div class="item">Shop</div>
  541. <div class="item">Help</div>
  542. </div>
  543. <div class="info">
  544. <img src="img/logo.png" alt="">
  545. You Company Name
  546. </div>
  547. </div>
  548. <script src="./js/jquery.slim.min.js"></script>
  549. <script src="./js/bootstrap.bundle.min.js"></script>
  550. <script>
  551. function init() {
  552. $('.shopping-detail-page').hide()
  553. $('.payment-options-page').hide()
  554. $('.shopping-cart-page').show()
  555. }
  556. $(document).ready(function () {
  557. init()
  558. $('.tab').click(function () {
  559. $('.tab-box .tab').attr('class', 'tab')
  560. $(this).attr('class', 'tab active')
  561. $('.shopping-detail-page').hide()
  562. $('.shopping-cart-page').hide()
  563. $('.payment-options-page').hide()
  564. $(`.${$(this)[0].dataset.page}`).show()
  565. })
  566. function setCheckout(dom, checked = false) {
  567. dom.children().eq(0).prop("checked", checked)
  568. dom.attr('class', checked ? 'form-check active' : 'form-check')
  569. }
  570. $('div.form-check').click(function () {
  571. const siblings = $(this).siblings('div')
  572. $('.form-check').each(function () {
  573. setCheckout($(this), false)
  574. })
  575. setCheckout($(this), true)
  576. })
  577. $('.plus').click(function () {
  578. const input = $(this).parents('.plus-box').siblings('input')
  579. const price = Number($(this).data().price)
  580. const num = Number(input.val())
  581. input.val(num + 1)
  582. const total = Number($('.total').text())
  583. $('.total').text(total + price)
  584. })
  585. $('.minus').click(function () {
  586. const input = $(this).parents('.plus-box').siblings('input')
  587. const price = Number($(this).data().price)
  588. console.log(638, input.val());
  589. const num = Number(input.val())
  590. if (num) {
  591. input.val(num - 1)
  592. const total = Number($('.total').text())
  593. $('.total').text(total - price)
  594. }
  595. })
  596. })
  597. </script>
  598. </body>
  599. </html>