Css 简明教程

CSS - Forms

当您想从网站访问者那里收集一些数据时,需要表单。它们有输入字段供用户输入信息、标签用于识别输入字段以及按钮用于提交表单或执行操作。

我们可以通过更改表单元素的外观(例如,文本字段、复选框、单选按钮、下拉菜单和提交按钮)来设置 HTML 表单的样式。

Table of Contents

How to Style a Form in CSS?

  1. Use Containers: 容器可用于将所有表单元素(例如,文本输入、单选按钮、提交按钮)包装到单个容器中,并对其应用通用样式。

  2. 对于文本输入: 对于文本输入,您可以根据您的配色主题添加内边距、外边距和背景颜色。您还可以使用焦点伪类来设置输入元素所选状态的样式。

  3. 悬停效果: 通过使用伪类 :hover,您可以对元素状态(例如,提交按钮)的鼠标悬停设置样式。这会为用户提供动态体验。

  4. 响应式设计: 通过使用媒体查询,您可以调整表单样式以适应不同的屏幕宽度

  5. Transition Effect 此外,您可以为输入标签和按钮使用过渡效果,实现平滑交互

这些是 HTML 表单中最常用的样式。此原则允许您创建一个样式良好且对用户友好的表单。

Styling Input Fields

如上所述,我们可以添加 * padding* 、 * margin* 和 * background-color* 来设置文本输入标签的样式。除此之外,我们还可以更改 * border* 、 * border-radius* 、文本颜色和焦点状态。

Example

在此代码中,我们对文本输入字段应用了所有提到的样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        /* CSS styles for input fields */
        input {
            width: 100%;
            padding: 10px;
            margin: 10px 0;
            border: 2px solid #ccc;
            border-radius: 5px;
            background-color: #f9f9f9;
            color: #333;
            font-size: 16px;
            box-sizing: border-box;
        }

        input:focus {
            border-color: #66afe9;
            outline: none;
            box-shadow:
                0 0 5px rgba(102, 175, 233, 0.5);
            background-color: #fff;
        }
    </style>
</head>

<body>
    <h3>Styled Input Tags</h3>
    Name:
    <input type="text">

    Email:
    <input type="email">

    Password:
    <input type="password">
</body>
</html>

Input Field with Icons Inside

我们可以在文本输入元素中添加图标或图像作为占位符,以使我们的表单具有动态性。这通常用于在搜索元素中添加镜头图标。

Example

在示例中,我们使用了 * background-image* 属性来指定图标的链接,并将其呈现在输入框中。有许多网站(如 icon8.com)提供免费的图标链接。

<!DOCTYPE html>
<html>
<head>
    <style>
        input {
            width: 100%;
            box-sizing: border-box;
            border: 2px solid #ccc;
            border-radius: 4px;

            background-image:
                url('https://img.icons8.com/?size=100&id=kDqO6kPb3xLj&format=png&color=000000');

            background-repeat: no-repeat;
            padding: 12px 20px 12px 40px;
            background-size: 40px 40px;
        }
    </style>
</head>

<body>
<h2>Input field with an icon inside</h2>
    <input type="text" placeholder="Search..">
</body>
</html>

Animated Input Field

我们可以使用 css * transition* 属性来制作动态文本输入字段。

input {
    transition: all 0.3s ease;
}

过渡属性应用于输入,指定所有 CSS 属性(全部)应在 0.3 秒内使用缓动时序函数进行过渡。

Example

在此示例中,我们为文本输入使用了过渡属性,并在获得焦点时添加了样式。

<!DOCTYPE html>
<html>
<head>
    <style>
        /* Basic styling for input */
        input {
            border: 2px solid #ccc;
            border-radius: 4px;
            padding: 12px 20px;
            transition: all 0.9s ease;
        }

        /* Styling when input is focused */
        input:focus {
            border-color: dodgerblue;
            width: 70%;
            box-shadow:
                0 0 8px 0 rgba(0, 0, 255, 0.2);
        }
    </style>
</head>

<body>
    <h2>Animated Input Field</h2>
    <input type="text"
           placeholder="Enter your text...">
</body>
</html>

Styling Textareas

文本区域允许用户在单个输入框中输入较长的文本。

Example

这是一个样式化的文本区域的示例,它允许用户输入地址。

<html>
<head>
<style>
   textarea {
      width: 100%;
      height: 100px;
      font-size: 16px;
      color:  #938b8b;
      padding: 15px;
      border: 2px solid;
   }
   textarea:focus {
      box-shadow:
        0 0 10px rgba(0, 0, 0, 0.5);
   }
</style>
</head>
<body>
   Enter Address
   <form>
      <textarea>
        Address
    </textarea>
   </form>
</body>
</html>

Styling Select Dropdown

在 CSS 中,我们可以更改下拉列表的文本样式、颜色、边距、内边距、边框和阴影效果。请查看以下示例。

Example

在此示例中,我们演示如何设置选择标记的样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            height: 150px;
            padding: 20px;
        }
        label {
            font-size: 16px;
        }
        #styled-select {
            width: 200px;
            padding: 10px;
            font-size: 16px;
            border: 2px solid #ccc;
            border-radius: 4px;
        }
        #styled-select:focus {
            border-color: #007BFF;
            box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
            outline: none;
        }
    </style>
</head>

<body>
    <label> Choose an option: </label>
    <select id="styled-select">
        <option value="option1">Option 1</option>
        <option value="option2">Option 2</option>
        <option value="option3">Option 3</option>
    </select>
</body>
</html>

Styling Checkbox and Radio Button

您可以使用以下 * selectors* 来选择和设置复选框和单选按钮的样式。

