2017-11-09 16 views
2

使用方法:after、残酷な擬似3Dボタンを作成しようとしています。 ::afterが目的の要素の上に表示されています。CSS変換と擬似クラス

What I'm Trying to accomplish

What I'm getting

編集:明らかに変換邪魔になっており、研究が生じる理由や周りの仕事を見つけるためには至っていません。

私には何が欠けていますか?それとも良い方法がありますか?

nav li.active, 
nav li:hover{ 
    background:#000; 
} 

...次のようになります:ここで

nav li.active a, 
nav li:hover a{ 
    background:#000; 
} 

は、作業コードです:

nav li { 
 
    position: relative; 
 
    display:inline-block; 
 
    transition: background 0.2s; 
 
    transform: skewX(10deg); 
 
} 
 
nav li a { 
 
    display:block; 
 
    text-decoration:none; 
 
    padding: 5px 10px; 
 
    font: 30px/1 sans-serif; 
 
    color: #0bf; 
 
} 
 
nav li.active, 
 
nav li:hover{ 
 
    background:#000; 
 
} 
 

 
nav li.active:after { 
 
    content: ""; 
 
    display: inline-block; 
 
    top: 10px; 
 
    left: 10px; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: red; 
 
    
 
    position: absolute; 
 
    z-index: -1; 
 
}
<nav> 
 
    <ul> 
 
    
 
    <li class="active"> 
 
     <a href="#">Products</a> 
 
    </li> 
 
    
 
    </ul> 
 
</nav>

+0

あなたが何をしようとして説明することができますか? – Amit

+0

興味深いように聞こえますが、ダウンボートやクローズフラグを避けるために質問を洗練する必要があるかもしれません。 – deblocker

+0

擬似要素を示す構文は、ダブルコロン ' - 'です。疑似要素は ':: before'と' :: after'です。 – Rounin

答えて

1

出来上がり...ただ、この部分を編集した

代わりに :after

nav li { 
 
    position: relative; 
 
    display:inline-block; 
 
    transition: background 0.2s; 
 
    transform: skewX(10deg); 
 
} 
 
nav li a { 
 
    display:block; 
 
    text-decoration:none; 
 
    padding: 5px 10px; 
 
    font: 30px/1 sans-serif; 
 
    color: #0bf; 
 
} 
 
nav li.active a, 
 
nav li:hover a{ 
 
    background:#000; 
 
} 
 

 
nav li.active:after { 
 
    content: ""; 
 
    display: inline-block; 
 
    top: 10px; 
 
    left: 10px; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: red; 
 
    
 
    position: fixed; 
 
    z-index: -1; 
 
}
<nav> 
 
    <ul> 
 
    
 
    <li class="active"> 
 
     <a href="#">Products</a> 
 
    </li> 
 
    
 
    </ul> 
 
</nav>

+1

パーフェクト!それは常に小さなものです。どうもありがとう! @JoostS –

2

、あなたはbox-shadowを使用することができます。

nav li { 
 
    position: relative; z-index:0; 
 
    display:inline-block; 
 
    transition: background 0.2s; 
 
    transform: skewX(10deg); 
 
    box-shadow: 10px 10px 0 red; 
 
} 
 
nav li a { 
 
    display:block; 
 
    text-decoration:none; 
 
    padding: 5px 10px; 
 
    font: 30px/1 sans-serif; 
 
    color: #0bf; 
 
} 
 
nav li.active, 
 
nav li:hover{ 
 
    background:#000; 
 
}
<nav> 
 
    <ul> 
 
    
 
    <li class="active"> 
 
     <a href="#">Products</a> 
 
    </li> 
 
    
 
    </ul> 
 
</nav>

関連する問題