6

我正在尝试在顶部站点上创建一个正方形并流入三角形的 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 示例 我的想法是当div设置在类menuItemActive上时,它会有箭头,否则没有这只是当它设置在活动时

4

4 回答 4

7

这使用两个重叠的 div 来创建三角形,并且这种方法可以在保持纵横比的同时使事物变得流畅。

工作示例

.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;
}

我没有背景,所以你可以看到它是如何工作的。

于 2013-03-26T19:08:36.247 回答
1

我通过使用javascript而不是百分比找到了解决方案, 小提琴 我希望这也可以帮助其他人

我使用的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()));
}
于 2013-03-28T08:12:44.223 回答
1

你可以在 CSS 中做三角形。

这是一篇文章的链接,概述了一般技术:http ://css-tricks.com/snippets/css/css-triangle/ 。对于我发现和使用的稍微不同的情况,还有各种类似/其他方法,只需搜索“css triangles”。

简单描述一下该技术:它在一个元素上使用了四个边框(如果你想要一个向下箭头,你可以把这个元素放在你的内部<div id="overV12">,或者根据效果,将它应用到你的内部<div>)。有些是透明的,有些不是。通过更改边框宽度和颜色,您可以生成 CSS 三角形,可以完全自定义以形成不同的角度、长度等。我还看到这个概念用于创建纯 CSS 的语音气泡以及工具提示句柄。

我已经广泛使用了这种技术,在我的用例中,它适用于所有浏览器(尽管我确实记得在一个项目中遇到了 IE6 的问题)。

于 2013-03-26T20:33:39.400 回答
0

最好将背景图像用于像这样的自定义形状,这样更容易管理,您可以轻松调整自己以适应不同的分辨率

于 2013-03-26T17:55:18.610 回答