标题有点令人困惑,因为手风琴菜单已经有一个箭头可以切换选择/取消选择,但我的意思是这个 - 现在当我选择菜单时它看起来像这样:
我想让它看起来像这样:
所以它不是右侧的箭头,而是在菜单内部,它是右边界后面的箭头。
我正在使用标准的jQuery手风琴,菜单是这样创建的:
@foreach (...)
{
<h3>@item.Name</h3>
<div>
<ul>
@foreach (...)
</ul>
</div>
}
所以基本上我正在使用手风琴菜单的标准结构,只是菜单是动态创建的。选择某个菜单时使背景为蓝色的自定义样式如下所示:
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border-bottom: 1px solid #363636;
background: #ffffff url(../Content/images/..) 50% 50% repeat-x;
font-weight: normal;
color: #ffffff;
text-shadow: 1px 1px #000000;
}
我不确定,但我认为这是添加样式以显示此附加箭头的合适位置,我只是不知道该怎么做。此外,即使风格稍微定制,它仍然是原始的jquery.ui.smoothness.css
所以我愿意接受如何显示此箭头的建议。最简单的解决方案似乎改变了background
,但我宁愿不接触,因为它不是我的代码,只是找到一种方法来添加独立于background
样式的箭头。
答案 0 :(得分:3)
您可以使用伪元素。
使用伪元素(也称为:before
和:before
),您可以创建额外的内容,而无需添加额外的HTML代码。
<强> HTML 强>
<div><span class="arrow"></span></div>
<强> CSS 强>
div {
width: 120px;
height: 60px;
position: relative;
background: -webkit-linear-gradient(top, #09438d, #0258a8);
}
div:before { /* The blue arrow at the right of the menu */
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
top: 0;
right: -20px;
bottom: 0;
margin: auto 0;
border: 10px solid;
border-color: transparent transparent transparent #064d9a;
}
.arrow { /* The circle inside the menu */
width: 20px;
height: 20px;
background: rgba(0,0,0,0.3);
box-shadow: inset 0 1px 0 rgba(0,0,0,1), 0 1px 0 rgba(255,255,255,0.5);
border-radius: 50%;
position: absolute;
top: 0;
right: 10px;
bottom: 0;
margin: auto 0;
}
.arrow:before { /* The white arrow inside the circle */
content: '';
display: block;
width: 0;
height: 0;
top: 5px;
right: 0;
bottom: 0;
left: 0;
margin: auto;
position: absolute;
border: 5px solid;
border-color: #FFF transparent transparent transparent;
}
蓝箭:
这里我们用:before
创建一个新元素。我们将position
设置为absolute
,以便我们的箭头可以放置在我们想要的位置。
要创建箭头,我们正在使用边框。这样我们就不必使用图像了。
要执行箭头效果,我们会在:before
- 元素上添加边框。现在我们只需给我们的箭头上色。
只需在边框的一侧添加颜色,向其他边添加transparent
即可。
(见下图:)
要将箭头置于中间垂直方向,我们将top
和bottom
设置为0
,然后将margin
设置为auto
。现在我们可以按照与block
元素对齐的方式对齐箭头。要将其移出菜单框,我们只需将right
设置为-20px
(箭头的双倍宽度)。
白箭:
这与“蓝箭”的方式非常相似。 在这里,我们首先创建一个圆圈,然后添加或箭头,而不是菜单框。
答案 1 :(得分:1)
首先将position: relative
添加到.ui-widget-header类。
为.ui-widget-header添加一个新的伪选择器:
ui-accordion .ui-accordion-header:after {
content: "";
width: 0;
height: 0;
//Trick here - drawing a triangle with border
border: 10px solid transparent;
border-left-color: red;
//Next positioning it correctly
position: absolute;
right: -20px;
top: 50%; //Center it in the middle
margin-top: -10px; //And pull it back 10px (Half of the triangles height)
}