【问题标题】:Inside transparent arrow on the left左侧透明箭头内
【发布时间】:2014-11-21 18:46:24
【问题描述】:

我正在尝试基于图像模型在元素上添加一些 css3 样式。

左侧带有蓝色边框的透明箭头:

Link to image

只有 css3 才有可能?

【问题讨论】:

  • fiddle你的代码
  • 小提琴很棒,但请仅将小提琴用于支持一个问题,并将相关代码也添加到实际问题中。无论链接的图像、小提琴、网站等可能发生什么,这个问题都应该独立存在并对未来的访问者有用。
  • 向我们展示您到目前为止所尝试的内容..

标签: css css-shapes


【解决方案1】:

用一个元素你就可以做到这一点我必须去上班希望这有帮助

<div>Lorem Ipsum</div> 

风格:

   div{
        width:200px;
        height:60px;
        margin:100px;
        background-color:transparent;
        color:black;
        position:relative;
        text-indent:30px;
        line-height:60px;
        box-shadow:inset 20px 0 0 200px white;
        overflow:hidden;
        -webkit-box-shadow: inset -164px 0 0 20px white;
        -moz-box-shadow: inset -164px 0 0 20px white;
        box-shadow: inset -164px 0 0 20px white;
    }
    div:before{
        content: '';
    position: absolute;
    left: 0px;
    top: 4px;
    width: 14px;
    border-bottom: 3px solid blue;
    border-left: 3px solid blue;
    height: 18px;
        background-color:white;
    -webkit-transform: skew(0deg,34deg);
        -moz-transform: skew(0deg,34deg);
    transform: skew(0deg,34deg);
    }
    div:after{
    content: '';
    position: absolute;
        background-color:white;
    left: 0px;
    bottom: 4px;
    width: 14px;
    border-top: 3px solid blue;
    border-left: 3px solid blue;
    height: 18px;
    -webkit-transform: skew(0deg,-34deg);
        -moz-transform: skew(0deg,-34deg);
    transform: skew(0deg,-34deg);
    }
    body{
        background-color: #EEEEEE;
        khtml-background-size: 10px 10px;
    -webkit-background-size: 10px 10px;
    -moz-background-size: 10px 10px;
    -ms-background-size: 10px 10px;
    -o-background-size: 10px 10px;
    background-size: 10px 10px;
    background-image: -khtml-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
    background-image: -webkit-gradient(linear, left top, right bottom, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
    background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
    background-image: -moz-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
    background-image: -ms-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
    background-image: -o-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
    background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
        width:100%;
        height:100%;

    }

【讨论】:

  • 只使用1个元素,使用box shadow去掉白色背景,生成这个背景。好帖子! +1
【解决方案2】:

背景不是实心的,这使得它很硬。 特别是因为你的箭头不是 90 度,我猜这不会变得那么平滑。 但是看看这个问题:

CSS triangle custom border color

【讨论】:

    【解决方案3】:

    使用创建带有 div 透明边框的三角形的技术。 两次尝试可能会对您有所帮助,

    HTML

    <div class="button">
        <div class="wrapper">
            <div class=" top-side "></div>
            <div class="arrow-right "></div>
            <div class="arrow-right2 "></div>
            <div class="bottom-side "></div>
        </div>
    </div>
    

    CSS

    .button {
        width: 400px;
        background-color:orange;
    }
    .wrapper{
        background-color:blue;
        width:2px;
    }
    .arrow-right {
        width: 0;
        height: 0;
        border-top: 5px solid transparent;
        border-bottom: 5px solid transparent;
        border-left: 15px solid white;
        position:absolute;
        z-index:2;
    }
    .arrow-right2 {
        position:relative;
        top:-1px;
        z-index:1;
        width: 0;
        height: 0;
        border-top: 6px solid transparent;
        border-bottom: 6px solid transparent;
        border-left: 18px solid blue;
    }
    .top-side {
        height:7px;
        width:2px;
        background-color:blue;
    }
    .bottom-side {
        height:7px;
        width:2px;
        background-color:blue;
    }
    

    http://jsfiddle.net/FkPYb/2/

    还检查 http://jsfiddle.net/FkPYb/1/

    调整它们可能会得到更好的结果。

    【讨论】:

      【解决方案4】:

      这是@kougiland 的简化版本。

      div {
          width:200px;
          height:60px;
          position:relative;
          text-indent:30px;
          line-height:60px;
      }
      div:before{
          content: '';
          position: absolute;
          top: 14px;
          left: 0px;
          width: 17px;
          border-bottom: 1px solid blue;
          border-left: 1px solid blue;
          -webkit-transform: skew(0deg,60deg);
          -moz-transform: skew(0deg,60deg);
          transform: skew(0deg,60deg);
      }
      div:after{
          content: '';
          position: absolute;
          left: 0px;
          bottom: 14px;
          width: 17px;
          border-top: 1px solid blue;
          border-left: 1px solid blue;
          -webkit-transform: skew(0deg,-60deg);
          -moz-transform: skew(0deg,-60deg);
          transform: skew(0deg,-60deg);
      }
      

      http://jsfiddle.net/fxLeg262/

      【讨论】:

      猜你喜欢
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2021-11-11
      • 2014-12-03
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多