【问题标题】:How to create a rectangle shape with notches with CSS? [duplicate]如何使用 CSS 创建一个带有凹槽的矩形? [复制]
【发布时间】:2021-02-20 01:55:40
【问题描述】:

我想制作一个两边都有凹口的卡片容器。我的卡片的外边框在悬停时应该会改变颜色。您将如何使用 CSS 实现它?

编辑: 1)带有一个没有凹槽的容器的sn-p。主要的斗争是创造这些缺口 - https://codepen.io/dmitriifs/pen/ZEByXML HTML

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  background-color:#FAFAFA;
}

.container{
  padding-top: 5rem;
  padding-left: 5rem;
}

.coupon {
  height: 161px;
width: 347px;
left: 0px;
top: 0px;
border-radius: 10px;
box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.15);

}

.union{
height: 11.961060523986816px;
width: 350px;
left: -1.5px;
top: 74.5194091796875px;
border-radius: 0px;
  
}

.polygon-left {
position: absolute;
width: 17px;
height: 10px;
left: 6px;
top: calc(50% - 10px/2 + 13.5px);

background: #FFFFFF;
border-radius: 1px;
transform: matrix(0, -1, -1, 0, 0, 0);
}
<div class="container">
  <div class="coupon">
    <div class="union">
      <div class="polygon-left"></div>
            <div class="polygon-right"></div>
    </div>
  </div> 
</div>

2)卡片将包含内容,并且应该在悬停时更改边框颜色,所以它似乎不应该由多个元素创建,不是吗?

【问题讨论】:

  • 请问你能分享一下你迄今为止尝试过的东西吗?谢谢!
  • 这张“卡片”是否需要能够包含文本或其他流动的内容?或者形状可以由多个元素组成?
  • @cornonthecob 我已将 sn-p 与一个没有凹槽的容器连接起来。主要的斗争是创造这些缺口。
  • @DBS 该卡片将包含内容,并且应该在悬停时更改边框颜色,所以它似乎不应该由多个元素创建,不是吗?
  • 你也可以使用 filter:drop-shadow();在形状周围绘制阴影或边框。你的笔的叉子玩过滤器:codepen.io/gc-nomade/pen/WNoEwBv

标签: css


【解决方案1】:

由于border 不会关注clip-path,所以你will need a parent element

这是一个带有2px 边框的示例,通过缩小子项的大小并使用父项的background-color 作为明显的边框。

.container {
  height: 100px;
  width: 200px;
  background-color: green;
  border-radius: 12px;
  position: relative;
  clip-path: polygon(
    /* Top side */
    0 0, 100% 0%, 

    /* Right notch */
    100% 45%, 95% 50%, 100% 55%, 

    /* Bottom side */
    100% 100%, 0 100%, 

    /* Left notch */
    0 55%,5% 50%, 0 45%);
}

.container:hover {
  background-color: red;
}

.bubble {
  height: calc(100% - 4px);
  width: calc(100% - 4px);  
  position: absolute;
  top: 2px;
  left: 2px;
  line-height: 100px;
  text-align: center;
  background-color: white;
  border-radius: 10px;
  clip-path: polygon(
    /* Top side */
    0 0, 100% 0%, 
    
    /* Right notch */
    100% 44%, 94% 50%, 100% 56%, 
    
    /* Bottom side */
    100% 100%, 0 100%, 
    
    /* Left notch */
    0 56%, 6% 50%, 0 44%);
}
<div class="container">
  <div class="bubble">Hello</div>
</div>

【讨论】:

  • 非常感谢!是否可以使用剪辑路径为缺口形状添加一些半径?
  • 当然,只需向clip-path 多边形添加更多点。
猜你喜欢
  • 2016-10-21
  • 1970-01-01
  • 2014-07-02
  • 2017-03-14
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多