如何更改引导内联日期选择器以适应全宽

Posted

技术标签:

【中文标题】如何更改引导内联日期选择器以适应全宽【英文标题】:How to change bootstrap inline datepicker to fit full width 【发布时间】:2015-04-22 01:29:17 【问题描述】:

我从这里使用引导日期选择器:https://github.com/eternicode/bootstrap-datepicker

现在我想将它的宽度与父容器相匹配,但目前它只填充固定大小,我不知道在哪里通过 CSS 更改它。也许您之前遇到过类似的问题并想帮助我?

我附上了问题的图片: http://i.stack.imgur.com/ShZTU.png

这是通过 javascript 添加日期选择器功能之前的代码:

<div class="col-sm-4">';
<div class="panel panel-success panel-dark widget-profile ">
    <div class="panel-heading">
        <div class="widget-profile-bg-icon">
            <i class="fa fa-flask"></i>
        </div>
        <img src="assets/demo/avatars/2.jpg"  class="widget-profile-avatar">
            <div class="widget-profile-header">
                <span>Robert Jang</span>
                <br>
                        email@example.com
                </div>
            </div>
            <!-- / .panel-heading -->
            <div id="bs-datepicker-inline"></div>
        </div>
    </div>

然后我用这段 JavaScript 代码添加日期选择器功能:

 jQuery('#bs-datepicker-inline').datepicker();

在此之后,我的最终源代码如下所示:

<div class="col-sm-4">
<div class="panel panel-success panel-dark widget-profile ">
    <div class="panel-heading">
        <div class="widget-profile-bg-icon">
            <i class="fa fa-flask"></i>
        </div>
        <img src="assets/demo/avatars/2.jpg"  class="widget-profile-avatar">
            <div class="widget-profile-header">
                <span>Robert Jang</span>
                <br>
                        email@example.com

                </div>
            </div>
            <!-- / .panel-heading -->
            <div id="bs-datepicker-inline">
                <div class="datepicker datepicker-inline">
                    <div class="datepicker-days" style="display: block;">
                        <table class=" table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" style="visibility: visible;">«</th>
                                    <th colspan="5" class="datepicker-switch">February 2015</th>
                                    <th class="next" style="visibility: visible;">»</th>
                                </tr>
                                <tr>
                                    <th class="dow">Su</th>
                                    <th class="dow">Mo</th>
                                    <th class="dow">Tu</th>
                                    <th class="dow">We</th>
                                    <th class="dow">Th</th>
                                    <th class="dow">Fr</th>
                                    <th class="dow">Sa</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td class="day old">25</td>
                                    <td class="day old">26</td>
                                    <td class="day old">27</td>
                                    <td class="day old">28</td>
                                    <td class="day old">29</td>
                                    <td class="day old">30</td>
                                    <td class="day old">31</td>
                                </tr>
                                <tr>
                                    <td class="day">1</td>
                                    <td class="day">2</td>
                                    <td class="day">3</td>
                                    <td class="day">4</td>
                                    <td class="day">5</td>
                                    <td class="day">6</td>
                                    <td class="day">7</td>
                                </tr>
                                <tr>
                                    <td class="day">8</td>
                                    <td class="day">9</td>
                                    <td class="day">10</td>
                                    <td class="day">11</td>
                                    <td class="day">12</td>
                                    <td class="day">13</td>
                                    <td class="day">14</td>
                                </tr>
                                <tr>
                                    <td class="day">15</td>
                                    <td class="day">16</td>
                                    <td class="day">17</td>
                                    <td class="day">18</td>
                                    <td class="day">19</td>
                                    <td class="day">20</td>
                                    <td class="day">21</td>
                                </tr>
                                <tr>
                                    <td class="day">22</td>
                                    <td class="day">23</td>
                                    <td class="day">24</td>
                                    <td class="day">25</td>
                                    <td class="day">26</td>
                                    <td class="day">27</td>
                                    <td class="day">28</td>
                                </tr>
                                <tr>
                                    <td class="day new">1</td>
                                    <td class="day new">2</td>
                                    <td class="day new">3</td>
                                    <td class="day new">4</td>
                                    <td class="day new">5</td>
                                    <td class="day new">6</td>
                                    <td class="day new">7</td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <th colspan="7" class="today" style="display: none;">Today</th>
                                </tr>
                                <tr>
                                    <th colspan="7" class="clear" style="display: none;">Clear</th>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="datepicker-months" style="display: none;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" style="visibility: visible;">«</th>
                                    <th colspan="5" class="datepicker-switch">2015</th>
                                    <th class="next" style="visibility: visible;">»</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td colspan="7">
                                        <span class="month">Jan</span>
                                        <span class="month">Feb</span>
                                        <span class="month">Mar</span>
                                        <span class="month">Apr</span>
                                        <span class="month">May</span>
                                        <span class="month">Jun</span>
                                        <span class="month">Jul</span>
                                        <span class="month">Aug</span>
                                        <span class="month">Sep</span>
                                        <span class="month">Oct</span>
                                        <span class="month">Nov</span>
                                        <span class="month">Dec</span>
                                    </td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <th colspan="7" class="today" style="display: none;">Today</th>
                                </tr>
                                <tr>
                                    <th colspan="7" class="clear" style="display: none;">Clear</th>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <div class="datepicker-years" style="display: none;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" style="visibility: visible;">«</th>
                                    <th colspan="5" class="datepicker-switch">2010-2019</th>
                                    <th class="next" style="visibility: visible;">»</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td colspan="7">
                                        <span class="year old">2009</span>
                                        <span class="year">2010</span>
                                        <span class="year">2011</span>
                                        <span class="year">2012</span>
                                        <span class="year">2013</span>
                                        <span class="year">2014</span>
                                        <span class="year">2015</span>
                                        <span class="year">2016</span>
                                        <span class="year">2017</span>
                                        <span class="year">2018</span>
                                        <span class="year">2019</span>
                                        <span class="year new">2020</span>
                                    </td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <th colspan="7" class="today" style="display: none;">Today</th>
                                </tr>
                                <tr>
                                    <th colspan="7" class="clear" style="display: none;">Clear</th>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>

