【问题标题】:how to make a border on a css-only created image如何在仅使用 css 创建的图像上制作边框
【发布时间】:2018-06-22 16:58:24
【问题描述】:

我只用 css 创建了一个功能区。现在我想在它周围做一个 1px 的灰色边框。但是图像的左侧和右侧已经创建了一个 CSS 边框。这有可能吗?

图像应如下所示(您会看到 1 px 的灰色边框):

这是我用来创建图像的 html 和 css:

.yellow-ribbon-top-left {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 30px 30px 0 0;
  border-color: #eedc08 transparent transparent transparent;
  float: left;
}

.yellow-ribbon-mid {
  width: 120px;
  height: 30px;
  float: left;
  background-color: #eedc08;
}

.yellow-ribbon-bottom-right {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 0 30px 30px;
  float: left;
  border-color: transparent transparent #eedc08 transparent;
}
<div class="yellow-ribbon-bottom-right"></div>
<div class="yellow-ribbon-mid"></div>
<div class="yellow-ribbon-top-left"></div>

【问题讨论】:

    标签: html css border css-shapes


    【解决方案1】:

    您可以使用skew transformation 简化代码,然后您可以轻松调整边框:

    .yellow-ribbon {
       width: 120px;
       height: 30px;  
       margin:20px;
       background-color: #eedc08;
       border:1px solid #000;
       transform:skew(-30deg);
    }
    <div class="yellow-ribbon">
    
    </div>

    顺便说一句,如果你想保留你的实际代码,你可以依赖像这样的伪元素(但我不推荐这个解决方案,因为它使代码更加复杂我们上面有一个简单的)

    .yellow-ribbon-top-left {
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 30px 30px 0 0;
      border-color: #eedc08 transparent transparent transparent;
      float: left;
      position: relative;
      top: 1px;
    }
    
    
    /* create border around the left part */
    
    .yellow-ribbon-top-left:before {
      content: "";
      position: absolute;
      border-style: solid;
      border-width: 32px 32px 0 0;
      border-color: #000 transparent transparent transparent;
      bottom: -1px;
      z-index:-1
    }
    /* */
    
    .yellow-ribbon-mid {
      width: 120px;
      height: 30px;
      float: left;
      background-color: #eedc08;
      border-top: 1px solid;
      border-bottom: 1px solid;
      position: relative;
    }
    
    .yellow-ribbon-bottom-right {
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 0 0 30px 30px;
      float: left;
      border-color: transparent transparent #eedc08 transparent;
      position:relative;
      top:1px;
    }
    /* create border around the right part */
    
    .yellow-ribbon-bottom-right:before {
      content: "";
      position: absolute;
      border-style: solid;
      border-width: 0 0 32px 32px;
      border-color: transparent transparent #000 transparent;
      top: -1px;
        right: 0;
      z-index:-1
    }
    /* */
    <div class="yellow-ribbon-bottom-right"></div>
    <div class="yellow-ribbon-mid"></div>
    <div class="yellow-ribbon-top-left"></div>

    【讨论】:

    • 很棒的解决方案!感谢您的回答
    • @JackMaessen 我还根据您的代码添加了另一种替代方案,但我建议您当然选择更简单的方案;)
    • 我更喜欢你提到的transfor:skew。处理起来容易得多
    • @JackMaessen 是的,我也喜欢它,但我添加了另一种选择,如果您将创建这样的形状并且您没有倾斜的可能性......例如,如果两个三角形相同在双方;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2011-05-22
    相关资源
    最近更新 更多