Element UI中el-calendar日历的使用及样式修改(年月可下拉选框选择)

项目场景:

以日历形式展现当前页面。其中,年月可进行下拉选择,默认选中当天日期,用户可以自由点选日期,被选中后日期以紫色显示,鼠标在日历上移动时,日期显示出橙色。有数据的日期显示出灰色。

实现思路:删除现存在左上角年月元素,写一个下拉选框,通过css定位到正确位置,通过vue计算属性进行数据绑定

代码实现:

<div class="Calendarselect">
	<el-date-picker
		v-model="monthValue"
		type="month"
		size="mini"
		style="width:150px"
		@change="changeMonth"
		:clearable="false"
	></el-date-picker>
</div>
<el-calendar v-model="value" style="text-align: center;line-height: 66px;" >
	<template slot="dateCell" slot-scope="{date, data}">
	<div slot="reference" class="div-Calendar" @click="calendarOnClick(date)">
		<p :class="{'is-hasData':SubvactionDate.indexOf(data.day) > -1, }">
		{{ data.day.split('-').slice(2).join('-') }}
		</p>
	</div>
	</template>
</el-calendar>
//月下拉选框
changeMonth(){
	this.value = new Date(this.monthValue);
},
//日历样式修改
removeBtn(){
	this.$el.querySelector('div.el-calendar__title').remove();
},
computed: {
	monthValue: {
		get: function () {
		return this.value
	},
	set: function (newValue) {
		this.value = newValue
	}
},
.Calendarselect{
	top: 61px;
	position: relative;
	text-align: right;
	padding-right: 16px;
 }
 /* 日历表格今天样式 */
.el-backtop,
.el-calendar-table td.is-today {
    color: #7000BD;
}
/* 除去日历表格的padding */
.el-calendar-table .el-calendar-day {
    height: auto;
    padding: 0;
}
 /* 日历表格鼠标滑动样式 */
.el-calendar-table .el-calendar-day:hover {
    background-color: #F26C08 !important;
    color: white;
}
/* 日历表格选择日期样式 */
.el-calendar-table td.is-selected {
    background-color: #7000BD;
    color: white;
}

实现效果:
实现效果

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. 首先需要在 el-calendar 组件设置特定日期的样式,可以通过 slot-scope 获取到每个日期的具体信息,包括日期、农历、节日等。 ```html <el-calendar :value="date" :range="range" @change="change"> <template slot-scope="{ date, lunar, solarTerm, festival }"> <div class="date"> <div class="day">{{ date.getDate() }}</div> <div class="lunar">{{ lunar.day }}</div> <div class="festival">{{ festival }}</div> </div> </template> </el-calendar> ``` 2. 然后在后端返回的数据,添加一个标志字段,表示该日期是否需要特殊样式。例如,设置一个 holiday 字段,如果为 true,则该日期需要显示特定样式。 ```json { "date": "2022-01-01", "lunar": { "month": "十一", "day": "廿六" }, "solarTerm": null, "festival": "元旦", "holiday": true } ``` 3. 在 el-calendar 组件添加一个 class 字段,用来控制该日期的样式。在上述的模板,可以添加一个判断,如果该日期的 holiday 字段为 true,则添加一个 holiday 的 class。 ```html <el-calendar :value="date" :range="range" @change="change"> <template slot-scope="{ date, lunar, solarTerm, festival }"> <div :class="{ 'date': true, 'holiday': holiday }"> <div class="day">{{ date.getDate() }}</div> <div class="lunar">{{ lunar.day }}</div> <div class="festival">{{ festival }}</div> </div> </template> </el-calendar> ``` 4. 最后,在样式文件添加 holiday 类的样式,控制该日期的特定样式。例如,可以添加一个红色的标志,表示该日期是节假日。 ```css .holiday { position: relative; } .holiday::after { content: ''; position: absolute; top: 0; right: 0; width: 6px; height: 6px; border-radius: 50%; background-color: red; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值