1

我正在尝试创建如下所示的内容:

四个箭头彼此相对放置; 向上箭头位于顶部,左侧位于左侧,右侧位于右侧,向下位于底部。 中间的空间是空的。

但是,我只能让它看起来像这样:

四个箭头连续:左、上、下、右。

这是我正在使用的代码。

<div style="position:fixed;z-index:1;">
   <a class="left" href="javascript:{}"><img src="images/leftarrow.png"/></a> 
   <a class="top" href="javascript:{}"><img src="images/uparrow.png"/></a>
   <a class="bottom" href="javascript:{}"><img src="images/downarrow.png"/></a>
   <a class="right" href="javascript:{}"><img src="images/rightarrow.png"/></a>
</div>

我怎样才能让它看起来像我想要的那样?

4

5 回答 5

3

不确定这对您的需求有多好,因为它使用了更多的定位。请检查。

http://jsfiddle.net/RFHrp/

 a.left {
    top: 20px;
    left: 15px;
}
a.right {
    top: 20px;
    left: 55px;
}
a.top {
    top: 0px;
    left: 35px;
}
a.bottom {
    top: 45px;
    left: 35px;
}
.left, .right, .top, .bottom {
    position: absolute;
    margin-left: 50%;
    cursor: pointer;
}
于 2013-04-18T05:11:25.190 回答
3

一个完全不同的解决方案是使用单个图像作为精灵。这可以更有效,因为它减少了 http 请求。

HTML

<div style="position:fixed;z-index:1;">
    <div class="arrowContainer">
        <a class="left" href="javascript:{}">L</a>
        <a class="top" href="javascript:{}">U</a>
        <a class="bottom" href="javascript:{}">D</a>
        <a class="right" href="javascript:{}">R</a>
    </div>
</div>

CSS

.arrowContainer 
{
    position:relative;
    width:50px;
    height:50px;
}

.arrowContainer a
{
   background-image:url(http://i.stack.imgur.com/RtaFK.png);
    background-repeat:no-repeat;
    text-indent:-9999px;
    display:block;
    width:20px;
    height:20px;
    position: absolute; 
}

.arrowContainer .top 
{    
    top: -2px; 
    left: 15px;
    background-position: -24px top;    
}

.arrowContainer .left
{
    top: 15px;
    left: 0;
}
.bottom {
    bottom: 0;
    left: 15px;
    background-position: -52px 2px; 
}

.right {
    top: 15px;
    right: 0;
    background-position: -76px top; 
}

您可能需要调整元素和/或背景图像的位置,但这是一个好的开始。

如果要添加背景颜色,请使用具有透明背景的图像。

小提琴:http: //jsfiddle.net/tqH3m/1/

更新

最好不要使用图像。您可以使用纯 css 并将背景颜色应用于容器。HTML与上面相同

CSS

.arrowContainer 
{
    position:relative;
    width:50px;
    height:50px;
    background-color:#CCC;
}

.arrowContainer a
{
    text-indent:-9999px;
    display:block;
    width:0;
    height:0;
    position: absolute; 
}

 .top 
{    
    top: 0; 
    left: 15px;  
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid black;
}

 .top:hover 
{    
    border-bottom: 10px solid #F00;
}

.left
{
    top: 15px;
    left: 0;    
    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent; 
    border-right:10px solid black; 
}

.left:hover
{
    border-right:10px solid #F00; 
}


.bottom {
    bottom: 0;
    left: 15px;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 10px solid black;
}

.bottom:hover {
    border-top: 10px solid #F00;
}


.right {
    top: 15px;
    right: 0;
    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid black;
}

.right:hover {
    border-left: 10px solid #F00;
}

小提琴:http: //jsfiddle.net/tqH3m/2/

于 2013-04-18T05:53:52.680 回答
0

css

.left{

   left:

   top:

}

像上面一样为所有类设置值

查询:

$('.left').css({'left':0,'top':0});
于 2013-04-18T04:44:19.530 回答
0

您可以将 CSS 位置用于第二张和第三张图像吗?你必须做这样的事情。

.top {position: absolute; top: <some value>; left: <some value>}
.bottom {position: absolute; top: <some value>; left: <some value>}
于 2013-04-18T04:53:36.353 回答
0

最后我使用以下代码解决了我的问题。但我不知道我是否可以使用这种方式。但它对我有用。

<div style="position:fixed;z-index:1;background-color:yellow;border-radius:4px;">
 <div  style="float:left;margin-top:10px;">
 <a class="left" href="javascript:{}"><img src="images/leftarrow.png"/></a> 
 </div>
 <div style="width:23px;float:left;">
 <a class="top" href="javascript:{}"><img src="images/uparrow.png"/></a>
 <a class="bottom" href="javascript:{}"><img src="images/downarrow.png"/></a>
 </div>
 <div style="float:left;margin-top:10px;">
 <a class="right" href="javascript:{}"><img src="images/rightarrow.png"/></a>
 </div>
</div>
于 2013-04-18T05:08:16.630 回答