content
プロパティは、:before
と:after
疑似要素でのみ使用でき、これらはインラインCSSでは使用できません。さらに、JavaScript strictモードのUnicode文字は二重にエスケープする必要があります。それ以外の場合は、無効なエスケープシーケンスとして解析された\01F680
が含まれているため、エラーがスローされます。 \
を二重に\\01F680
にエスケープする。
Style ItというリアクションコンポーネントでプレーンテキストCSSを記述できるモジュールを作成し、それを使用して、CSS-TricksのHTML/CSSで以下に説明します。
npm install style-it --save
絵文字トグル(OPEN IN JSFIDDLE)
import React from 'react';
import Style from 'style-it';
class Intro extends React.Component {
render() {
return Style.it(`
.emoji-toggle {
position: relative;
width: 60px;
margin: 40px auto;
}
.emoji-toggle .well {
display: block;
background: #eee;
height: 20px;
border-radius: 10px;
cursor: pointer;
}
.emoji-toggle .toggle {
opacity: 0;
border: 0;
outline: none;
height: 100%;
width: 100%;
background: transparent;
position: absolute;
cursor: pointer;
z-index: 100;
}
.emoji-toggle .toggle ~ .emoji:before {
content: "\\01F431";
position: absolute;
left: 0;
top: -15px;
font-size: 40px;
-webkit-transition: 0.2s;
transition: 0.2s;
}
.emoji-toggle .toggle:checked ~ .emoji:before {
left: 100%;
margin-left: -1em;
}
.emoji-toggle .toggle ~ label {
white-space: nowrap;
}
.emoji-toggle .toggle ~ label:before {
position: absolute;
right: 100%;
margin-right: 5px;
top: 0;
}
.emoji-toggle .toggle ~ label:after {
position: absolute;
left: 100%;
margin-left: 5px;
top: 0;
}
.emoji-travel .toggle ~ .emoji:before {
content: "✈";
}
.emoji-travel .toggle:checked ~ .emoji:before {
content: "";
}
.emoji-travel .toggle ~ label:before {
content: "Plane";
}
.emoji-travel .toggle ~ label:after {
content: "Train";
}
`,
<div className="emoji-toggle emoji-travel">
<input type="checkbox" id="toggle2" className="toggle" />
<div className="emoji" />
<label htmlFor="toggle2" className="well" />
</div>
);
}
}
ReactDOM.render(
<Intro />,
document.getElementById('container')
);
クリッカブルボタン絵文字(OPEN IN JSFIDDLE)絵文字を拡大または縮小する
変更font-size
。 width
,height
、およびborder-radius
は、font-size
に設定されている値の倍数である必要があります。つまり、font-size: 10px;
の場合はwidth: 20px; height 20px; border-radius: 20px;
となります。
import React from 'react';
import Style from 'style-it';
class Intro extends React.Component {
render() {
return Style.it(`
.emoji {
font-size: 20px;
height: 40px;
width: 40px;
border-radius: 40px;
text-align: center;
}
.emoji:active:before {
opacity: .7;
}
.emoji:before {
content: "\\01F431";
}
`,
<button className="emoji" />
);
}
}
ReactDOM.render(
<Intro />,
document.getElementById('container')
);
編集:私はそれを試してみましたが、まだ動作しません編集ごとに更新され、簡素化
@Center。実際の例を見せてもらえますか?だから私は答えを受け入れ、それをアップヴォートすることができます。 –
ちょうどjsfiddleへのリンクで答えを編集 – Cent
それは美しく動作しますありがとう!しかし、いくつかの最後の質問、どのように私はサイズを増やすことができますか?また、クリック可能にしてメソッドをトリガーできるようにするには(クリックしたときにconsole.logという文字列が表示されるようにjfiddleで再び表示できるような場合は本当に便利です)最後に、 ':before'と':after'はどういう意味ですか? –