Chrome 子元素如何隐藏其父元素边框的一部分

ryevplcw  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(108)

我有一个选项卡控件,其特点是不稳定的行为。我试图隐藏底部边框的那部分,它代表我的“文件夹”的顶部,它直接位于活动标签下方,模仿一个真实的的文件夹。期望的外观:

但Chrome和Edge都有一种倾向,有时不能完全隐藏水平线。如果我将浏览器更改为不同的缩放级别,则会出现一条1像素的线:

这也发生在有时拖动框左右,然后消失时,我放手。或者在某些组件中可以正常运行,但在其他组件中同样的代码会出现问题。我似乎无法始终摆脱这一行,所以我想知道是否有一个更可靠的方法来隐藏活动标签下的行
我认为我的主要问题是我似乎无法从.tab覆盖下面的详细区域中做出任何事情。这就像z-index拒绝把标签放在上面。
这是我目前的代码。

* {
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    line-height: 1.42857143;
    color: #333;
    --color-dramatic-light-h: 0;
    --color-dramatic-light-s: 0%;
    --color-dramatic-light-l: 93%;
    --color-dramatic-light-fg: hsl(192,46%,42%);
    --color-dramatic-light: hsl(var(--color-dramatic-light-h), var(--color-dramatic-light-s), var(--color-dramatic-light-l));
    --color-accent: hsl(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l));
    font-size: 12px;
    box-sizing: border-box;
    margin: color-accent;
    padding: 0;
  }

  .svlt-grid-item {
    background-color: white;
    z-index: 100;
    box-shadow: 0 0 2.5em 1em black;
    opacity: 1 !important;
    touch-action: none;
    position: absolute;
    will-change: auto;
    -webkit-backface-visibility: hidden;
    width: 1362.796875px;
    height: 880px;
    transition: transform 0.2s, opacity 0.2s;
    transform: translate(701.3984375px, 166px);
  }

  .popupOverlayWrapper {
    height: 100%;
    overflow: auto;
  }

  .header {
    display: inline-block;
    padding: 0.1em;
    width: 100%;
    font-size: 1.5em;
    font-weight: bold;
    text-align: center;
  }

  .tabs {
    --tab-border-color: hsl(var(--color-dramatic-light-h),var(--color-dramatic-light-s),calc(var(--color-dramatic-light-l) * 0.2 ));
    position: relative;
    display: flex;
    overflow: hidden;
    flex-flow: row nowrap;
    height: 2.5em;
    width: 100%;
    isolation: isolate;
  }

  .tabs:before {
    position: absolute;
    content: "";
    width: 100%;
    bottom: 0px;
    left: 0;
    border-bottom: 1px solid var(--tab-border-color);
    z-index: 1;
  }

  .tab {
    --color-tab-gradient: hsl(var(--color-dramatic-light-h),var(--color-dramatic-light-s),calc(var(--color-dramatic-light-l) * 0.85 ));
    position: relative;
    padding: 0.1em 0.6em;
    margin: 0 -0.1em;
    height: 100%;
    cursor: pointer;
    outline: none;
    text-align: center;
    text-shadow: 0 1px 2px white;
    border-radius: 0.6em 0.6em 0 0;
    border: 1px solid var(--tab-border-color);
    background:linear-gradient(to bottom, white, var(--color-tab-gradient));
    box-shadow: 0 0.3em 0.3em var(--tab-border-color);
    color: var(--color-dramatic-light-fg);
    text-decoration: none;
    font-family: 'Fredoka One', 'Arial Black', sans-serif;
    font-size: 1.2em;
    line-height: 1em;
    z-index: 0;
  }

  .tab:before,
  .tab:after {
    position: absolute;
    content: " ";
    bottom: -1px;
    width: 0.60em;
    height: 0.60em;
    border: 1px solid var(--tab-border-color);
  }

  .tab:before {
    left: -0.60em;
    border-bottom-right-radius: 0.60em;
    border-width: 0 1px 1px 0;
    box-shadow: 0.2em 0.2em 0 var(--color-tab-gradient);
  }

  .tab:after {
    right: -0.60em;
    border-bottom-left-radius: 0.60em;
    border-width: 0 0 1px 1px;
    box-shadow: -0.2em 0.2em 0 var(--color-tab-gradient);
  }

  .tab.activeTab {
    z-index: 2;
    border-bottom-color: white;
    background: none white;
  }

  .tab.activeTab:before {
    box-shadow: 0.2em 0.2em 0 white;
  }

  .tab.activeTab:after {
    box-shadow: -0.2em 0.2em 0 white;
  }
<div draggable="false" class="svlt-grid-item" style="width: 1362.796875px; height:880px; transition: transform 0.2s, opacity 0.2s; transform: translate(701.3984375px, 166px); ">
  <div class="popupOverlayWrapper">
    <div class="header">
      <div class="tabs">
        <button class="tab activeTab">
          Listener Detail
        </button>
        <button class="tab">
          Listener Services
        </button>
        <button class="tab">
          Instances Served
        </button>
      </div>
    </div>
  </div>
</div>
wvyml7n5

wvyml7n51#

我用你的代码做了一点修改,通过margin-bottom调整了一些元素的位置,并修改了这些标签的box-shadow,我不确定这是否能满足你的需求:

.tabs:before {
                position: absolute;
                content: "";
                width: 100%;
                bottom: 0px;
                left: 0;
                border-bottom: 1px solid var(--tab-border-color);
                margin-bottom: 0.5px;
                z-index: 1;
            }

        .tab {
            --color-tab-gradient: hsl(var(--color-dramatic-light-h),var(--color-dramatic-light-s),calc(var(--color-dramatic-light-l) * 0.85 ));
            position: relative;
            padding: 0.1em 0.6em;
            margin: 0 -0.1em;
            height: 100%;
            cursor: pointer;
            outline-color: aliceblue;
            text-align: center;
            text-shadow: 0 1px 2px white;
            border-radius: 0.6em 0.6em 0 0;
            border: 1px solid var(--tab-border-color);
            background: linear-gradient(to bottom, white, var(--color-tab-gradient));
            /*box-shadow: 0 0.3em 0.3em var(--tab-border-color);*/
            color: var(--color-dramatic-light-fg);
            text-decoration: none;
            font-family: 'Fredoka One', 'Arial Black', sans-serif;
            font-size: 1.2em;
            line-height: 1em;
            
            z-index: 0;
        }

结果:

相关问题