如何使用 CSS 创建响应式结账表单?


在网页上,结账功能通常出现在电子商务网站上。这是一个网页,显示您购买产品的全部详细信息。包括产品详情、需支付的总金额、需输入的卡信息、账单地址等。还包含一个按钮来继续购买流程。让我们看看如何创建一个响应式结账表单。

设置弹性布局

要排列表单字段,可以使用display属性并将其设置为flex -

.Fields {
   display: flex;
   flex-wrap: wrap;
   padding: 20px;
   justify-content: space-around;
}

放置表单容器

这里,购物车详情可见。这显示了用户正在购买多少产品以及计算出的总金额 -

<div class="formContainer">
   <h4>
      Cart <span class="price" style="color:black"><b>2</b></span>
   </h4>
   <p>
      <a style="text-decoration: none;" href="#">Product 1</a>
      <span class="price">$10</span>
   </p>
   <p>
      <a style="text-decoration: none;" href="#">Product 2</a>
      <span class="price">$10</span>
   </p>
   <p>
      Total <span class="price" style="color:black"><b>$20</b></span>
   </p>
</div>

我们这样设置容器的样式 -

.formContainer {
   margin: 10px;
   background-color: #efffc9;
   padding: 5px 20px 15px 20px;
   border: 1px solid rgb(191, 246, 250);
   border-radius: 3px;
}

账单地址

在结账页面,用户需要添加账单地址。包括用户姓名、电子邮件和地址 -

<div>
   <h3>Billing Address</h3>
   <label for="fname">Full Name</label>
   <input type="text" id="fname" name="firstname" />
   <label for="email"> Email</label>
   <input type="text" id="email" name="email" />
   <label for="adr"> Address</label>
   <input type="text" id="adr" name="address" />
</div>

支付详情

这里,我们创建了信用卡支付的字段。包括持卡人姓名、信用卡号码、有效期和CVV -

<div>
   <h3>Payment</h3>
   <label for="cname">Name on Card</label>
   <input type="text" id="cname" name="cardname" />
   <label for="ccnum">Credit card number</label>
   <input type="text" id="ccnum" name="cardnumber" />
   <div class="Fields">
      <div>
         <label for="expyear">Exp Year</label>
         <input type="text" id="expyear" name="expyear" />
      </div>
      <div>
         <label for="cvv">CVV</label>
         <input type="text" id="cvv" name="cvv" />
      </div>
   </div>
</div>

结账按钮

最后放置一个按钮来继续购买流程。使用<button>元素 -

<input  type="submit" value="Continue to checkout" class="checkout" />

按钮的样式如下。使用cursor属性将光标设置为指针,使其看起来像一个可点击的链接 -

.checkout {
   background-color: #4caf50;
   color: white;
   padding: 12px;
   margin: 10px 0;
   border: none;
   width: 100%;
   border-radius: 3px;
   cursor: pointer;
   font-size: 17px;
}

设置响应式

当网页浏览器设置为小于 800px 时,响应式功能生效。flex direction 设置为 column reverse,即弹性项目垂直显示为列,但顺序相反 -

@media (max-width: 800px) {
   .Fields {
      flex-direction: column-reverse;
   }
}

示例

以下是使用 CSS 创建响应式结账表单的代码 -

<!DOCTYPE html>
<html>
<head>
   <style>
      body {
         font-family: Arial;
         font-size: 17px;
         padding: 8px;
      }
      * {
         box-sizing: border-box;
      }
      .Fields {
         display: flex;
         flex-wrap: wrap;
         padding: 20px;
         justify-content: space-around;
      }
      .Fields div {
         margin-right: 10px;
      }
      label {
         margin: 15px;
      }
      .formContainer {
         margin: 10px;
         background-color: #efffc9;
         padding: 5px 20px 15px 20px;
         border: 1px solid rgb(191, 246, 250);
         border-radius: 3px;
      }
      input[type="text"] {
         display: inline-block;
         width: 100%;
         margin-bottom: 20px;
         padding: 12px;
         border: 1px solid #ccc;
         border-radius: 3px;
      }
      label {
         margin-left: 20px;
         display: block;
      }
      .icon-formContainer {
         margin-bottom: 20px;
         padding: 7px 0;
         font-size: 24px;
      }
      .checkout {
         background-color: #4caf50;
         color: white;
         padding: 12px;
         margin: 10px 0;
         border: none;
         width: 100%;
         border-radius: 3px;
         cursor: pointer;
         font-size: 17px;
      }
      .checkout:hover {
         background-color: #45a049;
      }
      a {
         color: black;
      }
      span.price {
         float: right;
         color: grey;
      }
      @media (max-width: 800px) {
         .Fields {
            flex-direction: column-reverse;
         }
      }
   </style>
</head>
<body>
      <h1 style="text-align: center;">Responsive Checkout Form</h1>
      <div class="Fields">
         <div>
            <div class="formContainer">
               <form>
                  <div class="Fields">
                     <div>
                        <h3>Billing Address</h3>
                        <label for="fname">Full Name</label>
                        <input type="text" id="fname" name="firstname" />
                        <label for="email"> Email</label>
                        <input type="text" id="email" name="email" />
                        <label for="adr"> Address</label>
                        <input type="text" id="adr" name="address" />
                     </div>
                     <div>
                        <h3>Payment</h3>
                        <label for="cname">Name on Card</label>
                        <input type="text" id="cname" name="cardname" />
                        <label for="ccnum">Credit card number</label>
                        <input type="text" id="ccnum" name="cardnumber" />
                        <div class="Fields">
                           <div>
                              <label for="expyear">Exp Year</label>
                              <input type="text" id="expyear" name="expyear" />
                           </div>
                           <div>
                              <label for="cvv">CVV</label>
                              <input type="text" id="cvv" name="cvv" />
                           </div>
                        </div>
                     </div>
                  </div>
                  <input
                     type="submit"
                     value="Continue to checkout"
                     class="checkout"
                  />
               </form>
            </div>
         </div>
         <div>
            <div class="formContainer">
               <h4>
                  Cart <span class="price" style="color:black"><b>2</b></span>
               </h4>
               <p>
                  <a style="text-decoration: none;" href="#">Product 1</a>
                  <span class="price">$10</span>
               </p>
               <p>
                  <a style="text-decoration: none;" href="#">Product 2</a>
                  <span class="price">$10</span>
               </p>
               <p>
                  Total <span class="price" style="color:black"><b>$20</b></span>
               </p>
            </div>
         </div>
      </div>
   </body>
</html>

更新于: 2023年12月8日

782 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告