自定义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 小时前
手写 Zustand:三十分钟带你搞懂状态管理库的核心原理
前端·javascript·源码
神奇的程序员4 小时前
重构了自己5年前写的截图插件
前端·javascript·架构
UXbot5 小时前
一人独立交付 UI + 前端:AI 驱动 UI 设计工具的五大功能模块深度评测
前端·低代码·ui·设计模式·交互
kobesdu5 小时前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
诚实可靠王大锤5 小时前
React Native 输入框与按钮焦点冲突解决方案(rn版本0.70.3)
前端·javascript·react native·react.js
kyriewen6 小时前
测试妹子让我写单测,我偷偷用AI一天干完一周的活
前端·chatgpt·cursor
2601_957780846 小时前
Claude Code 2026年最新部署指南:从环境搭建到技能扩展
前端·人工智能·ai编程·claude
zhangfeng11336 小时前
workbuddy 专家 “前端开发师” 结合nvidia-mistral-small-4-119b-2603 项目计划-前端界面开发.md
前端·人工智能·免费
IT_陈寒8 小时前
为什么Java的Stream并行处理反而变慢了?
前端·人工智能·后端
NiceCloud喜云9 小时前
IntelliJ IDEA 保姆级安装 + ClaudeAPI 配置教程
java·开发语言·前端·ide·chrome·docker·intellij-idea