自定义html5中日期选取器的样式

自定义html5中日期选取器的样式

  • [1. 前言](#1. 前言)
    • [1.1 关于 h5 的新特性](#1.1 关于 h5 的新特性)
    • [1.2 使用浏览器](#1.2 使用浏览器)
  • [2. html5中日期选取器默认样式](#2. html5中日期选取器默认样式)
  • [3. 自定义日期样式](#3. 自定义日期样式)
    • [3.1 简单定义](#3.1 简单定义)
    • [3.2 花式样式定义](#3.2 花式样式定义)
  • [4. 改变日期格式](#4. 改变日期格式)
  • [5. 参考](#5. 参考)

1. 前言

1.1 关于 h5 的新特性

1.2 使用浏览器

  • 说明:
    下面都是在谷歌浏览器上测试的,其他浏览器可能不一样,自己测试看

2. html5中日期选取器默认样式

  • 默认样式如下:

    html 复制代码
    <input type="date" id="myDate">


3. 自定义日期样式

3.1 简单定义

  • 简单修改日期样式的代码如下:

    css 复制代码
    <style>
        /* 设置 整个日期选择器 外边框的样式 + 年月日字体及日历选择器指示器的大小 */
        input[type="date"] {
            border: 3px solid #c69d9d;
            border-radius: 10px;
            padding: 8px;
            font-size: 16px;
        }
    
        /* 自定义 日历选择器指示器 的样式 */
        input[type="date"]::-webkit-calendar-picker-indicator { 
            /* 设置立体感的边框 */
            border: 1px solid #890404;
            background-color: #1d0909;
            border-radius: 5px;
            box-shadow: inset 0 1px #722222, 0 1px #732323;
            
            /* 设置边框里面的颜色 */
            background-image: -webkit-linear-gradient(top, green, green);
    
            /* 设置 日历选择器指示器 的大小,如果这里不指定就取上面设置的16px */
            font-size: 20px;
        }
    
    </style>
    html 复制代码
      <label for="myDate">选择日期:</label>
      <input type="date" id="myDate">
  • 效果如下:

3.2 花式样式定义

  • 感觉没必要,但是可以了解,效果如下:

  • 完整代码如下:

    html 复制代码
    <!DOCTYPE html>
    <html>
    <head>
      <style>
    
        /* 设置 整个日期选择器 外边框的样式 以及 年月日字体的大小 */
        input[type="date"] {
            border: 3px solid #c69d9d;
            border-radius: 10px;
            padding: 8px;
            font-size: 18px;
        }
    
        /* 设置年月日的外边框为黑色边框 */
        input[type="date"]::-webkit-datetime-edit { 
            padding: 2px; 
            /* background: #000000;  */
            border: #1d0909 solid 2px;
            margin-right: 13px;
    
            /* 设置 年月日 的大小,如果这里不指定就取上面设置的18px */
            /* font-size: 20px; */
        } 
    
        /* 设置年月日的背景 */
        input[type="date"]::-webkit-datetime-edit-fields-wrapper { 
            background-color: #9a9595; 
            /* padding-right: 12px; */
        } 
    
        /* text的padding(年月日的padding) */
        input[type="date"]::-webkit-datetime-edit-text { 
            padding: 0.3em; 
            /* 年月日分隔符"/"的颜色 */
            color: #2964d3; 
            /* direction: rtl; */
            /* unicode-bidi: bidi-override; */
        } 
    
        /* 年的颜色 */
        input[type="date"]::-webkit-datetime-edit-year-field { 
            color: purple; 
        } 
    
        /* 月的颜色 */
        input[type="date"]::-webkit-datetime-edit-month-field { 
            color: blue; 
        } 
    
        /* 日的颜色 */
        input[type="date"]::-webkit-datetime-edit-day-field { 
            color: green; 
        } 
    
        /* 隐藏按钮 
           注意,-webkit-inner-spin-button只适用于Webkit浏览器,如果要实现在其他浏览器中隐藏箭头按钮,可能需要使用其他方法或属性。
        */
        /* input[type="date"]::-webkit-inner-spin-button { 
            visibility: hidden; 
        }  */
    
        /* 自定义 日历选择器指示器 的样式 */
        input[type="date"]::-webkit-calendar-picker-indicator { 
            /* 设置立体感的边框 */
            border: 1px solid #890404;
            background-color: #1d0909;
            border-radius: 5px;
            box-shadow: inset 0 1px #722222, 0 1px #732323;
            
            /* 设置边框里面的颜色 */
            background-image: -webkit-linear-gradient(top, green, green);
    
            /* 设置 日历选择器指示器 的大小,如果这里不指定就取上面设置的18px */
            /* font-size: 25px; */
        }
    
      </style>
    </head>
    <body>
    
      <label for="myDate">选择日期:</label>
      <input type="date" id="myDate">
     
    </body>
    </html>

4. 改变日期格式

  • 想实现渲染成yyyy-MM-dd的格式,但是没实现,不知道怎么在原控件中实现。

  • 也可以用一个很low的方式暂且凑合,如下:

    html 复制代码
    <body>
    
        <form>
            <label for="myDate">选择日期:</label>
            <input type="date" id="myDate">
            <input type="text" id="formattedDate">
        </form>
    
        <script>
            document.getElementById('myDate').addEventListener('input', function() {
                var inputDate = this.value;
                //   var formattedDate = inputDate.split('-').reverse().join('-');
                // document.getElementById('formattedDate').innerText = formattedDate;
                var formattedDate = inputDate.split('-').join('-');
                document.getElementById('formattedDate').value = formattedDate;
            });
        </script>
    
    </body>

5. 参考

相关推荐
泯泷14 小时前
手搓JSVMM第 8 篇:函数调用:参数、返回值与调用帧
前端·javascript·前端框架
Sherotree14 小时前
Google Antigravity——Agent 被提到主界面
前端·ide·后端·edge浏览器
里欧跑得慢15 小时前
Flutter 像素级还原:设计稿到代码的视觉无损转换技巧
前端·css·flutter·web
里欧跑得慢15 小时前
Flutter 三方库 function_tree — 鸿蒙应用开发中的动态数学公式解析与计算神器,实现鸿蒙深度适配下的复杂函数逻辑运行时求值实战(适配鸿蒙 HarmonyOS Next ohos)
android·前端·安全·flutter·华为·harmonyos
苏灿烤鱼16 小时前
没有机密文件,也没有付费数据,在浏览器里造一颗"间谍卫星"
前端·javascript·github
泯泷16 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷16 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷16 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷16 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷16 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法