格式化jquery时间线?

时间:2012-03-20 09:53:38

标签: jquery css timeline

我正在使用here

中的时间轴插件

这是我目前的代码:

<ul id="dates">
<li><a href="#1940s">1940s</a></li>
<li><a href="#1950s" class="selected">1950s</a></li>
<li><a href="#1960s">1960s</a></li>
<li><a href="#1970s">1970s</a></li>
<li><a href="#1980s">1980s</a></li>
<li><a href="#1990s">1990s</a></li>
<li><a href="#2000s">2000s</a></li>
</ul>
<ul id="issues">
<li id="1940s"><img src="/gfx/timeline/1950.jpg" />
<h1>1940's</h1>
<p>Ronald.</p>
</li>
<li id="1950s"><img src="/gfx/timeline/1960.jpg" />
<h1>1950's</h1>
<p>Eddy.</p>
</li>
<li id="1960s"><img src="/gfx/timeline/1970.jpg" />
<h1>1960's</h1>
<p>1960s</p>
</li>
<li id="1970s"><img src="/gfx/timeline/1980.jpg" />
<h1>1970's</h1>
<p>1970s</p>
</li>
<li id="1980s"><img src="/gfx/timeline/1990.jpg" />
<h1>1980's</h1>
<p>1980s</p>
</li>
<li id="1990s"><img src="/gfx/timeline/1990.jpg" />
<h1>1990's</h1>
<p>1990s</p>
</li>
<li id="2000s"><img src="/gfx/timeline/2000.jpg" />
<h1>2000s</h1>
<p>2000s</p>
</li>
</ul>

但我不明白我怎么能让它看起来像这样......

enter image description here

任何帮助?谢谢

当前的CSS:

#timeline {
    width: 660px;
    height: 350px;
    overflow: hidden;
    margin: 100px auto;
    position: relative;
    background: url('Img/vline.png') left 65px repeat-x;
}
#dates {
    width: 660px;
    height: 60px;
    overflow: hidden;
}
#dates li {
    list-style: none;
    float: left;
    width: 100px;
    height: 50px;
    font-size: 24px;
    text-align: center;
    background: url('Img/hline.png') center bottom no-repeat;
}
#dates a {
    line-height: 38px;
    text-decoration:none;
    color:#999;
    font-size:15px;
    font-weight:bold;
}
#dates .selected {
    font-size: 38px;
    color:#000;
}

#issues {
    width: 660px;
    height: 350px;
    overflow: hidden;
}   
#issues li {
    width: 660px;
    height: 350px;
    list-style: none;
    float: left;
}
#issues li img {
    float: right;
    margin: 100px 30px 10px 50px;
}
#issues li h1 {
    color: #999;
    font-size: 20px;
    margin: 20px 0;
}
#issues li p {
    font-size: 14px;
    margin-right: 70px;
    font-weight: normal;
    line-height: 22px;
}

2 个答案:

答案 0 :(得分:0)

jQuery Timelinr有一个带样式的文件 - style_v.css。据我所知,你可以改变这些样式,以获得新的设计。

答案 1 :(得分:0)

工作示例:http://jsfiddle.net/JJrfN/

您可以使用::before::after伪元素添加行。对于较旧的broswers,这将不友好(IE7不支持这些伪元素,IE8最好是粗略的)。您还必须将position: relative添加到#dates li元素。

因此,例如,您可以在示例中添加以下CSS:

#dates li a::before {
    content: "";
    position: absolute;
    width: 1px;
    height:50px;
    background-color: grey;
    left: 50%;
    bottom: -50px;    
}

#dates li a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 0;
    right: -20px;
    bottom: -50px;    
}

您还会发现必须稍微改变第一个和最后一个li元素的样式,因为它们缺少前面的/过程li元素。所以这些必须单独定位和设计:

#dates li:first-child a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 50px;
    right: -20px;
    bottom: -50px;    
}

#dates li:last-child a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 0;
    width: 50px;
    bottom: -50px;    
}

要将.selected li元素移到其他元素之上,那么您可以给它一个负top值,因为我们已经相对定位它。要添加圆形边框,您可以使用border-radius: 10px。这仅适用于现代broswers,但是一些较旧的浏览器包括他们自己的选择器,例如Chrome的-webkit-border-radius:3px;和Firefox的-moz-border-radius:3px;。不幸的是,IE8及以下版本不支持此功能。

#dates li.selected {
    font-size: 38px;
    top: -30px;
    border: 1px solid grey;
    -webkit-border-radius:10px;
    -moz-border-radius:10px;
    border-radius: 10px;
}

您再次发现,由于我们更改了::before位置,您必须将::after.selected伪元素样式更改为top元素,因此这些必须有针对性地进行适当的改变:

#dates li.selected a::before {
    content: "";
    position: absolute;
    width: 1px;
    height:88px;
    background-color: grey;
    left: 50%;
    bottom: -88px;
}

#dates li.selected a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 0;
    right: -20px;
    bottom: -88px;
}

再次,选择第一个或最后一个li元素的样式:

#dates li:first-child.selected a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 50px;
    right: -20px;
    bottom: -88px;
}

#dates li:last-child.selected a::after {
    content: "";
    position: absolute;
    height:1px;
    background-color: grey;
    left: 0;
    right: -20px;
    bottom: -88px;
}

虽然这是一个漫长的方式,但这可以通过一点时间和理解来清理(这就是为什么我在这个答案中添加了很多信息)。

我希望它可以帮助您了解如何实现所需的设计。

工作示例:http://jsfiddle.net/JJrfN/