6

トップサイトで正方形で三角形に流れるdivを作成しようとしています。

正方形の部分はそれほど難しくなく、うまく機能しますが、三角形の部分は少し難しいです。ボックスは画面サイズに合わせてサイズを変更する必要があります。正方形では、幅と高さに%を使用してこれを行いましたが、borderプロパティで%記号を使用できません。

私がこの瞬間に持っているコード

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

これは、2つの重なり合う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

CSSで三角形を作成できます。

一般的な手法の概要を説明した記事へのリンクは次のとおりです:http://css-tricks.com/snippets/css/css-triangle/。「csstriangles」を検索するだけで、私が見つけて使用したわずかに異なる状況に対するさまざまな類似/他のアプローチもあります。

テクニックを簡単に説明すると、要素に4つの境界線が使用されます(下矢印が必要な場合は、この要素を内部に配置する<div id="overV12">か、効果に応じて内部に適用します<div>)。透明なものもあれば、そうでないものもあります。境界線の幅と色を変更することで、CSSの三角形を生成できます。これは、さまざまな角度の角度や長さなどを形成するように完全にカスタマイズできます。この概念は、CSSのみの音声バブルやツールチップハンドルの作成にも使用されています。

私はこの手法を幅広く使用してきましたが、私の使用例では、すべてのブラウザーで機能しました(ただし、1つのプロジェクトでIE6に問題があったことを覚えています)。

于 2013-03-26T20:33:39.400 に答える
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 に答える
0

このようなカスタム形状の背景画像を使用すると、管理が容易になり、さまざまな解像度に合わせて簡単に調整できるようになります。

于 2013-03-26T17:55:18.610 に答える