我想用这个形状创建一个div,使用的是html和css:

enter image description here

我创建了类似下面的东西,但它的边框看起来不像上面的照片.有人能帮我吗?

.card {
  background-color: rgb(237, 241, 244);
  position: relative;
  border-radius: 12px;
  width: 300px;
  height: 450px;
}

.header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  margin-left: auto;
  margin-right: 38px;
  border-radius: 8px;
  height: 20px;
  width: 100px;
  background-color: white;
}
<div class="card">
  <div class="header"></div>
</div>

推荐答案

您可以使用选项卡标题的左侧和右侧的额外圆角div以及 Select 性地圆角来获得所需的效果.

在这里,我使选项卡覆盖在标题边框的顶部.

.card {
  --bg-color: rgb(237, 241, 244);
  --card-corner: 20px;
  --tab-corner: 12px;
  --border-width: 2px;
  width: 300px;
  height: 450px;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}
.card * { box-sizing: inherit; }
.header {
  flex: none;
  height: 20px;
  font: 12px sans-serif;
  background-color: var(--bg-color);
  border: var(--border-width) solid #0144;
  border-bottom: none;
  border-radius: var(--card-corner) var(--card-corner) 0 0;
  position: relative;
}
.content {
  flex: auto;
  background-color: var(--bg-color);
  border: var(--border-width) solid #0144;
  border-top: none;
  border-radius: 0 0 var(--card-corner) var(--card-corner);
  padding: 10px;
}

.tab {
  z-index: 1;
  position: absolute;
  right: max(24px, var(--card-corner));
  top: calc(-1 * var(--border-width));
  height: 20px;
  display: flex;
  isolation: isolate;
}
/* border style */
.inner::before, .outer::before, .label {
  border-width: var(--border-width);
  border-color: #0144;
}
/* tab curve elements */
.inner, .outer {
  width: var(--tab-corner);
  position: relative;
}
.inner::before, .outer::before {
  content: '';
  position: absolute;
  inset: 0;
}
/* fills */
.outer, .inner::before { background-color: white; }
.inner, .outer::before { background-color: var(--bg-color); }
/* align borders of neighboring elements */
.outer {
  z-index: 1;
  align-self: start;
  height: 50%;
}
.left.outer { margin-right: calc(-1 * var(--border-width)); }
.right.outer { margin-left: calc(-1 * var(--border-width)); }
/* borders */
.left.outer::before {
  border-style: solid solid none none;
  border-top-right-radius: var(--tab-corner);
}
.left.inner::before {
  border-style: none none solid solid;
  border-bottom-left-radius: var(--tab-corner);
}
.right.inner::before {
  border-style: none solid solid none;
  border-bottom-right-radius: var(--tab-corner);
}
.right.outer::before {
  border-style: solid none none solid;
  border-top-left-radius: var(--tab-corner);
}
.label {
  border-bottom-style: solid;
  background-color: white;
  display: flex;
  align-items: center;
  justify-content: center;
}
<div class="card">
  <div class="header">
    <div class="tab">
      <div class="left outer"></div>
      <div class="left inner"></div>
      <div class="label">Header</div>
      <div class="right inner"></div>
      <div class="right outer"></div>
    </div>
  </div>
  <div class="content">
  </div>
</div>

Html相关问答推荐

电话号码验证器(Angular )

需要帮助实现悬停动画效果

连续的相同 colored颜色 单元格应位于同一列、网格框中

将输入字段下方的两个按钮设置为两侧对齐

仅在加载视频时显示描述(<;Video>;标签)

如何使用CSS在<;表格中<;SVG&>?

更改Angular 为17的material Select 字段的高度?

使用bash从html表格中提取表格

动画的停止和启动并不顺利

CSS 伪类 Select 器未按预期工作

如何在Go模板中传入途中创建的 map

页面文件夹内的 HTML 页面未加载主目录的 style.css

用由文本制成的边框包围内容

为什么 CSS 网格超出了父级?

网页爬虫:使用时光机器进行数据采集

对齐页面左侧的单选按钮

如何将 HTML DateTime 转换为 Golang Time 对象

pandas `to_html()` - 如何只使特定的行有边框

透明渐变凹矩形

如何动态调整彼此重叠的两个 div 的大小,使它们在增长时保持相同的高度