【问题标题】:css progress indicator with arrows带箭头的 CSS 进度指示器
【发布时间】:2014-04-12 16:12:57
【问题描述】:

我需要帮助,我正在尝试复制这种进度指示器,但我无法弄清楚。

我想要什么:

我有什么:http://jsfiddle.net/AQWdM/

body {
  font-family: 'Segoe UI';
  font-size: 13px;
}

ul.progress li.active {
  background-color: #dc9305;
}

ul.progress li {
  background-color: #7e7e7e;
}

ul.progress {
  list-style: none;
  margin: 0;
  padding: 0;
}

ul.progress li {
  float: left;
  line-height: 20px;
  height: 20px;
  min-width: 130px;
  position: relative;
}

ul.progress li:after {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  right: 4px;
  border-style: solid;
  border-width: 10px 0 10px 10px;
  border-color: transparent transparent transparent #7e7e7e;
}

ul.progress li:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  right: 0px;
  border-style: solid;
  border-width: 10px 0 10px 10px;
  border-color: transparent transparent transparent #fff;
}

ul.progress li.beforeactive:before {
  background-color: #dc9305;
}

ul.progress li.active:before {
  background-color: #7e7e7e;
}

ul.progress li.active:after {
  border-color: transparent transparent transparent #dc9305;
}

ul.progress li:last-child:after,
ul.progress li:last-child:before {
  border: 0;
}

ul.progress li a {
  padding: 0px 0px 0px 6px;
  color: #FFF;
  text-decoration: none;
}
<ul class="progress">
  <li><a href="">Qualify</a></li>
  <li class="beforeactive"><a href="">Develop</a></li>
  <li class="active"><a href="">Propose</a></li>
  <li><a href="">Close</a></li>
</ul>

首先,我的示例有“beforeactive”类——我想避免这种情况,所以我可以将项目标记为活动。此外,我的示例中的箭头不是最好的设置 - 在我想要的图像上,它有更好的设置箭头(开始时更粗)。

我需要你的帮助:

1.) 创建更好的 css,显然我不擅长 css,所以不需要 beforeactive 类,也可以适当地为背景着色,并进行优化 - 每页可以有数百个这样的列表

2.) 创建箭头以匹配我想要的设计

3.) 它需要是动态的,因为有时它会很小,有时会很大,它需要能够处理不同的字体大小(可能使用 em 或百分比 - 我使用 px 只是为了测试东西)

4.) IF - 并且仅当是可能的简单方法 - 使其例如整个长 600 像素;当前活动的最长,其他的有固定的大小,活动的总是填满其余的。因此,如果第一个是活动的,它需要 400px,其余填充 200px,当我们激活第二个时,动画使其他尺寸变小,第二个尺寸变大。我用jquery,所以用他的anymations没问题,但我更喜欢css动画(会有几千行javascript代码——所以我尽量少用javascript做ui)

谢谢

【问题讨论】:

  • 你自己做了那个 Css 部分我的意思是 jsfiddle 示例中的那个
  • 是的,我写的。为什么?
  • 如果是,你的 Css 还不错
  • 我肯定不好 - 否则我不需要帮助 :) (我是程序员、asp.net、sql 等......不是设计师)
  • 这就是基本的 CSS。 @user3127499

标签: html css progress


【解决方案1】:

您应该使用一个伪旋转元素并将其绘制在最左侧。 第一个将看不见,所以不必担心最后一个li,在ul 上设置overflow 以隐藏overflowing 部分:)。

DEMO 和 CSS

body {
  font-family: 'Segoe UI';
  font-size: 13px;
}

ul.progress li.active {
  background-color: #dc9305;
}

ul.progress li {
  background-color: #7e7e7e;
  position: relative;
  text-indent: 0.5em;
}

ul.progress li:after {
  content: '';
  position: absolute;
  right: 100%;
  margin-right: 0.4em;
  width: 1.2em;
  padding-top: 1.2em;
  ;
  border: solid white;
  z-index: 1;
  transform: rotate(45deg);
  border-bottom: 0;
  border-left: 0;
  box-shadow: 5px -5px 0 3px #7e7e7e
}

ul.progress li.active:after {
  box-shadow: 6px -6px 0 3px #dc9305;
}

