回答:
このようなことを意味する場合:
編集:これは1つのHTML要素のみを必要とする方法であり、検索エンジン、スクリーンリーダー、RSS、「スタイルなし」アプリなどの非CSSスタイルのクライアントによって読み取られても奇妙ではありません(提案を提案してくれたDominicのおかげで:before
、:after
)。
重要なコード(これに色を追加してください):
HTML: <div class="someclass" data-text="Some text">Some text</div>
CSS:
.someclass { /* bottom half */
position: relative;
display: inline-block;
}
.someclass:after { /* top half */
content: attr(data-text);
display: block;
position: absolute;
top: 0px;
height: 50%;
overflow: hidden;
}
HTML属性はどのようなものでもdata-text
かまいません- 説明的であり、望ましくない副作用を回避するために使用しました(たとえば、使用できますtitle
が、一部のブラウザーではマウスオーバーが発生します)。
display:block;
メイン(.top
)要素が必要な場合はwidth: 100%;
、内部(.bottom
)要素に何かを追加して、要素を埋めます。
jQueryを使用している場合は、このスタイルを任意の要素に非常に簡単に適用できるため、data-text
重複するビットを手動で入力する必要がありません。
$('.someElement').each(function(){
$(this).addClass('someclass').attr('data-text',$(this).text());
});
:after
または:before
)を使用して複製テキストを作成する方法があるかどうかを考えていますか?
驚くべきことに、それは可能ですが、ウェブサイトが視覚的なインパクトについてすべてであり、コードのセマンティクスが重要ではない場合にのみアドバイスしますが、さらに、古いブラウザー間であまり一貫性がない可能性があります。
結果は次のとおりです。
これはきれいな解決策ではありません、そしてそれはそこにある唯一のものではないに違いありませんが、それはあなたが望むことをします。
テキストの2つのインスタンスが必要です。絶対配置といくつかの簡単な数学を使用して、この効果を作成できます。
したがって、コンテナがありdiv
、さらに2つのコンテナ内で、それぞれのコンテナ内にdivs
テキストのインスタンスがある場合、次のHTML
構造とCSS
プロパティを使用してこれを実現できます。
<div class="container">
<div class="black">
<div class="text">Invert</div>
</div>
<div class="white">
<div class="text">Invert</div>
</div>
</div>
.container{position:relative; width:200px; height:100px; display:block; margin:0px; padding:0px; }
.black, .white{position:absolute; left:0px; background:#000; width:200px; height:50px; margin:0px; padding:0px; overflow:hidden; }
.black{top:0px; }
.white{bottom:0px; background:#fff; }
.text{position:absolute; color:#fff; font-size:70px; padding:0px; }
.black .text{bottom:-40px; }
.white .text{top:-40px; color:#000; }
ここでJSFiddle結果は。:)
また、Webkitでのみサポートされている、色を反転させるCSS3プロパティもあります。
image {
-webkit-filter: invert(100%);
}
そして、HTML5 Canvas Invertがあり、ここに例と完全なコードがあります。画像のすべてのピクセルを反復処理し、最大カラー値である255から各コンポーネントを差し引くことにより、赤、緑、青を反転させます。
どちらのソリューションでも、2つの画像とCSSの配置が必要です。互換性はあまり良くないので、私は間違いなく他の答えの1つに行くでしょう:)