input[type="checkbox"] {
   property: value;
}

input[type="radio"]{
   property: value;
}

Example

以下示例演示了这一点:

<html>
<head>
    <style>
        form {
            padding: 20px;
            border: 1px solid #ccc;
            border-radius: 10px;
            max-width: 300px;
            margin: 0 auto;
        }
        label {
            font-weight: bold;
            margin-top: 10px;
            display: block;
        }

        input[type="radio"],
        input[type="checkbox"] {
            margin-right: 5px;
            vertical-align: middle;
        }

        /* '+' is Adjacent Sibling Selectors */
        input[type="radio"] + label,
        input[type="checkbox"] + label {
            display: inline-block;
            margin-right: 10px;
        }

        /* Change color of checked option */
        input[type="radio"]:checked + label,
        input[type="checkbox"]:checked + label {
            color: #007BFF;
        }
    </style>
</head>

<body>
    <form>
        <label>Radio Buttons: </label>
        <input type="radio"
              name="gender" value="male">
              <label for="male">Male</label>
        <input type="radio"
              name="gender" value="female">
              <label for="female">Female</label>

        <br>
        <label>Checkboxes:</label>
        <input type="checkbox"
              name="lang" value="html">
              <label for="html">HTML</label>
        <input type="checkbox"
              name="lang" value="css">
              <label for="css">CSS</label>
        <input type="checkbox"
              name="lang" value="bootstrap">
              <label for="html">bootstrap</label>
    </form>
</body>
</html>

Styling Submit Button

CSS 可用于修改 HTML 页面中按钮的外观。通常使用 CSS 更改按钮的填充、背景颜色、文本颜色、边框和悬停效果。

Example

在此示例中,我们演示如何设置按钮标记的样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body {
            background-color: #f0f0f0;
            padding: 40px;
            height: 150px;
        }
        .styled-button {
            padding: 10px 20px;
            font-size: 16px;
            color: white;
            background-color: #007BFF;
            border: none;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
            cursor: pointer;
            transition: all 0.3s;
        }

        .styled-button:hover {
            background-color: #0056b3;
        }
        .styled-button:active {
            transform: scale(0.5);
        }
        .styled-button:focus {
            outline: none;
            box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
        }
    </style>
</head>

<body>
    <button class="styled-button">
        Click Me
    </button>
</body>
</html>

Fieldset and Legend for Form

  • <fieldset>* 标记用于将几个控件和标签分组在 Web 表单中,它在表单元素周围添加一个矩形框。

  • <legend>* 标记用于指定 <fieldset> 元素的标题。

Example

以下示例演示如何设置 <fieldset><legend> 元素的样式。

<!DOCTYPE html>
<html>
<head>
<style>
   fieldset {
      padding: 10px;
   }

   legend {
      font-weight: bold;
      color: #0F8D0F;
      margin-bottom: 10px;
   }

   input {
      width: calc(100% - 20px);
      padding: 8px;
      margin-bottom: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
   }
</style>
</head>
<body>
   <form>
      <fieldset>
        <legend>Login</legend>
        <label for="username">
            Username:
        </label>
        <input type="text"
              id="username" name="username">
        <label for="password">
            Password:
        </label>
        <input type="password"
              id="password" name="password">
        <input type="submit" value="Submit">
      </fieldset>
   </form>
</body>
</html>

Responsive HTML Form

下面是一个简单的响应式表单布局示例。在不同的设备上查看此表单,了解响应性。−

Example

<html>
<head>
<style>
   .container {
      max-width: 400px;
      margin: 0 auto;
      padding: 20px;
      background-color: #c5e08e;
      border-radius: 5px;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
   }
   h1 {
      text-align: center;
      margin-bottom: 20px;
      color: #34892b;
   }
   label {
      display: block;
      font-weight: bold;
      font-size: 15px;
      margin-bottom: 5px;
      color: #070707;
   }
   input[type="text"],
   input[type="email"],
   select {
      width: 100%;
      padding: 15px;
      margin-bottom: 15px;
      border: 2px solid #ccc;
      border-radius: 10px;
      background-color: #eff5f5;
   }
   input[type="submit"] {
      width: 100%;
      padding: 10px;
      background-color: #216e2a;
      color: #fff;
      border: none;
      font-size: 20px;
      border-radius: 4px;
      cursor: pointer;
   }
   textarea {
      width: 100%;
      height: 100px;
      padding: 15px;
      margin-bottom: 15px;
      border: 2px solid #ccc;
      border-radius: 10px;
      background-color: #eff5f5;
   }
      input[type="radio"] {
      margin-right: 5px;
      vertical-align: middle;
      margin-bottom: 10px;
   }
   input[type="submit"]:hover {
      background-color: #44d115;
      color: #000000;
   }
</style>
</head>
<body>
   <div class="container">
      <h1>Registration Form</h1>
      <form>
         <label for="name">Name:</label>
         <input type="text" id="name" name="name" placeholder="Enter Name..." required>

         <label for="email">Email:</label>
         <input type="email" id="email" name="email" placeholder="Enter Email Id..." required>

         <label for="email">Address:</label>
         <textarea>Address...</textarea>

         <label>Gender: </label>
         <input type="radio" name="gender" value="male"> Male
         <input type="radio" name="gender" value="female"> Female

         <label for="gender">Langauges:</label>
         <select id="gender" name="gender">
            <option value="lang" disabled selected>Select Gender</option>
            <option value="male">Hindi</option>
            <option value="female">Marathi</option>
            <option value="other">English</option>
         </select>

         <input type="submit" value="Submit">
      </form>
   </div>
</body>
</html>