我正在尝试在顶部网站上创建一个正方形的div,然后流入一个三角形
方形部分不是那么难,并且工作正常,但三角形部分有点难。 盒子需要随着屏幕尺寸的大小而改变,在广场我用宽度和高度的%来做,但是我不能在边框属性中使用%符号
我现在的代码
HTML
<div id="overV12" class="menuItem" onclick="scrollToT('#overons')" onmouseover="setHover('overV12')" onmouseout="setOldClass('overV12')"><div class="menuInner">Over V12</div></div>
CSS
div.menuItem
{
height: 5.38%;
width: 7.44%;
position: fixed;
background-color: rgb(239, 239, 239);
cursor: pointer;
z-index: 12;
text-align: center;
top: 4.3%;
}
div.menuItemHover
{
height: 5.38%;
width: 7.44%;
position: fixed;
cursor: pointer;
z-index: 12;
text-align: center;
top: 4.3%;
background-color: rgb(211, 211, 211);
}
div.menuItemActive
{
height: 7.8%;
width: 7.44%;
position: fixed;
cursor: pointer;
z-index: 12;
text-align: center;
top: 4.3%;
background-color: Black;
color: White;
}
JavaScript用于设置类:我这样做是因为我使用了parralax库,并希望在某个高度上将按钮设置为“活动”
我希望有人能帮助我(也许还有其他人)解决这个问题
的jsfiddle example 我的想法是,当在类menuItemActive上设置div时,它将有箭头,否则不是 仅当它设置为活动时
答案 0 :(得分:6)
这使用两个重叠的div来创建三角形和this method,以便在保持宽高比的同时使事物变得流畅。
<强> Working Example 强>
.div1 {
width:100%;
height:100%;
border: 1px solid red;
position:absolute;
z-index:2;
}
.div2 {
width:70%;
min-height:70%;
transform:rotate(45deg);
border:1px solid blue;
position:absolute;
left:15%;
top:65%;
z-index:1;
}
#container {
display: inline-block;
position: relative;
width: 25%;
}
#dummy {
padding-top: 100%;
}
#element {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
我没有背景就离开了它,所以你可以看到它是如何工作的。
答案 1 :(得分:1)
你可以在CSS中做三角形。
这是一篇文章的链接,概述了一般技巧:http://css-tricks.com/snippets/css/css-triangle/。对于我发现和使用的略有不同的情况,还有各种类似/其他方法,只需搜索“css三角形”。
简要介绍一下这项技术:它在一个元素上使用四个边框(如果你想要一个向下箭头,你可以将这个元素放在你的<div id="overV12">
中,或者根据效果,将它应用到你的内部{ {1}})。有些是透明的,有些则不是。通过更改边框宽度和颜色,您可以生成CSS三角形,可以完全自定义以形成不同的角度,长度等。我还看到这个概念用于创建仅CSS的语音气泡以及工具提示句柄。
我已广泛使用这种技术,在我的用例中,它在每个浏览器中都有效(尽管我记得在一个项目中遇到过IE6的问题)。
答案 2 :(得分:1)
我通过使用javascript代替百分比找到了解决方案, Fiddle 我希望这也可以帮助其他人
我使用的java脚本是:
$(document).ready(setSize());
function setSize() {
var halfWidth = ($('.div1').width()) / 2;
$('.div2').css('border-width', ('50px ' + halfWidth + 'px 0 ' + halfWidth + 'px'));
$('.div2').css('top', ($('.div1').height()));
}
答案 3 :(得分:0)
最好将背景图像用于这样的自定义形状 这将使管理员更容易,你可以轻松地调整自己以适应不同的分辨率