【发布时间】:2021-07-24 01:20:21
【问题描述】:
我创建了一个网格/矩阵,我想附加我通过 Fetch 从 SharePoint 列表收集的 JSON 数据。
我为每个方格应用了一个 ID,以便可以附加项目。我到了这个地步,脑子里放了个屁,不知道如何实际输入/附加数据。我不想只在方块上显示文字,当我将鼠标悬停在事件所在的方块上时,我正在考虑使用 (::before and ::after) 伪元素,将弹出一个包含有关事件信息的模式或对话框。
我通过 fetch 提取的数据在 data.d.results 中被格式化为 JSON。
这是数据样本
JSON 响应
{
"d": {
"results": [
{
"Title": "Pandemic & Natural Disasters",
"Status": "Active",
"Priority": "(1) High",
"Category": "(2)",
"Likelihood": "5",
"Consequence": "3"
},
{
"Title": "New Example",
"Status": "Active",
"Priority": "(1) High",
"Category": "(3)",
"Likelihood": "4",
"Consequence": "4"
},
{
"Title": "Example #2",
"Status": "Active",
"Priority": "(1) High",
"Category": "(3) Performance (Scope)",
"Likelihood": "4",
"Consequence": "3"
},
{
"Title": "Delays",
"Status": "Active",
"Priority": "(1) High",
"Category": "(2) Schedule",
"Likelihood": "5",
"Consequence": "2"
}
]
}
}
所以网格是 5x5,对话框/模态的位置取决于数据值似然(Y 轴)和结果(X 轴)。所以在样本数据中 x=3, y=4 所以它会在黄色方块中。然后在对话框/模态中,文本应显示如下:
-------------------------------------
| Title |
| Category |
| Priority |
| Status |
| Severity
|
------------------------------------
我怎样才能做到这一点?
这是我的矩阵:
.box {
position: relative;
background-color: lightgrey;
color: #fff;
border-radius: 0px;
padding: 20px;
font-size: 150%;
border: 1px solid black;
}
.wrapper {
margin: 60px 0 90px 90px;
display: grid;
grid-gap: 0;
grid-template-columns: repeat(5, 100px);
grid-template-rows: repeat(5, 100px);
grid-auto-flow: column;
}
#red {
background-color: red;
}
#yellow {
background-color: yellow;
}
#green {
background-color: green;
}
section {
position: relative;
width: 600px;
}
p.likelihood {
transform: rotate(-90deg) translateY(-50%);
transform-origin: top;
position: absolute;
top: 50%;
left: -20px;
font-size: 30px;
margin: 0;
}
p.consequence {
font-size: 30px;
position: absolute;
transform: translateX(-50%);
left: calc(50% + 45px);
bottom: -60px;
margin: 0;
}
.numbers-container {
position: absolute;
display: flex;
}
.numbers-container-x {
padding-top: 10px;
left: 90px;
bottom: -25px;
}
.numbers-container-x .number {
width: 100px;
text-align: center;
}
.numbers-container-y {
flex-direction: column-reverse;
left: 70px;
top: 0;
}
.numbers-container-y .number {
height: 100px;
line-height: 100px;
}
<section>
<div class="wrapper">
<div class="box box1" id="5" style="background-color:
#329932;">
</div>
<div class="box box1" id="4" style="background-color:
#329932;">
</div>
<div class="box box1" id="3" style="background-color:
#329932;">
</div>
<div class="box box1" id="2" style="background-color:
#329932;">
</div>
<div class="box box1" id="1" style="background-color:
#329932;">
</div>
<div class="box box1" id="6" style="background-color: #ffff32;">
</div>
<div class="box box1" id="7" style="background-color: #ffff32;">
</div>
<div class="box box1" id="8" style="background-color:
#329932;">
</div>
<div class="box box1" id="9" style="background-color:
#329932;">
</div>
<div class="box box1" id="10" style="background-color:
#329932;">
</div>
<div class="box box1" id="15" style="background-color: #ff3232;">
</div>
<div class="box box1" id="14" style="background-color: #ffff32;">
</div>
<div class="box box1" id="13" style="background-color: #ffff32;">
</div>
<div class="box box1" id="12" style="background-color:
#329932;">
</div>
<div class="box box1" id="11" style="background-color:
#329932;">
</div>
<div class="box box1" id="16" style="background-color: #ff3232;">
</div>
<div class="box box1" id="17" style="background-color: #ff3232;">
</div>
<div class="box box1" id="18" style="background-color: #ffff32;">
</div>
<div class="box box1" id="19" style="background-color: #ffff32;">
</div>
<div class="box box1" id="20" style="background-color:
#329932;">
</div>
<div class="box box1" id="25" style="background-color: #ff3232;">
</div>
<div class="box box1" id="24" style="background-color: #ff3232;">
</div>
<div class="box box1" id="23" style="background-color: #ff3232;">
</div>
<div class="box box1" id="22" style="background-color: #ffff32;">
</div>
<div class="box box1" id="21" style="background-color: #ffff32;">
</div>
</div>
<div class="numbers-container numbers-container-y">
<div class="number">1</div>
<div class="number">2</div>
<div class="number">3</div>
<div class="number">4</div>
<div class="number">5</div>
</div>
<div class="numbers-container numbers-container-x">
<div class="number">1</div>
<div class="number">2</div>
<div class="number">3</div>
<div class="number">4</div>
<div class="number">5</div>
</div>
<p class="likelihood">
Likelihood
</p>
<p class="consequence">
Consequence
</p>
</section>
【问题讨论】:
-
我没有正确理解这个问题。我认为为了更好地理解,您可以提供一些失败的测试用例并解释结果应该是什么。有问题的行为是什么以及预期的行为是什么的屏幕截图也会有很大帮助。
-
可以选择修改DOM结构吗?
标签: javascript html css pseudo-element