CSS - 将下拉箭头更改为unicode三角形

时间:2015-07-21 06:31:25

标签: html css unicode

我使用以下方式定制了我的<select>

background-color:#ececec;
border:0;
border:1px solid #e3e3e3;
border-radius:3px;
width:100%;
font-family:'FuturaStdLightOblique', sans-serif;
font-size:16px;
color:#616263;
outline:none;
height: 40px;

但我也希望将我的下拉箭头改为符合此设计的外观。我想使用unicode三角形▼(&#9660;)作为向下箭头的替代方法,如果可能的话,将其设置为与我的选择标记中的文本相同的颜色。

关于如何在不使用CSS / HTML之外的任何内容的情况下实现此目标的任何想法?提前谢谢。

3 个答案:

答案 0 :(得分:28)

也许是这样?

&#13;
&#13;
*,
*:before,
*:after {
  box-sizing: border-box;
}

* {
  padding: 0;
  margin: 0;
}

form {
  padding: 1rem;
  max-width: 400px;
  margin: 1em auto;
}

.select {
  height: 40px;
  width: 100%;
  overflow: hidden;
  position: relative;
  border-radius: 3px;
  margin-bottom: 1em;
}

.select:after {
  content: "▼";
  padding: 12px 8px;
  position: absolute;
  right: 10px;
  top: 0;
  z-index: 1;
  text-align: center;
  width: 10%;
  height: 100%;
  pointer-events: none;
}

.select__field {
  height: 40px;
  width: 100%;
  padding: 5px 15px;
  color: #616263;
  background-color: #ececec;
  border: 1px solid #e3e3e3;
  outline: none;
  font-size: 16px;
  -webkit-appearance: none;
  /* for webkit browsers */
  -moz-appearance: none;
  /* for firefox */
  appearance: none;
  /* for modern browsers */
}


/* remove default caret for ie */

.select__field::-ms-expand {
  display: none;
}

.select__field:focus:invalid {
  border-color: #FD6347;
}

.select__field:required:valid {
  border-color: #006400;
}

.btn-submit {
  color: #fff;
  display: block;
  padding: 15px;
  text-transform: uppercase;
  background: #535C69;
  width: 100%;
  border: none;
  border-radius: 3px;
}
&#13;
<form action="#" method="post">
  <div class="select">
    <select name="nameValueSelect" class="select__field" required>
      <option value="" selected>Choose option ...</option>
      <option>Option 1</option>
      <option>Option 2</option>
      <option>Option 3</option>
      <option>Option 4</option>
      <option>Option 5</option>
      <option>Option 6</option>
    </select>
  </div>

  <button type="submit" class="btn-submit">Submit</button>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

对于那些喜欢理解和补充Dmitriy's solution(下面的简化代码)的人,这是通过:

  1. 添加包含 select 元素的元素(包装器
  2. 为包装器设置相对位置
  3. 删除外观以取出默认三角形
  4. 在包装器上定义一个 ::after 规则:
    1. 带有 unicode 的 content 属性 ▼
    2. 没有指针事件,以便选择保持可点击并触发下拉事件
    3. 一个绝对位置,以便被放置在正确的位置

所以基本框架(字面意思是骨架,只有需要的)是:

.wrapper {
  overflow: hidden;
  position: relative;
  width: 10rem; /* real length of dropdown */
}

.wrapper:after {
  content: "▼";
  font-size: 0.8rem;
  pointer-events: none; /* ▼ click triggers dropdown */
  position: absolute;
  right: 0.2rem;
  top: 0.3rem;
  z-index: 1;
}

select {
  /* remove default caret */
  -webkit-appearance: none; /* webkit browsers */
  -moz-appearance: none; /* firefox */
  appearance: none; /* modern browsers */
  width: 100%;
}

select::-ms-expand {
  display: none; /* remove default caret for ie */
}
<section class="wrapper">
  <select>
    <option value="" selected>Choose option</option>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
  </select>
</section>

如果您需要尝试进一步调整,上面的代码在此 "Select caret" Codepen 中。

答案 2 :(得分:0)

制作自己的自定义下拉菜单非常简单,给定的代码是向您解释实现它的基本且最简单的方法。

.box select {
  background-color:#000000;
  color: white;
  padding: 26px;
  border-bottom: 1px solid #5e5e5e !important;
  font-size: 17px;
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
  -webkit-appearance: button;
    outline: none;
  width: 48%;
  border: none;
  font-weight: 600;
  padding-left: 0px;
}

.box::before {
  content: "\f13a";
  position: absolute;
  right: 0;
   width: 60px;
  height: 18%;
  text-align: center;
  font-size: 25px;
  line-height: 31px;
  color: rgba(255, 255, 255, 0.5); 
   background-color: rgba(255, 255, 255, 0.1); 
}
<div class="box">
  <select>
    <option>Micbookpro-selected</option>
        <option>Micbookpro-selected</option>

    <option>Micbookpro-selected</option>
    <option>Micbookpro-selected</option>
    <option>Micbookpro-selected</option>

  </select>
</div>
</div>