美文网首页
高级表单样式

高级表单样式

作者: skoll | 来源:发表于2022-04-17 00:27 被阅读0次

    无法彻底设计的控件的处理方式

    1 .下拉框,复杂控件类型比如color,datetime-local,progress,meter等
    2 .这些元素在浏览器中具有非常不同的默认外观,虽然你可以通过某些方式来对他们进行样式设置,但是他们内部某些部分实际上是无法设置样式的
    3 .可以先做一些简单的样式来让他尺寸一致,背景颜色一样,以及使用外观来摆脱一些系统级样式

    select相关

    1 .select可以使用apperance,但是option不行
    2 .datalist里面的option怎么感觉就变得好看了一点


    image.png

    3 .使用apperance关掉默认的表现,然后使用伪类生成自定义的箭头
    4 .对于option来说,如果想要完全控制选项样式,必须自己写,生成自定义空间

    日期输入类型

    1 .输入那里是可以改变的,但是空间的内部部分。弹出的日期,日历,可用于递增、递减值的微调器根本无法设置样式,这些事无法使用appperance的
    2 .如果真的需要完全控制,必须使用库来生成自定义控件
    3 .

    范围输入类型

    1 .可以控制轨道,但是按钮滑块非常难以设置,而且范围输入,还有很多额外的功能,这里也无法扩展

    input[type="range"] {
      appearance: none;
      -webkit-appearance: none;
      background: red;
      height: 2px;
      padding: 0;
      outline: 1px solid transparent;
    }
    

    2 .硬来是可以的,但是兼容性需要写很多代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        input[type=range] {
      -webkit-appearance: none;
      margin: 10px 0;
      width: 100%;
    }
    input[type=range]:focus {
      outline: none;
    }
    input[type=range]::-webkit-slider-runnable-track {
      width: 100%;
      height: 12.8px;
      cursor: pointer;
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
      background: #ac51b5;
      border-radius: 25px;
      border: 0px solid #000101;
    }
    input[type=range]::-webkit-slider-thumb {
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
      border: 0px solid #000000;
      height: 20px;
      width: 39px;
      border-radius: 7px;
      background: #65001c;
      cursor: pointer;
      -webkit-appearance: none;
      margin-top: -3.6px;
    }
    input[type=range]:focus::-webkit-slider-runnable-track {
      background: #ac51b5;
    }
    input[type=range]::-moz-range-track {
      width: 100%;
      height: 12.8px;
      cursor: pointer;
      animate: 0.2s;
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
      background: #ac51b5;
      border-radius: 25px;
      border: 0px solid #000101;
    }
    input[type=range]::-moz-range-thumb {
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
      border: 0px solid #000000;
      height: 20px;
      width: 39px;
      border-radius: 7px;
      background: #65001c;
      cursor: pointer;
    }
    input[type=range]::-ms-track {
      width: 100%;
      height: 12.8px;
      cursor: pointer;
      animate: 0.2s;
      background: transparent;
      border-color: transparent;
      border-width: 39px 0;
      color: transparent;
    }
    input[type=range]::-ms-fill-lower {
      background: #ac51b5;
      border: 0px solid #000101;
      border-radius: 50px;
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
    }
    input[type=range]::-ms-fill-upper {
      background: #ac51b5;
      border: 0px solid #000101;
      border-radius: 50px;
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
    }
    input[type=range]::-ms-thumb {
      box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;
      border: 0px solid #000000;
      height: 20px;
      width: 39px;
      border-radius: 7px;
      background: #65001c;
      cursor: pointer;
    }
    input[type=range]:focus::-ms-fill-lower {
      background: #ac51b5;
    }
    input[type=range]:focus::-ms-fill-upper {
      background: #ac51b5;
    }
    
    body {
      padding: 30px;
    }
    
      </style>
    </head>
    <body>
    
    
     <input type="range">
    
    </body>
    </html>
    

    3 .原文:https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/

    颜色输入类型

    1 .颜色类型的输入控件还不错。在支持的浏览器中,只是给你一个带有边框的纯色块,可以用以下代码删除边框,只留下色块

    input{
          border:0;
          padding: 0;
        }
    

    文件输入类型

    1 .点击输入的按钮。选择文件的输入列表。一般会有这俩个部分


    image.png

    2 .这里的按下文件选择器的按钮无法设置样式,无法调整大小和颜色,甚至连字体都不能调整。唯一的操作方式就是关联一个和表单控件有关的label,然后操作这个label


    输入的值要自己写列表展示

    meter,progress

    1 .除了宽度,基本设置不了任何属性,使用apperance:none反而会更糟糕
    2 .https://kimmobrunfeldt.github.io/progressbar.js/#examples 直接使用框架吧
    3 .感觉随便找个动画库,这里的关键不是样式,而是变化的值要加缓动函数
    4 .

    最基础版本的样式,起码看起来不那么突兀了

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        /* 统一可以设置的样式 */
        button,label,input,select,progress,meter{
          display: block;
          font-family: inherit;
          font-size: 100%;
          margin: 0;
          width: 100%;
          box-sizing: border-box;
          padding:5px;
          height: 30px;
        }
        input[type='text'],input[type='datetime-local'],input[type='color'],select{
          box-shadow: inset 1px 1px 3px #ccc;
          border-radius:5px;
        }
        select{
          -webkit-appearance: none;
          appearance: none;
          width: 200px;
        }
    
        label{
          margin-bottom:5px;
        }
    
        button{
          width: 60%;
          margin: 0 auto;
        }
    
        option{
          -webkit-appearance: none;
          appearance: none;
          width: 90%;
          margin:10px;
        }
    
      </style>
    </head>
    <body>
     <select name="" id="">
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
    
     <label for="data1">
       Datetime
     </label>
     <input type="datetime-local" id="data1">
     <input type="color">
    
     <input type="range">
      <progress max='100' value='10'></progress> 
      <meter id="meter" min="0" max="100" value="75" low="33" high="66" optimum="50">75</meter>
      <button>Submit</button>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:高级表单样式

          本文链接:https://www.haomeiwen.com/subject/uilhertx.html