CSS 技巧用空白覆盖其他 div 边框?

发布于 2024-11-01 11:20:34 字数 333 浏览 7 评论 0原文

我将如何去做像这张照片这样的事情?

覆盖其他人的带空白的 div 边框

我尝试为 li 提供背景,将其 1px 放置在右侧,并增大 z-index >,但没有有用。

我还想到了为 li 提供边框并隐藏活动边框的想法,但我需要边框与右侧的内容一样长。

How would I go about doing something like on this picture?

Overlayed other's div border with whitespace

I have tried giving the li a background, positioning it 1px to the right and greater z-index, but to no avail.

I also got the idea to give border to the li's and hide the border of the active one, but I need the border to be as long as the content on right.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

疑心病 2024-11-08 11:20:34

以下内容基于约翰的解决方案,并且还扩展了边框的高度以匹配内容的高度。

HTML:

<div id="wrapper">
    <div id="menu">
        <ul>
            <li>Item1</li>
            <li class="selected">Item2</li>
            <li>Item3</li>
        </ul>
    </div>
    <div id="content">
        <p>Some</p><p>really</p><p>long</p><p>content</p><p>...</p>
    </div>
</div>

CSS:

#wrapper {
    display:block;
}
#menu {
    display: table-cell; 
    position:relative;
    border-right: 1px solid black;
}
#menu ul {
    list-style: none;
}
#menu li {
    margin-right: -1px;
    border-style: solid;
    border-width: 0 1px 1px 0;
}
li.selected {
    border-right: 1px solid white;
}
#content {
    display: table-cell;
}

示例此处

The following builds on John's solution and also expands the height of the border to match the height of the content.

HTML:

<div id="wrapper">
    <div id="menu">
        <ul>
            <li>Item1</li>
            <li class="selected">Item2</li>
            <li>Item3</li>
        </ul>
    </div>
    <div id="content">
        <p>Some</p><p>really</p><p>long</p><p>content</p><p>...</p>
    </div>
</div>

CSS:

#wrapper {
    display:block;
}
#menu {
    display: table-cell; 
    position:relative;
    border-right: 1px solid black;
}
#menu ul {
    list-style: none;
}
#menu li {
    margin-right: -1px;
    border-style: solid;
    border-width: 0 1px 1px 0;
}
li.selected {
    border-right: 1px solid white;
}
#content {
    display: table-cell;
}

Example here.

落花随流水 2024-11-08 11:20:34

您可以这样做...

li.active {
   position: relative;
   right: -1px;
   padding: 1px;
}

只要包含的 ul 具有 overflow: hide

You can do this...

li.active {
   position: relative;
   right: -1px;
   padding: 1px;
}

So long as the containing ul has overflow: hidden.

攒眉千度 2024-11-08 11:20:34

尝试其中之一:

li.active {
   border-right-color: white;
}

li.active {
   border-right: 0;
}

try one of these:

li.active {
   border-right-color: white;
}

li.active {
   border-right: 0;
}
时光磨忆 2024-11-08 11:20:34

我实现了这种效果,我给每个列表项一个右边框,但对于选定的列表项,我将 border-color 更改为白色。

但是,如果您希望右边框扩展到列表项之外,则需要在 ul 上设置边框的高度,并为列表项添加 1px 负边距。

例如这个标记

<ul>
    <li><a href="#">Item one</a></li>
    <li><a href="#">Item two</a></li>
    <li><a href="#">Item three</a></li>
    <li class="at"><a href="#">Item four</a></li>
    <li><a href="#">Item five</a></li>
    <li><a href="#">Item six</a></li>
</ul>

和这个CSS

ul {
    width: 100px;
    height: 200px;
    border-right: 1px solid #000;

}

li {
    border-bottom: 1px solid #000;
    border-right: 1px solid #000;
    margin-right: -1px;
}

li.at {
    border-right: 1px solid #FFF;
}

将实现这个结果 - http://jsfiddle.net/ajcw/3VMyY/

I achieve this effect I give each of my list items a right border, but for the selected list item I change the border-color to white.

However if you want the right border to expand beyond the list items you need to set the border on the ul with a set height, and add a 1px negative margin to the list items.

For example this mark-up

<ul>
    <li><a href="#">Item one</a></li>
    <li><a href="#">Item two</a></li>
    <li><a href="#">Item three</a></li>
    <li class="at"><a href="#">Item four</a></li>
    <li><a href="#">Item five</a></li>
    <li><a href="#">Item six</a></li>
</ul>

And this CSS

ul {
    width: 100px;
    height: 200px;
    border-right: 1px solid #000;

}

li {
    border-bottom: 1px solid #000;
    border-right: 1px solid #000;
    margin-right: -1px;
}

li.at {
    border-right: 1px solid #FFF;
}

Will achieve this result - http://jsfiddle.net/ajcw/3VMyY/

仅冇旳回忆 2024-11-08 11:20:34

我认为重叠可以用 li 内的另一个 div 来完成,位置相对,向右移动。但随后您必须根据所选项目显示/隐藏它。

I think the overlapping could be done with another div inside li, with position relative, shifted to the right. But then you have to show/hide it based on selected item.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文