html – 具有突破标签说明的挑战性图表

前端之家收集整理的这篇文章主要介绍了html – 具有突破标签说明的挑战性图表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对某些产品有一些隐秘的命名标签,我想用一个带有突破标签的图解释它们,类似的东西:

也就是说,我有一些长而神秘的标签(在这个例子中是“A-253-QZ”,在现实世界中通常有8-10-12个组件),我需要解释它的部分,“A”是指系列代号,“253”是例如“最大速度”,“QZ”是可接受的电池类型.

我需要生成这些图表,所以我更喜欢用HTML CSS进行布局.

到目前为止,我的最大努力是一个复杂的表格,它使用其边框绘制这些突破线 – JSBin.它看起来像:

我知道这是非常不理想的:

>它使用HTML表进行格式化,那就是恶意
>垂直线是正确居中的,但它会产生地狱的一列
>水平线不对准线的中心,而是与其底部对齐
水平线不会触及说明字幕的末尾

任何想法如何更好地/没有表/修复提到的问题?任何关于更好地表征概念的想法?

解决方法

这是我的尝试.只是想成为语义,尽可能少的额外元素
.container {
  width: 400px;
  height: 200px;
}

.container * {
  display: inline-block;
  float: left;
  margin: 4px;
  position: relative;
}

.item:first-of-type {
  margin-left: 200px;
}


.item:before {
  content: attr(data-label);
  text-align: right;
  position: absolute;
  right: calc(100% + 10px);
  height: 30px;
  width: 200px;
} 

.item:nth-of-type(1):before {
  bottom: -50px;
} 

.item:nth-of-type(2):before {
  bottom: -80px;
} 

.item:nth-of-type(3):before {
  bottom: -110px;
} 

.item:after {
  content: "";
  position: absolute;
  width: 100%;
  left: 0px;
  Box-shadow: inset 0px 2px 0px blue;
  background-image: linear-gradient(blue,blue),linear-gradient(blue,blue);
  background-position: 50% 0%,0% calc(100% - 10px);
  background-size: 2px calc(100% - 10px),50% 2px;
  background-repeat: no-repeat;
} 

.item:nth-of-type(1):after {
  top: 30px;
  height: 30px;
  z-index: -1;
} 

.item:nth-of-type(2):after {
  top: 30px;
  height: 60px;
  z-index: -2;
} 

.item:nth-of-type(3):after {
  top: 30px;
  height: 90px;
  z-index: -3;
}
<div class="container">
    <div class="item" data-label="Category 1">FIRST</div>
    <p>-</p>
    <div class="item" data-label="Category 2">SEC</div>
    <p>-</p>
    <div class="item" data-label="Category 3">THIRD</div>
</div>

另一个例子,好一点,并收缩包装容器.

伪元素不再是绝对定位的,所以容器可以调整大小.并避免一些calc使用,总是比维护比填充更困难.

不过,我仍然需要在手上放置一个填充物.看不到如何避免这个…

.container {
  border: solid 1px red;
  display: inline-block;
  padding-left: 200px;
}

.container * {
  display: inline-block;
  float: left;
  margin: 4px;
  position: relative;

}

.item:before {
  content: attr(data-label);
  text-align: right;
  position: absolute;
  display: inline-block;
  right: 100%;
  height: 30px;
  width: 200px;
  padding-right: 8px;
} 

.item:nth-of-type(1):before {
  top: 30px;
} 

.item:nth-of-type(2):before {
  top: 55px;
} 

.item:nth-of-type(3):before {
  top: 85px;
} 

.item:after {
  content: "";
  display: inline-block;
  width: 100%;
  left: 0px;
  Box-shadow: inset 0px 2px 0px blue;
  background-image: linear-gradient(blue,50% 2px;
  background-repeat: no-repeat;
} 

.item:nth-of-type(1):after {
  height: 30px;
} 

.item:nth-of-type(2):after {
  height: 60px;
} 

.item:nth-of-type(3):after {
  height: 90px;
}
<div class="container">
    <div class="item" data-label="Category 1">FIRST</div>
    <p>-</p>
    <div class="item" data-label="Category 2">SEC</div>
    <p>-</p>
    <div class="item" data-label="Category 3">THIRD</div>
</div>

猜你在找的HTML相关文章