html - 使用 CSS 动态调整内容的高度

标签 html css

<分区>

我正在尝试创建时间线并在时间之间添加内容。 当我向 articleContainerRight 或 articleContainerLeft 添加内容时,我需要背景矩形来动态调整高度并连接到作为主要内容的圆圈。

这是我的

CSS

.mainContent {
    border-radius: 50%;
    width: 36px;
    height: 36px;
    padding: 8px;
    position: relative;
    background: #fff;
    border: 2px solid #666;
    color: #666;
    text-align: center;
    margin: 1em 5em 0;
    font: 32px Arial, sans-serif;
}

.mainContent::after{
  content: '';
  position: absolute;
  top: 0em;
  left: 0.72em;
  width: .2em;
  height:4em;
  background: #666;
  z-index: -1;
}

.mainContent:last-child::after {
  display: none;
}

.articleContainerRight{   
    position: relative;
    top: 1em;
    left: 17em;
    font: 15px Arial, sans-serif;
}

.articleContainerLeft{   
    position: relative;
    top: 1em;
    right: -5em;
    font: 15px Arial, sans-serif;
}

.articleContainer{
    padding-bottom: 10px;
}

.spanContainer{
    color: blue;
}

HTML

<div class="mainContent">1</div>
<div class="articleContainerRight">
    <div class="articleContainer">
        <span class="spanContainer">test1</span>
    </div>
     <div class="articleContainer">
        <span class="spanContainer">test12</span>
    </div>
     <div class="articleContainer">
        <span class="spanContainer">test13</span>
    </div>
</div>
<div class="mainContent">2</div>
<div class="articleContainerLeft">
    <div class="articleContainer">
        <span class="spanContainer">test2</span>
    </div>
    <div class="articleContainer">
        <span class="spanContainer">test20</span>
    </div>

</div>
<div class="mainContent">3</div>

最佳答案

首先,仅使用纯 CSS 是不可能动态调整属性的,例如另一个元素的属性。 em 取决于字体、百分比值和事实,父元素通常总是增长以包含其子元素,这使得在您的示例中使用 articleContainers 非常完美。

因此,为了解决这个特殊问题,我将使用 .articleContainerRightborder-left 属性和 border-right .articleContainerLeft 分别扩展在 :after 语句中创建的行,因为边框会随着元素自动增长。如果您随后对 main- 和 articleContainer 的边距和填充进行一些试验,您可以管理它在任何情况下独立于它们的高度进行连接。

我为使您的示例生效所做的更改:

.mainContent {
    ...
    margin: 0 5em;
    ...
}

.articleContainerRight {
    ...
    left: 12em;
    border-left: 6px solid #666;
    margin-left: 5px;
    padding-left: 4em;
    padding-bottom: 1em;
}

.articleContainerLeft {
    ...
    border-right: 6px solid #666;
    width: 110px;
    padding-bottom: 1em;
}

以及完整的更新代码段:

.mainContent {
    border-radius: 50%;
    width: 36px;
    height: 36px;
    padding: 8px;
    position: relative;
    background: #fff;
    border: 2px solid #666;
    color: #666;
    text-align: center;
    margin: 0 5em;
    font: 32px Arial, sans-serif;
}

.mainContent::after{
  content: '';
  position: absolute;
  top: 0em;
  left: 0.72em;
  width: .2em;
  height:4em;
  background: #666;
  z-index: -1;
}

.mainContent:last-child::after {
  display: none;
}

.articleContainerRight{   
    position: relative;
    top: 1em;
    left: 12em;
    font: 15px Arial, sans-serif;
    border-left: 6px solid #666;
    margin-left: 5px;
    padding-left: 4em;
    padding-bottom: 1em;
}

.articleContainerLeft{   
    position: relative;
    top: 1em;
    right: -5em;
    font: 15px Arial, sans-serif;
    border-right: 6px solid #666;
    width: 110px;
    padding-bottom: 1em;
}

.articleContainer{
    padding-bottom: 10px;
}

.spanContainer{
    color: blue;
}
<div class="mainContent">1</div>
<div class="articleContainerRight">
    <div class="articleContainer">
        <span class="spanContainer">test1</span>
    </div>
	 <div class="articleContainer">
        <span class="spanContainer">test12</span>
    </div>
     <div class="articleContainer">
        <span class="spanContainer">test13</span>
    </div>
</div>
<div class="mainContent">2</div>
<div class="articleContainerLeft">
    <div class="articleContainer">
        <span class="spanContainer">test2</span>
    </div>
	<div class="articleContainer">
        <span class="spanContainer">test20</span>
    </div>
    
</div>
<div class="mainContent">3</div>

关于html - 使用 CSS 动态调整内容的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573941/

相关文章:

css - <h1> 到 <h6> 标签没有在 Chrome 中显示?

html - 使用不同大小的字体彼此相邻跨越 - 很棒的图标会破坏布局

容器内的 HTML 复选框标签未按预期显示

html - 具有严重技术限制的两列布局

javascript - 导航菜单不适用于移动设备

javascript - HTML5 Canvas 重影动画问题?

javascript - 如何通过 ID 引用 java 脚本中动态生成的元素?

java - web.xml URL 模式

javascript - 使用动态内容保持列的 100% 高度

html - bootstrap 后调用自定义 css 不会改变它吗?