0

我正在尝试在 CSS 中制作进度条,但在设置某些组件的样式时遇到了问题。悬停时,我似乎无法让箭头随框改变颜色。

在此处输入图像描述

这是其中一个按钮的 html

  <li>
  <div class="arrow-in"></div>
  <div class="outerContainer done">
      <div class="innerContainer">
          <div class="element"><a href="#">Step 2</a></div>
      </div>
  </div>
  <div class="arrow-right"></div>
  </li>

这是箭头的CSS

.arrow-right {
    width: 0;
    height: 0;
    border-top: 30px solid transparent;
    border-bottom: 30px solid transparent;
    border-left: 20px solid #EBEBEB;
    display: inline-block;
    float: left;
}


.arrow-in {
    width: 0;
    height: 0;
    border-top: 30px solid transparent;
    border-bottom: 30px solid transparent;
    border-left: 20px solid #FFF;
    display: inline-block;
    float: left;
    background-color: #EBEBEB;
}

http://jsfiddle.net/waspinator/sxC8e/

这是实现这种效果的合理方法还是我应该做一些完全不同的事情?

编辑:

我按照建议做了,并在课前和课后使用。

http://jsfiddle.net/waspinator/tqVjX/

我现在如何将圆圈定位在右侧而不移动文本?

编辑2:

好的另一种方法,但现在我不能得到超过一行的文字

http://jsfiddle.net/waspinator/fwN7P/8/

4

2 回答 2

1

这是一种达到预期效果的方法:

http://jsfiddle.net/waspinator/fwN7P/11/

html

<button>
    <a href="">one line</a>
    <i></i>
</button>
<button id="current">
    <a href="">two lines of text</a>
    <i></i>
</button>
<button>
    <a href="">three lines of text in this one </a>
    <i></i>
</button>
<button>
    <a href="">the most extreme case with four lines of text</a>
    <i></i>
</button>

css

a{
    text-decoration: none;
    color: black;
}

button {
    background:#ddd;
    border:0;
    font-weight:bold;
    cursor:pointer;
    position:relative;
    padding:0px 50px 0px 15px;
    width: 150px;
    height: 60px;
    font-size: 0.7em;
    vertical-align: top;

}

button:hover{
    background: gray;
}

button:hover:before{
    border-top:30px gray solid;
    border-bottom:30px gray solid;
}

button:hover:after{
    border-left:15px gray solid;
}


#current {
    background: red;
}

#current:before
{
    border-top:30px red solid;
    border-bottom:30px red solid;
}

#current:after
{
    border-left: 15px solid red;
}


#current .element a {
    color: #FFFFFF;
}


button:before {
    content:'';
    border-top:30px #ddd solid;
    border-bottom:30px #ddd solid;
    border-left:15px #fff solid;
    position:absolute;
    top:0;
    left:0;
}
button:after {
    content:'';
    border-top:30px #fff solid;
    border-bottom:30px #fff solid;
    border-left:15px #ddd solid;
    position:absolute;
    top:0;
    right:0;
}
button i:after {
    content:'\2713';
    width:25px;
    color: white;
    height:25px;
    font-size: 20px;
    background: green;
    border-radius: 25px;
    line-height: 25px;
    position:absolute;
    top:0;
    bottom:0;
    margin:auto;
    right:20px;
}
于 2012-12-31T17:41:23.683 回答
0

试试这个 :

它应该工作

Jsbin 演示

于 2012-12-31T04:20:44.390 回答