【问题标题】:css arrow with bottom border [duplicate]带有底部边框的css箭头[重复]
【发布时间】:2012-09-20 00:07:54
【问题描述】:

我需要在 div 中创建一个箭头。我已经创建了箭头,但需要获得如下所示的带边框的视觉效果

试用样品的演示http://jsfiddle.net/rLZkf/4/

div {
  margin: 20px;
  height: 200px;
  width: 200px;
  background-color: #c1c1c1;
  border: #000 solid 2px;
  background-image: -webkit-linear-gradient(135deg, transparent 75%, #fff 75%), -webkit-linear-gradient(45deg, transparent 75%, #fff 75%);
  background-image: -moz-linear-gradient(135deg, transparent 75%, #fff 75%), -moz-linear-gradient(45deg, transparent 75%, #fff 75%);
  background-image: -ms-linear-gradient(135deg, transparent 75%, #fff 75%), -ms-linear-gradient(45deg, transparent 75%, #fff 75%);
  background-image: -o-linear-gradient(135deg, transparent 75%, #fff 75%), -o-linear-gradient(45deg, transparent 75%, #fff 75%);
  background-image: linear-gradient(135deg, transparent 75%, #fff 75%), linear-gradient(45deg, transparent 75%, #fff 75%);
  background-position: 30px 0, 0 0;
  background-repeat: no-repeat;
  background-size: 30px 30px;
}
<div></div>

【问题讨论】:

    标签: html css css-shapes


    【解决方案1】:

    就个人而言,我很喜欢在这里选择不同的答案。

    https://css-tricks.com/snippets/css/css-triangle/ 中解释的原理为例,您可以使用两个伪元素来创建您想要的效果。

    您将基本上使用此边框技巧创建两个三角形:一个与您的页面背景颜色相同,另一个与您的容器边框相同,并将充当第一个三角形的“边框”。

    然后,您只需偏移两个三角形的位置,使它们位于容器边框的顶部即可。

    .container:after,
    .container:before {
      border-left: 10px solid transparent;
      border-right: 10px solid transparent; 
      content: " ";
      left: 10px; 
      margin-top: -1px;
      position: absolute;
    }
    
    .container:before {
      border-top: 10px solid #000;
      top: 1px; 
    }
    
    .container:after {
      border-top: 10px solid #fff;
      top: 0px; 
    }
    

    当然,如果你使用 Sass 或类似的东西,你可以将整个东西包装在一个 mixin 中,并将颜色/箭头大小传递给它。

    请参阅http://codepen.io/arnaudvalle/pen/EjgYrp 以获取快速示例

    【讨论】:

      【解决方案2】:

      您可以为此使用 CSS3 rotate 属性。像这样写:

      div {
          margin:20px;
          height: 200px;
          width: 200px;
          background-color: #c1c1c1;
          border:#000 solid 2px;
          position:relative;
      }
      div:after{
          content:'';
          width:20px;
          height:20px;
          background:#fff;
          position:absolute;
          -moz-transform:rotate(45deg);
          -webkit-transform:rotate(45deg);
          transform:rotate(45deg);
          top:-11px;
          left:10px;
          border-right:#000 solid 2px;
          border-bottom:#000 solid 2px;
      } 
      

      查看http://jsfiddle.net/rLZkf/6/

      更新

      检查这个http://jsfiddle.net/rLZkf/9/

      【讨论】:

      • 嘿,sandeep,谢谢,但是在 div 的顶部也可以看到箭头的 diffrnt 颜色。这是示例jsfiddle.net/rLZkf/8 我们如何解决这个问题??
      • 检查你想要的链接jsfiddle.net/rLZkf/9
      • 嘿,它不能在 IE 上工作。如果它可以在 IE 9 上工作。你可以检查一下
      • 我添加了 -ms-transform:rotate(45deg);它适用于 IE 9,但不适用于以下版本
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多