我最近接手了另一个开发人员启动的一个小项目,该项目的核心内容之一是在日历上显示信息。该日历是使用Salesforce Lightning组件中的Javascript创建的,JS创建了一个无序列表,然后用充当日期的列表项填充该列表。问题就出在这里,只要一天之内显示链接之类的信息,列表项就会被移动,从而使每天的最后一行与前一天对齐,如下所示:
损坏的日历天:
每个列表项都包含一个段落标记,其中包含日期编号和一个链接(如果适用),每个链接之间都由一个换行符分隔。
以下是闪电组件中的javascript:
var number = DayNumber(i + 1);
// Check Date against Event Dates
for (var n = 0; n < calendar.Model.length; n++) {
var evDate = calendar.Model[n].Date;
var toDate = new Date(calendar.Selected.Year, calendar.Selected.Month, (i + 1));
if (evDate.getTime() == toDate.getTime()) {
number.className += " eventday";
var title = document.createElement('span');
title.className += "cld-title";
if (typeof calendar.Model[n].Link == 'function' || calendar.Options.EventClick) {
var a = document.createElement('a');
a.setAttribute('href', '#');
a.innerHTML += calendar.Model[n].Title;
if (calendar.Options.EventClick) {
var z = calendar.Model[n].Link;
if (typeof calendar.Model[n].Link != 'string') {
a.addEventListener('click', calendar.Options.EventClick.bind.apply(calendar.Options.EventClick, [null].concat(z)));
if (calendar.Options.EventTargetWholeDay) {
day.className += " clickable";
day.addEventListener('click', calendar.Options.EventClick.bind.apply(calendar.Options.EventClick, [null].concat(z)));
}
} else {
a.addEventListener('click', calendar.Options.EventClick.bind(null, z));
if (calendar.Options.EventTargetWholeDay) {
day.className += " clickable";
day.addEventListener('click', calendar.Options.EventClick.bind(null, z));
}
}
} else {
a.addEventListener('click', calendar.Model[n].Link);
if (calendar.Options.EventTargetWholeDay) {
day.className += " clickable";
day.addEventListener('click', calendar.Model[n].Link);
}
}
title.appendChild(a);
} else {
title.innerHTML += '<a href="' + calendar.Model[n].Link + '">' + calendar.Model[n].Title + '</a>';
}
number.innerHTML += "</br>" + title.innerHTML;
}
}
day.appendChild(number);
它们以嵌入式显示,并使用边框产生日历的错觉。是否有任何方法可以更改或替代此列表对齐项目的方式?
答案 0 :(得分:0)
因此,问题是由无序列表如何处理内联对齐引起的。我修改了day元素的css,使其包含overflow:auto,此选项针对由文本引起的垂直对齐问题进行了调整。