2017-03-14 1 views
3

これは、ちょうど背景が変化しているにもかかわらず、左のボーダーがホバー上に広がるように見えるようにするためのコードです。このコードを書くより効率的な方法はありますか?ホバー上で背景の位置を左から右に変えるより効率的な方法はありますか?

編集:効率的な意味で、より良い書き方です。

span { 
 
    padding: 5px; 
 
    text-align: center; 
 
    border-left: 5px solid black; 
 
    background: linear-gradient(to left, yellow 50%, black 50%); 
 
    background-size: 200%, 100%; 
 
    background-position: right; 
 
    transition: .5s ease; 
 
} 
 

 
span:hover { 
 
    background-position: left; 
 
    color: white; 
 
}
<span>This is some example text.</span>

+0

なぜそれが重要ですか?それはCSSであり、50行ではなく、ほんの数行です。あなたは「効率的」を定義していませんでした。なぜ? CPU? GPU?このコードはOKです。 – vsync

+0

効率的で、より良い方法で書くことができます。そうすれば、私は不必要な行を持っていません。それを書くための「より良い」方法があるなら、私は知りたいと思っています。 –

+0

それはそれほど効率的ではありません。キーボードの入力による体力の節約という面でより効率的かもしれません。 'background'プロパティを省略形で書くことができますが、それは非常に基本的なもので、CSSを1ヶ月間学んだ人はすべてそれを知っています。 – vsync

答えて

1

あなたは、パフォーマンス向上のための擬似要素に変換し、このように追加することができますように私は、このようなもののための擬似要素を使用して好みます。

この問題は、z-indexを使用して擬似要素の上にテキストを配置できるように、別の要素にスパンをラップする必要があるという点のみです。それ以外の場合は、あなたのテキストをカバーします。

span { 
 
    color: black; 
 
    transition: color .5s ease; 
 
    z-index: 2; 
 
    position: relative; 
 
} 
 

 
p { 
 
    padding: 5px; 
 
    text-align: center; 
 
    border-left: 5px solid black; 
 
    background-color: yellow; 
 
    position: relative; 
 
    overflow: hidden; 
 
    display: inline-block; 
 
} 
 

 
p::after { 
 
    content: ''; 
 
    position: absolute; 
 
    left: 0; 
 
    right: 0; 
 
    top: 0; 
 
    bottom: 0; 
 
    background-color: black; 
 
    transition: transform .5s ease; 
 
    transform: translateX(-100%); 
 
    will-change: transform; 
 
    z-index: 1; 
 
} 
 

 
p:hover::after { 
 
    transform: translateX(0); 
 
} 
 

 
p:hover span { 
 
    color: white; 
 
}
<p><span>This is some example text.</span></p>

関連する問題