在CSS中重叠零件圈

时间:2019-02-26 23:34:28

标签: html css

enter image description here

您将如何在CSS中处理此问题?

到目前为止,这是我所拥有的,但与设计者的愿景相去甚远。

我的方法是在伪选择器之前和之后设置一个,顶部细长的半个圆使用一个伪选择器(伪选择之前的一个),伪选择器之后使用一个伪选择器,在底部设置一个较粗的部分-角度很小-但是,它也不是一个完整的半圆-只有1/3圆左右。

没有设计师可以咨询。

有什么建议吗?

 .searchText {
  color: black;
  display: block;
  position: relative;
  height: 40px;
  width: 196px;
  font-size: 18px;
  font-weight: 600;
  line-height: 21px; 
  top: 100px;
  left: 100px;
}
  .searchText:before {
    content: "";
    position: absolute;
    top: -25px;
    left: -18px;
    box-sizing: border-box;
    height: 28px;
    width: 56px;
    border: 2px solid #f57e22;
    border-bottom: 0;
    border-top-left-radius: 28px;
    border-top-right-radius:28px;
  }
.searchText:after {
    content: "";
    box-sizing: border-box;
    
    height: 28px;
    width: 56px;
    border: 5px solid #f57e22;
    border-top: 0;
    position: absolute;
    top: 10px;
    bottom: 2px;
    left: -26px;
    border-bottom-left-radius: 28px;
    border-bottom-right-radius:28px;
   transform: rotate(20deg);
  
  }
<span class="searchText">Search</span>

1 个答案:

答案 0 :(得分:1)

您可以按以下方式尝试。如果仅对左边界和底边界着色,则您将近似1/3圆:

.box {
  display:inline-block;
  padding:20px 0 20px 25px;
  font-weight:bold;
  position:relative;
}
.box::before {
  content:"";
  position:absolute;
  top:2px;
  left:0;
  width:40px;
  height:20px;
  border-radius:25px 25px 0 0;
  border:2px solid #f57e22;
  border-bottom:none;
  transform:rotate(-6deg); /*a small rotation to this one to avoid the text overlap*/
}
.box::after {
  content:"";
  position:absolute;
  bottom:9px;
  left:0;
  width:40px;
  height:20px;
  border-radius: 0 0 25px 25px;
  border:4px solid #f57e22;
  border-top:none;
  border-right-color:transparent;
}
<div class="box">
  Search
</div>