再次使用 CSS 选项卡

问题描述 投票:0回答:1

我无法根据作业更改html代码。如何在内容上方制作按钮。困难在于标签包含在选项卡中。当您单击标签时,该选项卡将被分配活动类。

竖版没有问题(如果按钮位于内容左侧)。

$(".option").on('click', function () {
    $('.tab.active').removeClass('active');
    $(this).closest('.tab').addClass("active");
});
.tabs{
  display:flex;
  align-items: flex-start;
}

.tab{
  display: block;
  order:1;
}

label{
background: #999;
  top: 0;
  order: 0;
  margin-right:10px;
}

.option-details{
display: none;
}

.tab.active .option-details{
display: flex;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
<div class="tabs">
    <div class="tab active">
  <label class="option">
    <input name="delivery_id" type="radio" checked="checked" value="4546661" />
    <span>
      header 1
    </span>
  </label>
  <div class="option-details">
    Content 1
  </div>
</div>
    <div class="tab">
  <label class="option">
    <input name="delivery_id" type="radio" value="65465" />
    <span>
      header 2
    </span>
  </label>
  <div class="option-details">
    Content 2               
  </div>
</div>
</div>

我设法使用了 flexbox 和 order,但是在这种情况下,第二个标签在内容 1 的宽度上与第一个标签相比有一个缩进。在我的版本中,这只能通过 javascript 实现,或者是否可以在 CSS 中以某种方式实现?

css tabs
1个回答
0
投票

这就是我所需要的。但也许有一个更优雅的解决方案

$(".option").on('click', function () {
    $('.tab.active').removeClass('active');
    $(this).closest('.tab').addClass("active");
  });
.tabs {
    display: grid;
    grid-template-areas: "A B" "C C";
}

.tab {
    display: contents;
}
label {
    background: #999;
}

.option-details {
    display: none;
    grid-area: C;
}

.tab.active .option-details {
    display: grid;
    grid-column: span 2;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
<div class="tabs">
    <div class="tab active">
  <label class="option">
    <input name="delivery_id" type="radio" checked="checked" value="4546661">
    <span>
      header 1
    </span>
  </label>
  <div class="option-details">
    Content 1
  </div>
</div>
    <div class="tab">
  <label class="option">
    <input name="delivery_id" type="radio" value="65465">
    <span>
      header 2
    </span>
  </label>
  <div class="option-details">
    Content 2               
  </div>
</div>
</div>

© www.soinside.com 2019 - 2024. All rights reserved.