【问题标题】:CSS Vertical Progress BarCSS 垂直进度条
【发布时间】:2014-03-11 22:16:47
【问题描述】:

垂直进度条


此栏的正确样式要求:

  • 进度条必须被包含多个交叉条的元素覆盖。

  • 无图像(即使用横杆图像)。

  • 进度条必须附在原点的底部,并向上延伸。

  • 最重要的是,进度条的包装宽度必须保持动态 (%),而不是静态定义。

  • 栏的宽度取决于其容器组件的宽度

  • 纯 CSS 解决方案是最好的,但 JQuery 是公平的游戏。



进度条 HTML:

<div class="container">
    <div class="attendance">
        <p class="title">attendance</p>
        <div class="attendance-bar">
            <div class="attendance-level"></div>
            <div class="attendance-cage-css">
                <div class="crossbar-1"></div>
                <div class="crossbar-2"></div>
                <div class="crossbar-3"></div>
                <div class="crossbar-4"></div>
                <div class="crossbar-5"></div>
                <div class="crossbar-6"></div>
                <div class="crossbar-7"></div>
                <div class="crossbar-8"></div>
                <div class="crossbar-9"></div>
            </div>
        </div>
    </div>
</div>

JS Fiddle 包括 HTML 标记和所有 CSS 类:

http://jsfiddle.net/q2SAK/

我的进步:

http://jsfiddle.net/q2SAK/2/


奖励:

我已经为每个横杆实现了独特的类,以实现上面显示的它们之间不断增加的边距。如果您知道如何在没有类的情况下实现效果,请竖起大拇指。在你的 JS Fiddle 中展示它。


【问题讨论】:

  • 这是一个挑战还是你要展示你已经拥有的东西?
  • 我所拥有的根本不起作用,如果这不违反规则,我打算让它成为一个挑战。 @Spokey
  • 我想你可以从这里处理它,你主要需要设置父母的position oder 为position:absolute; 获取父母的宽度。 jsfiddle.net/q2SAK/4
  • 是的,这是最基本的。此方法允许您相对于他们的parent 而不是body 定位absolute child elements
  • 通常只有position:absolute;元素的父元素需要它。但根据结构,它可能会一直上升到body。我并没有真正看你的小提琴,只是在任何地方添加它以确保:D(你实际上并不需要它用于容器和出勤棒)

标签: jquery html css


【解决方案1】:

接受挑战!

我拿走了你的小提琴并从中创建了this。这是一个非常简单的演示,展示了你可以用它做什么。你点击“点击我,它会从 5px 变为 200px。当然你可以让它每次都增加一个特定的数字。但这只是它的一部分。我刚刚在这里发布了我所做的一些更改,完整代码在 jsfiddle 上

更新: this 每次点击都会增加 5px。当然,你需要告诉它停止,否则它会永远持续下去。

<div class="container">
        <div class="attendance">
            <p class="title">ATTENDANCE</p>
            <div class="attendance-bar">                
                <div class="attendance-level">
                    <div class="bar-1"></div>
                    <div class="bar-2"></div>
                    <div class="bar-3"></div>
                    <div class="bar-4"></div>
                    <div class="bar-5"></div>
                    <div class="bar-6"></div>
                    <div class="bar-7"></div>
                    <div class="bar-8"></div>
                    <div class="bar-9"></div>
                </div>
                <div class="attendance-cage-css"></div>
            </div>
        </div>
    </div>
<div id="changeatt" style="top:50px; left: 200px; position: absolute">Click me</div>

CSS

.container{
    width:100px;
    height:350px;
    position: absolute;
}

.attendance-bar{
    float:left;
    width:90%;
    margin:0px 5% 0px 5%;
    height:260px;
    background-color:#2f2f2f;
}

.attendance-cage-css{
    width:80px;
    float:left;
    background-color:#6ae719;
    height:5px;
    position: absolute;
    bottom: 20px;
    z-index: 1;
}

.bar-1,.bar-2,.bar-3,.bar-4,.bar-5,.bar-6,.bar-7,.bar-8,.bar-9{
    float:left;
    width:100%;
    background-color:#1f1f1f;
    height:10px;
    z-index: 9999;
}

.attendance-level{
    float:left;
    height:100px;
    width:80px;
    z-index: 9999;
    position: absolute;
    top:60px;
}

JQuery

$('#changeatt').click(function(){
    $('.attendance-cage-css').css('height', '200px');
});

更新 如果你想要一个最大高度,我会推荐类似下面的东西。它将检查以确保进度条的高度不超过进度条容器的高度。

if($('.attendance-cage-css').height() < $('.attendance-bar').height()){
    $('.attendance-cage-css').css('height', $('.attendance-cage-css').height() + 5);
}

注意:如果您希望栏达到最大高度,您必须将容器的高度设置为您正在增加进度条的倍数。例如,如果您将条形增加 5px,则容器的高度应为 260px、265px 等。

【讨论】:

  • 我在玩你的小提琴,当你点击时,高度会永远增加。您将如何向 jquery 添加最大高度,以使绿色不会与“出席”一词重叠?
  • 我更新了答案以提供如何做到这一点的示例。
  • @imtheman 如何将sn-p放入codepen?
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 2015-07-21
  • 2011-10-23
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多