我想知道是否有在不使用 JavaScript 的情况下创建滚动选项卡的方法。我被分配了一项严格使用 HTML 和 CSS 的任务,仅此而已。下面的代码是我能找到的创建选项卡的最佳解决方案,除了 HTML 和 CSS 之外不使用任何其他东西。我在网上找到了一些滚动标签的代码,但它还是使用了 JavaScript。那么,是否可以仅使用 HTML 和 CSS 来实现滚动标签?有什么帮助,谢谢!
.tabs
{position: relative;
min-height: 200px;
clear: both;
margin: 25px 0;}
.tab
{float: left;}
.tab label
{background: #eee;
padding: 10px;
border: 1px solid #ccc;
margin-left: -1px;
cursor:pointer;
position: relative;
left: 1px; }
.tab [type=radio]
{display: none;}
.content {position: absolute;
top: 28px;
left: 0;
background: white;
height:100px;
right: 0;
bottom: 0;
padding: 20px;
border: 1px solid #ccc;}
[type=radio]:checked ~ label
{background: white;
border-bottom: 1px solid white;
z-index: 2;}
[type=radio]:checked ~ label ~ .content
{z-index: 1;}
<div class="tabs">
<div class="tab">
<input name="tab-group-1" id="tab-1" type="radio"/>
<label for="tab-1">Tab One</label>
<div class="content">
Content 1
</div>
</div>
<div class="tab">
<input name="tab-group-1" id="tab-2" type="radio"/>
<label for="tab-2">Tab Two</label>
<div class="content"> Content 2 </div>
</div>
</div>
原文由 David Kris 发布,翻译遵循 CC BY-SA 4.0 许可协议
所以使用 JavaScript 可能会更好,但 CSS 中确实存在一个解决方案,如果您愿意允许对宽度和高度以及滚动条结束的位置进行某些限制。
基本思想是使选项卡本身成为
inline-block
,并让它们的容器具有overflow-x: auto
。当标签太大时,这将在容器上放置一个水平滚动栏。也就是说,这要求容器具有固定大小,如果您要将内容元素保留在每个选项卡中,则必须强制内容也具有固定大小’
div
s .如果可以避免的话,我不想以这种方式构建它,但这是一个纯粹的 HTML 和 CSS 解决方案。下面是一个可运行的片段,源自您的原始片段。我将容器上的宽度专门设置为
300px
这样您就可以看到水平溢出的样子。更新: 根据请求,这里有一种方法可以将水平滚动条夹在选项卡和内容之间。请记住,这比上面的解决方案更 _骇人听闻_,确实滥用了溢出和高度控制,但它是可行的。只是不要尝试将任何内容放在内容 div 下方,因为那样肯定不会很好。