代码之家  ›  专栏  ›  技术社区  ›  Taylor Austin

如何使用背景/线性渐变组合创建细箭头?

  •  0
  • Taylor Austin  · 技术社区  · 8 年前

    我想使用background image prop而不是像:after/:before这样的伪元素,除非这是首选的方法。这就是我目前为止所拥有的:

     .container select {
        background: linear-gradient(45deg, #fff 50%, transparent 0),
          linear-gradient(-45deg, #fff 50%, transparent 0),
          linear-gradient(45deg, #444 53%, transparent 0),
          linear-gradient(-45deg, #444 53%, transparent 0);
        background-repeat: no-repeat;
      }
    

    这是一个箭头,但它的位置根本不正确,我似乎无法让它真正移动 background-position . 另一件事是有办法调整这个尺寸吗?

    我注意到的另外一点是箭头的边缘有些不平滑。它看起来像是用记号笔写的,在边缘上没有“写”。

    enter image description here

    .selectContainer {
      background-image: linear-gradient(45deg, #f8f8f8 50%, transparent 0),
          linear-gradient(-45deg, #f8f8f8 50%, transparent 0),
          linear-gradient(45deg, #444 53%, transparent 0),
          linear-gradient(-45deg, #444 53%, transparent 0);
      background-repeat: no-repeat;
      background-color: #f8f8f8;
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      position: relative;
      cursor: pointer;
      padding: 10px;
      width: 100px;
      outline: none;
    }
    <select type="text" class="selectContainer">
      <option value="">state</option>
    </select>
    1 回复  |  直到 8 年前
        1
  •  1
  •   sol    8 年前

    我想用 % 作为你的单位 linear-gradient 导致像素变圆,使箭头边缘看起来粗糙。

    相反,您可以使用 px . 您可以通过在值周围播放来调整箭头的大小。

    要重新定位,请使用 background-position 属性。

    .selectContainer {
      background-image: linear-gradient(45deg, #f8f8f8 46px, transparent 0),
          linear-gradient(-45deg, #f8f8f8 46px, transparent 0),
          linear-gradient(45deg, #444 50px, transparent 0),
          linear-gradient(-45deg, #444 50px, transparent 0);
      background-repeat: no-repeat;
      background-color: #f8f8f8;
      background-position: -25px -5px;
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      position: relative;
      cursor: pointer;
      padding: 10px;
      width: 100px;
      outline: none;
    }
    <select type="text" class="selectContainer">
      <option value="">state</option>
    </select>