【CSS】关于表单样式


关于表单样式

【注意】:以下样式只在Chrome浏览器下设置成功,其它浏览器可能有所差异,需要单独设置、自行调整

一、文本框样式

  • 正常情况下,普通文本框的样式如下(未聚焦和聚焦状态)

  • 首先,文本框的样式大部分都可以通过我们已知的CSS属性进行修改

    input[type=text] {
        /* 通过width/height设置宽高 */
        width: 100px;
        height: 30px;
        /* 设置字体样式 */
        font-size: 18px;
        font-weight: bold;
        /* 设置内边距 */
        padding: 0 5px;
    }
    
  • 然后,最重要的应该是边框样式的设置,也是我们非常熟悉的border属性

    PS:以下样式的设置是在上面样式设置的基础上进行的

    input[type=text] {
        /* 通过border设置边框样式 */
        border:5px solid red;
        border-radius: 8px;
    }
    

    【注意】:如果不设置边框样式,就会出现下面图片中第一种情况,即左上部分的颜色要暗一点

  • 其次,当聚焦时,文本框周围会有一圈轮廓,我们可以通过outline属性来控制

    input[type=text] {
        /* 通过outline设置轮廓 */
        outline-style: dashed;
        outline-offset: 5px;
        outline-color: dodgerblue;
        outline-width: 5px;
        /* outline: none; */
    }
    

    解析:

    outline-offset:即轮廓对文本框的偏移量,可以为负数,负数即显示在文本框内部

    outline-color:轮廓颜色

    outline-width:轮廓宽度

    outline-style:轮廓样式

    【注意】:如果设置了轮廓样式,则轮廓会常显;不设置样式,则默认在聚焦时才显示,默认样式为直线,轮廓无法圆角

    一般情况,设置outline:none即可 (隐藏轮廓)

  • 接下来,通过:focus伪类,来控制文本框聚焦时的样式

    input[type=text]:focus {
        /* 聚焦时样式 */
        box-shadow: 0px 0px 12px -1px #b1c1c3;
    }
    

    添加聚焦时的样式,如阴影,轮廓样式等等

  • 还可以通过:placeholder伪类来控制提示信息的样式

    input[type=text]::placeholder {
        /* 提示信息样式 */
        font-size: 14px;
        color: rgba(136, 127, 127, 0.774);
    }
    

二、选框样式

结合<label>标签,为绑定的选框设置样式

  • 前提条件:

  • 实现思路:

    • 隐藏选框,再为<label>标签添加::before伪类或者::after伪类
    • 通过这个伪类设置新的样式
    • 结合选框的:checked伪类属性,设置选中状态时的样式
  • 实现过程:(以单选框为例)

    • 隐藏单选框

      input[type="radio"] {
          /* 直接设置大小为0 */
          width: 0;
          height: 0;
      }
      
    • 添加伪类

      label::before {
          content: "";
          display: inline-block;
          /* 用vertical-align来对齐文本 */
          vertical-align: middle;
          width: 20px;
          height: 20px;
          margin-right: 10px;
          border-radius: 50%;
          border: 5px solid darkgreen;
      }
      
      
  • 选中状态

    input[type="radio"]:checked+label::before {
        background-color: lightgreen;
        padding: 0px;
    }
    
  • 或者直接给<label>标签设置样式,再结合:checked伪类属性,设置选中样式

三、按钮样式

  • 先设置基本样式,用常用的属性就可以设置

    input[type=button],
    input[type=submit],
    input[type=reset] {
        width: 80px;
        height: 30px;
        color: white;
        background-color: #5bb85d;
        font-size: 18px;
        font-weight: bold;
    }
    
  • 主要是边框样式,和文本框样式的边框设置一样,使用border属性,更改默认的边框样式,使用outline属性,更改默认轮廓样式

    input[type=button],
    input[type=submit],
    input[type=reset] {
        /* border+outline */
        border-radius: 3px;
        border: none;
        outline: none;
    }
    

其它的还可以通过伪类属性,设置点击时的样式:active,聚焦时的样式:focus,等等

四、下拉框样式

  • 基本样式还是可以用已知的属性来设置,对于边框仍然采用border+outline属性来设置

    select {
        width: 150px;
        height: 30px;
        color: #444;
        font-size: 16px;
        font-weight: bold;
        /* border+outline */
        border-radius: 3px;
        border: 3px solid skyblue;
        outline: none;
    }
    
  • 通过text-align-last属性,来控制下拉框里的文字居中,通过appearance属性,隐藏下拉箭头

    select {
        /* 文字间距 */
        letter-spacing: 2px;
        /* 文字居中 */
        text-align-last: center;
        appearance: none;
        /* 背景颜色 */
        background-color: #fff;
        background: linear-gradient(white, #e5e5e5);
    }
    
  • 对于option元素,只能设置一般的字体文本样式

    option {
        font-size: 14px;
        font-weight: bold;
        color: red;
        background-color: #adff2f;
    }
    

    只有字体文本样式才会生效

    无法设置位置样式、悬浮样式

    背景颜色无法透明,透明时默认白色


    因此,要更改option的样式,只能通过其它元素模拟来实现下拉框

  • 其它的,在行内设置样式size属性multiple属性

    <select size=2>...</select>
    

    表示显示两个选项出来

    这时下拉框里的内容被option里的内容填充,显示数量为两个选项,且此时通过滚动来切换显示

    select{
        /* 取消高度 */
        /* height:30px */
        /* 文本垂直方向居中对齐 */
       vertical-align: middle;
    }
    
    <select multiple>...</select>
    

    可以搭配size属性,设置具体的显示数量


鄙人拙见,不足之处,万望海涵!

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值