需求:自定义elementui的日历的样式;给符合条件的时间展示红点。
elementui的原始样式:
目标样式:
代码实现:
html:
<el-calendar v-model="calendarValue"><template slot="dateCell" slot-scope="{date, data}"><div :class="data.isSelected ? '' : ''" class="is-point"><span>{{ Number(data.day.split('-')[2]) }}</span><i v-show="pointList.includes(data.day)" /></div></template>
</el-calendar>
JS:
export default {name: 'Dashboard',data() {return {calendarValue: new Date(),pointList: ['2023-09-12', '2023-09-11', '2023-09-01'],}},
}
css:
<style lang="scss" scoped>
::v-deep .el-calendar {padding-right: 17px;.el-calendar__header {font-size: 16px;font-weight: 700;color: #000000;line-height: 22px;border-bottom: 0;}.el-calendar__body {padding: 0px 0px 30px;thead {th {color: #7f2ca9;font-weight: 600;font-size: 14px;}}.el-calendar-table__row {td {border: 0;height: unset;border-radius: 50%;font-size: 13px;}.el-calendar-day {height: 33px;line-height: 37px;padding: 0;span {height: 24px;line-height: 24px;width: 24px;text-align: center;border-radius: 50%;display: inline-block;}&:hover {background-color: unset;span {background-color: #7f2ca91a;color: #7f2ca9;}}}.is-selected {background-color: unset;.el-calendar-day {span {background-color: #7f2ca9;color: #ffffff;}}}}}.is-point {display: flex;flex-direction: column;justify-content: flex-end;align-items: center;margin: 0;i {margin-top: 1px;display: inline-block;width: 6px;height: 6px;background: #ff0000;border-radius: 50%;}}
}
</style>
在这里小记一下,主要也是为了保留一下这次的修改成果,方便以后使用
有个没改好的地方就是,右上角的选择上下月的按钮不好修改为左右箭头,所以那块就没做优化,大家要是有好方法可以让我借鉴借鉴,ui如下: