javascript - JQuery Datepicker - 垂直居中日期

标签 javascript jquery html css datepicker

我目前正在设计 jquery datepicker 的样式,但我很难将日期位置垂直居中。

这是我目前得到的: https://jsfiddle.net/L4vrkpmc/1/

由于日期选择器正在使用我尝试过的表格

.ui-datepicker-calendar td{
  vertical-align:center;
}

但它不会起作用。任何人都知道如何垂直居中的日子?

html,
body {
  height: 100%;
}


/* DatePicker Container */

#calendar {
  height: 100%;
}

.ui-datepicker {
  width: 100%;
  height: 100%;
  margin: 5px auto 0;
  font: 9pt Arial, sans-serif;
  -webkit-box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, .5);
  -moz-box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, .5);
  box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, .5);
}

.ui-datepicker a {
  text-decoration: none;
}


/* DatePicker Table */

.ui-datepicker table {
  width: 100%;
  height: 100%;
  text-align: center;
}

.ui-datepicker-header {
  background: url('../img/dark_leather.png') repeat 0 0 #000;
  color: #e0e0e0;
  font-weight: bold;
  -webkit-box-shadow: inset 0px 1px 1px 0px rgba(250, 250, 250, 2);
  -moz-box-shadow: inset 0px 1px 1px 0px rgba(250, 250, 250, .2);
  box-shadow: inset 0px 1px 1px 0px rgba(250, 250, 250, .2);
  text-shadow: 1px -1px 0px #000;
  filter: dropshadow(color=#000, offx=1, offy=-1);
  line-height: 30px;
  border-width: 1px 0 0 0;
  border-style: solid;
  border-color: #111;
}

.ui-datepicker-title {
  text-align: center;
}

.ui-datepicker-prev,
.ui-datepicker-next {
  display: inline-block;
  width: 30px;
  height: 30px;
  text-align: center;
  cursor: pointer;
  line-height: 600%;
  overflow: hidden;
}

.ui-datepicker-prev {
  float: left;
  background-position: center -30px;
}

.ui-datepicker-next {
  float: right;
  background-position: center 0px;
}

.ui-datepicker thead {
  background-color: #f7f7f7;
  background-image: -moz-linear-gradient(top, #f7f7f7 0%, #f1f1f1 100%);
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f7f7f7), color-stop(100%, #f1f1f1));
  background-image: -webkit-linear-gradient(top, #f7f7f7 0%, #f1f1f1 100%);
  background-image: -o-linear-gradient(top, #f7f7f7 0%, #f1f1f1 100%);
  background-image: -ms-linear-gradient(top, #f7f7f7 0%, #f1f1f1 100%);
  background-image: linear-gradient(top, #f7f7f7 0%, #f1f1f1 100%);
  filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f7f7', endColorstr='#f1f1f1', GradientType=0);
  border-bottom: 1px solid #bbb;
}

.ui-datepicker th {
  text-transform: uppercase;
  font-size: 6pt;
  padding: 5px 0;
  color: #666666;
  text-shadow: 1px 0px 0px #fff;
  filter: dropshadow(color=#fff, offx=1, offy=0);
}

.ui-datepicker tbody td {
  padding: 0;
  border-right: 1px solid #bbb;
}

.ui-datepicker tbody td:last-child {
  border-right: 0px;
}

.ui-datepicker tbody tr {
  border-bottom: 1px solid #bbb;
}

.ui-datepicker tbody tr:last-child {
  border-bottom: 0px;
}

.ui-datepicker td span,
.ui-datepicker td a {
  display: inline-block;
  font-weight: bold;
  text-align: center;
  width: 100%;
  height: 100%;
  color: #666666;
  text-shadow: 1px 1px 0px #fff;
  filter: dropshadow(color=#fff, offx=1, offy=1);
}

.ui-datepicker-calendar .ui-state-default {
  background: #ededed;
  background: -moz-linear-gradient(top, #ededed 0%, #dedede 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ededed), color-stop(100%, #dedede));
  background: -webkit-linear-gradient(top, #ededed 0%, #dedede 100%);
  background: -o-linear-gradient(top, #ededed 0%, #dedede 100%);
  background: -ms-linear-gradient(top, #ededed 0%, #dedede 100%);
  background: linear-gradient(top, #ededed 0%, #dedede 100%);
  filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#dedede', GradientType=0);
  -webkit-box-shadow: inset 1px 1px 0px 0px rgba(250, 250, 250, .5);
  -moz-box-shadow: inset 1px 1px 0px 0px rgba(250, 250, 250, .5);
  box-shadow: inset 1px 1px 0px 0px rgba(250, 250, 250, .5);
}

.ui-datepicker-calendar .ui-state-hover {
  background: #f7f7f7;
}

.ui-datepicker-calendar .ui-state-active {
  background: #6eafbf;
  -webkit-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .1);
  -moz-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .1);
  box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .1);
  color: #e0e0e0;
  text-shadow: 0px 1px 0px #4d7a85;
  filter: dropshadow(color=#4d7a85, offx=0, offy=1);
  border: 1px solid #55838f;
  position: relative;
  margin: -1px;
}

.ui-datepicker-unselectable .ui-state-default {
  background: #f4f4f4;
  color: #b4b3b3;
}

.ui-datepicker-calendar td:first-child .ui-state-active {
  margin-left: 0;
}

.ui-datepicker-calendar td:last-child .ui-state-active {
  margin-right: 0;
}

.ui-datepicker-calendar tr:last-child .ui-state-active {
  margin-bottom: 0;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script type="text/javascript">
  $(function() {
    $('#calendar').datepicker({
      inline: true,
      showOtherMonths: true,
      firstDay: 1,
      dayNamesMin: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
    });
  });

</script>

<div id="calendar"></div>

感谢您的帮助:)

最佳答案

如果“a”标签不包含任何子标签,则无法垂直对齐文本。我用<span>包裹了文字在“a”下' 使用 jQuery 的标记。这是代码:

$(".ui-datepicker td").each(function(){
    var dateText = $(this).find("a").text();
    $(this).find("a").html("<span>"+dateText+"</span>");
});

和一些简单的 CSS 更改:

.ui-datepicker td a{
    display: table;
    position: relative;
    height: 100%;
    width: 100%;
}
.ui-datepicker td a span{
    display: table-cell;
    text-align:center;
    vertical-align: middle;
}

关于javascript - JQuery Datepicker - 垂直居中日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40127259/

相关文章:

javascript - 在 JS settimeout 函数中刷新页面但保留表单数据?

javascript - 为什么点击div不自动点击tab

html - 如何使用 Vue.js 隐藏 div

python - 解析 HTML 以获取元素内的文本

javascript - 在运行功能之前添加按钮单击时间限制,以防多次单击按钮

javascript - 如何将文档字段重组为数组

javascript - angularjs在javascript中获取全局范围变量

javascript - 动态添加 React 组件

javascript - unslider滑动图片问题

javascript - 如何为不同设置的多个元素添加滚动背景效果?