我希望有人可以帮助我。如果您需要更多信息,请告诉我。

非常感谢。

编辑 1:

这是 Datepicker 的 CSS 代码

.datepicker 
  direction: ltr;
  padding: 0;
  width: auto !important;

.datepicker.datepicker-inline 
  border: 1px solid #eee;
  display: inline-block;
  position: relative;

.datepicker > div 
  display: none;

.datepicker.days div.datepicker-days,
.datepicker.months div.datepicker-months,
.datepicker.years div.datepicker-years 
  display: block;

.datepicker div.datepicker-months td,
.datepicker div.datepicker-years td 
  width: 210px !important;

.datepicker table 
  margin: 0;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;

.datepicker td 
  line-height: 32px;
  padding: 0 !important;
  text-align: center;
  width: 30px;

.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th 
  background-color: transparent;

.datepicker table tr td 
  border-bottom: 1px solid #eee;
  border-right: 1px solid #eee;

.datepicker table tr td:last-child 
  border-right: none;

.datepicker table tr td.day:hover 
  background: #f3f3f3;
  cursor: pointer;
  position: relative;

.datepicker table tr td.old,
.datepicker table tr td.new 
  color: #bbb;

.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover 
  background: none;
  color: #eee;
  cursor: default;

.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover 
  background: #f3f3f3;
  font-weight: 700 !important;

.datepicker table tr td.today:hover:hover 
  color: #555555;

.datepicker table tr td.today.active:hover 
  color: #fff;

.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover 
  background: #f3f3f3;

.datepicker table tr td.range.today,
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:hover 
  background: #f3f3f3;
  font-weight: 700;

.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover 
  color: #fff !important;

.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover 
  color: #fff !important;

.datepicker table tr td span 
  border-radius: 2px;
  cursor: pointer;
  display: block;
  float: left;
  line-height: 54px;
  margin: 1%;
  width: 23%;

.datepicker table tr td span:hover 
  background: #eee;

.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover 
  background: none;
  color: #eee;
  cursor: default;

.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover 
  color: #fff !important;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);

.datepicker table tr td span.old,
.datepicker table tr td span.new 
  color: #eee;

.datepicker thead tr:first-child th,
.datepicker tfoot tr th 
  cursor: pointer;

.datepicker th,
.datepicker td,
.datepicker tr 
  border-top: none !important;
  text-align: center !important;

