【问题标题】:How to change alignment of popover from v-date-picker component?如何从 v-date-picker 组件更改弹出框的对齐方式?
【发布时间】:2019-10-31 02:32:28
【问题描述】:

我正在使用 v-calendar 插件在前端创建一个日期选择器。如何更改 v-date-picker 组件的弹出框的位置/对齐方式? (同时保持所有其他元素居中,并且仅使用 CDN 导入)

我正在尝试使用 Vue.js、v-calendar、Bootstrap(以及某些图表的 Chart.js)构建前端。所有这些库/框架/插件现在都使用 CDN 链接导入到项目中。我尝试使用 v-calendar GitHub page 中提到的 popoverAlign 属性。补充一点可能很重要,我在正文上使用text-align: center; 将页面上的所有元素居中,但似乎弹出框也没有居中。

这是我尝试使用的代码:

Vue.use(VCalendar, {
   popoverAlign: "bottom",
})

但我收到了错误消息Uncaught ReferenceError: VCalendar is not defined,这可能是因为我仅通过CDN链接使用库而没有安装它们。

我希望弹出框出现在日期选择器的输入元素下方。它实际上出现在它的下方,但向左移动。 像这样: actual result

我也尝试在JSFiddle 中重新创建问题,但问题并没有出现在那里。我一无所知,因为我不知道是什么导致了弹出框这种奇怪的对齐方式。

【问题讨论】:

标签: javascript html css twitter-bootstrap vue.js


【解决方案1】:

要使弹出框在您的输入中居中对齐,您只需在 <v-date-picker> 元素上使用 popover-align="center"

Vue.config.productionTip = false;
Vue.config.devtools = false;

const vue = new Vue({
  el: "#app",
  data: () => ({
    selectedDate: {
      start: new Date(),
      end: new Date()
    }
  })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/v-calendar@0.9.7/lib/v-calendar.min.js"></script>

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://unpkg.com/v-calendar/lib/v-calendar.min.css" rel="stylesheet" />

<div class="container" id="app">
  <div class="row">
    <div class="col-12">
      <h1>
        Example
      </h1>
    </div>
  </div>
  <div class="row">
    <div class="col-6">
      Other stuff here
    </div>
    <div>
      <v-date-picker :max-date='new Date()' 
                     mode='range' 
                     v-model="selectedDate" 
                     popover-align="center">
      </v-date-picker>
    </div>
  </div>
</div>

【讨论】:

  • 非常感谢,它现在工作了!是否可以通过向 HTML 组件添加属性来添加任何属性(在 v-calendar 插件 GitHub 上提到)?
  • 是的,但您需要确保它们的格式正确。在这里它起作用了,因为popover-align 将字符串作为参数。但如果参数是其他东西(数字或对象),您可能必须将其作为 JavaScript 表达式传递。在上述情况下,JS 表达式格式应该是::popover-align="'center'"。注意属性名称前的冒号(= 解析为 JS 表达式)和双引号内的单引号(= 解析为字符串)。因为默认的 HTML 属性类型是字符串,所以我放弃了两者。
猜你喜欢
  • 2019-07-12
  • 2021-03-25
  • 2017-04-11
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多