是否可以使用css3制作曲线/弧形样式菜单?
我可以在HTML5中实现这种使用画布吗?
提前致谢,Logan
答案 0 :(得分:4)
遗憾的是,我不知道任何优雅的解决方案,特别是在菜单项方面,但是在普通的CSS和几个html元素中,弧本身应该是可行的。
也许这可以让你开始。
<强> HTML 强>
<div class="container">
<div class="gray"></div>
<div class="white"></div>
</div>
<强> CSS 强>
.container {
height: 200px;
overflow: hidden;
position: relative;
}
.gray,
.white {
position: absolute;
left: -25%;
right: -25%;
border-radius: 100%;
}
.gray { /* use a gray border with border radius to emulate an arc */
top: -50%;
border:100px solid gray;
border-top: none;
height: 200px;
}
.white { /* put a white oval on top for the top edge of the banner */
top: -80%;
background-color: white;
height: 300px;
}
现在的挑战是定位所有菜单项和rotate them accordingly ...... 我并不认为这是一个可行的解决方案,但无论如何我都希望你发现它有用。
SVG允许您curve text,并且可能是更适合此任务的工具。
这是我用SVG做的一个版本,这是一个概念验证,需要调整才能看起来很好(因为某些原因,在Chrome中渲染可怕而在IE中很小),但它给你的基本想法:
<强> SVG 强>
<svg viewBox="0 0 500 300" version="1.1">
<defs>
<!-- Start at (10,40) end at (490,40) use control point (250 ,85) -->
<path id="curvetext" d="M 10,40 Q 250,85 490,40" />
</defs>
<use x="0" y="0" xlink:href="#curvetext" fill="none" stroke="gray" stroke-width="50"/>
<text font-size="12" fill="white">
<textPath xlink:href="#curvetext">
<a xlink:href="http://example.com">Menu 1</a> Menu 2 Menu 3 Menu 4 Menu 5 Menu 6 Menu 7 Menu 8 Menu 9
</textPath>
</text>
</svg>