.datepicker thead th,
.datepicker tfoot th 
  font-weight: 600;
  padding: 0 !important;

.datepicker thead th 
  border-bottom: none !important;
  color: #fff;
  font-weight: 600;
  line-height: 35px !important;
  height: 35px !important;
  padding: 0 !important;
  text-align: center;

.datepicker thead tr:first-child 
  border-bottom: 1px solid !important;

.datepicker thead tr:first-child th:hover 
  background: rgba(255, 255, 255, 0.2);

.datepicker thead tr:last-child 
  border-bottom: none !important;

.datepicker thead th.prev,
.datepicker thead th.next 
  color: rgba(0, 0, 0, 0);
  display: block;
  font-size: 0;
  line-height: 0;
  position: absolute;
  width: 36px !important;

.datepicker thead th.prev:after,
.datepicker thead th.next:after 
  bottom: 0;
  color: #fff;
  display: block;
  font-family: FontAwesome;
  font-size: 14px;
  font-weight: normal;
  left: 0;
  line-height: 35px;
  position: absolute;
  right: 0;
  text-align: center;
  top: 0;
  width: 36px;

.datepicker thead th.prev 
  left: 0;
  border-right: 1px solid;

.datepicker thead th.prev:after 
  content: "\f053";

.datepicker thead th.next 
  border-left: 1px solid;
  right: 0;

.datepicker thead th.next:after 
  content: "\f054";

.datepicker tfoot th:hover 
  background: #eee;

.datepicker tbody td,
.datepicker tfoot th 
  line-height: 32px !important;

.datepicker > .datepicker-days tbody .cw 
  background: #f8f8f8 !important;
  color: #aaa;
  font-size: 8px;
  font-weight: 600;

.datepicker > .datepicker-days thead tr:first-child th.cw 
  background-color: transparent;
  cursor: default;

.datepicker > .datepicker-days thead tr:first-child th.cw + .prev 
  left: 30px;
  border-left: 1px solid;

.datepicker > .datepicker-days thead tr:last-child th.cw + th 
  border-left: 1px solid;

【问题讨论】:

【参考方案1】:

这对我有用:

.datepicker-inline 
    width: 100%;

.datepicker table 
    width: 100%;

【讨论】:

我需要使用节点包“boostrap-sass-datepicker”将 .datepicker-inline 更改为 .datepicker.datepicker-inline。【参考方案2】:

这对我有用:

<style>
.datetimepicker 
    width: 100%;

</style>

【讨论】:

【参考方案3】:

尝试在日期选择器的 css 中找到行 Width:; 并将其设置为继承 width = inherit; 应该给它父 div 的 with。如果这不起作用,请为日期选择器发布您的 css 代码。

【讨论】:

嘿 EntangledQuantum,谢谢您的回复。我已经尝试在 css 代码中编辑宽度。所以我将 .datepicker 类编辑为 width: inherit 但它不起作用。我在帖子中添加了完整的 CSS 代码。 .datepicker table tr td span 中将宽度设置为width= 100%; 如果这不起作用然后删除所有宽度参数并查看它是否改变了任何东西,如果它改变了则分别删除每个宽度参数以找出哪个保留您的日期选择器不会占用全宽。 嘿EntangledQuantum,再次非常感谢您的回答。我试过了,但没有效果,宽度仍然小于面板允许的内容..您还有其他想法吗? 那么它可能硬编码到 datepicker.js 文件中,但我不知道 js,所以我无法帮助您,抱歉。【参考方案4】:

在初始化脚本中改变容器和方向:

$('#pay_date').datepicker(
    format: 'mm-dd-yyyy',
    container: '#pay_date1-group',
    orientation: "auto top"
);

容器必须是其直接父元素(它将是您指定的任何父元素的宽度)

【讨论】:

以上是关于如何更改引导内联日期选择器以适应全宽的主要内容,如果未能解决你的问题,请参考以下文章

选择后引导日期选择器返回焦点

引导日期选择器的问题

如何验证日期选择器以禁止/拒绝某些日期?

Angular:如何配置日期选择器以禁用多个日期范围?

如何捕捉引导日期选择器更改事件?

如何设置日期选择器以单独显示 1910-2010 之间的年份