ul.progress {
  list-style: none;
  margin:2px 0;
  padding: 0;
  overflow: hidden;
  min-width:max-content;
}

ul.progress li {
  float: left;
  line-height: 20px;
  height: 20px;
  min-width: 130px;
  position: relative;
  transition: min-width 0.5s;
}

ul.progress li a {
  padding: 0px 0px 0px 6px;
  color: #FFF;
  text-decoration: none;
}

ul.progress li:hover {
  min-width: 300px;
}

ul.progress li:before {
  content: '\2714'
}

ul.progress li.active:before,
ul.progress li.active~li:before {
  content: ''
}
<ul class="progress">
  <li class="active"><a href="">Qualify</a></li>
  <li><a href="">Develop</a></li>
  <li><a href="">Propose</a></li>
  <li><a href="">Close</a></li>
</ul>
<ul class="progress">
  <li><a href="">Qualify</a></li>
  <li class="active"><a href="">Develop</a></li>
  <li><a href="">Propose</a></li>
  <li><a href="">Close</a></li>
</ul>
<ul class="progress">
  <li><a href="">Qualify</a></li>
  <li><a href="">Develop</a></li>
  <li class="active"><a href="">Propose</a></li>
  <li><a href="">Close</a></li>
</ul>
<ul class="progress">
  <li><a href="">Qualify</a></li>
  <li><a href="">Develop</a></li>
  <li><a href="">Propose</a></li>
  <li class="active"><a href="">Close</a></li>
</ul>

不要忘记添加供应商前缀或使用脚本来处理它。


li 上看到它们与transition 一起成长,检查标记也通过CSS 添加到li 前面.active

【讨论】:

  • 哇,谢谢,这太棒了,按我想要的方式工作,我花了 2 个小时来写我的例子,而你只花了几分钟的时间就可以正确地完成 :)
  • @CodeMonkey 刚刚添加了复选标记并在演示中打开了免费前缀,但是,你知道我是一个非常糟糕的开发者;)
  • 但非常擅长 css :) 再次感谢您,这太完美了。
【解决方案2】:

Check this out

请检查一下,看看这就是你要找的东西

<ul class="progress">
    <li><a href="">✔ Qualify</a></li>
    <li class="beforeactive"><a href=""> ✔ Develop</a></li>
    <li class="active"><a href="">Propose</a></li>
    <li><a href="">Close</a></li>
</ul>

CSS

body {
    font-family: 'Segoe UI';
    font-size: 13px;
}

ul.progress li.active {
    background-color: #dc9305;
}

ul.progress li {
    background-color: #7e7e7e;
}

ul.progress {
    list-style: none;
    margin: 0;
    padding: 0;
}

ul.progress li {
    float: left;
    line-height: 20px;
    height: 20px;
    min-width: 130px;
    position: relative;

}

ul.progress li:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    right: 4px;
    border-style: solid;
    border-width: 10px 0 10px 10px;
    border-color: transparent transparent transparent #7e7e7e;
}

ul.progress li:before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    right: 0px;
    border-style: solid;
    border-width: 10px 0 10px 10px;
    border-color: transparent transparent transparent #fff;
}

ul.progress li.beforeactive:before {
    background-color: #dc9305;
}

ul.progress li.active:before {
    background-color: #7e7e7e;
}
ul.progress li.active:after {
    border-color: transparent transparent transparent #dc9305;
}

ul.progress li:last-child:after,
ul.progress li:last-child:before {
    border: 0;
}

ul.progress li a {
    padding: 0px 0px 0px 6px;
    color: #FFF;
    text-decoration: none;
}
ul.progress li:hover {

  min-width:300px;

}

输出

【讨论】:

  • 谢谢你,我已经接受了 GCyrillus 的回答 - 因为他也有动画 - 但你完全按照我的要求做了(动画部分除外) - 所以我也会将你的答案标记为正确的答案 - 看起来像任何人都可以做到这一点——除了我 :)
  • 嘿,我很幸运,仅此而已,您只能接受一个作为答案,但可以投票多个​​答案
  • 一旦我有足够的声誉(我是新来的),我会支持它,谢谢
猜你喜欢
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
相关资源
最近更新 更多