CSSのみでテキストにグラデーションやリフレクトをかけるテクニック(ちょっと更新)


iOS5Mobile Safari使HTML5CSS
CSS
Web App DemoWebFont使Active
CSS


CSScolor:aftermask-image使

 Text Gradient Demo


id:y-kawaz CSS
 content

「:before」「:after」擬似クラスのレイヤー構造

ある要素に含まれるテキストと「:before」「:after」擬似クラスにcontentプロパティで追加した要素、さらにある要素が包括する要素のレイヤー関係はこのようになるみたいです。(p要素がspan要素を包括している場合)

「:before」「:after」擬似クラスで追加した要素は通常もともとのテキストなどとは重ならないので「position:absolute」で重ねた場合のレイヤー順序です。
まぁ、z-indexプロパティで並び替えることができるので気にしなくてもいいのかもしれませんが、z-indexを使わないでやる場合はこのようになると覚えておけば良いと思います。

mask-imageプロパティとグラデーションで効果をつける

mask-imageプロパティはそのプロパティを指定した要素にマスクをかけることができます。
例えば、円形にマスクで切り抜きたい場合は右のような黒い円形の塗りがある透過画像を用意します。
mask-imageでは黒い塗りの部分だけが表示されるようにマスクされます。
黒い円形にぼかしをかければ、マスクもぼやっとくりぬいてくれます。

img{-webkit-mask-image:url(mask.png);}


mask-imagebackgroundgradient使gradient
RGBA
img{-webkit-mask-image:-webkit-linear-gradient(top, rgba(0,0,0,1), rgba(0,0,0,0));}

CSSでテキストにグラデーションをかける


:before:after2

p:before:after
ptitlecontent
:before1
<p title="TEXT GRADIENT">TEXT GRADIENT</p>
p, p:before {
  position:absolute;
  top:0;
  left:0;
}
p:before {
  display:block;
  content:attr(title);
}



p, p:before {
  position:absolute;
  top:0;
  left:0;
  color:#00b0ff;
}
p:before {
  display:block;
  content:attr(title);
  color:#003577;
}


p, p:before {
  position:absolute;
  top:0;
  left:0;
  color:#00b0ff;
}
p:before {
  display:block;
  content:attr(title);
  color:#003577;
  -webkit-mask-image:-webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,1));
}





p {
  color:#000;
  text-shadow:0 1px 0 #000;
}
pt1:after {
  color:#fff;
  -webkit-mask-image:-webkit-linear-gradient(top, rgba(0,0,0,1), rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.2) 51%, rgba(0,0,0,0));
}


p {
  color:#44c0fe;
  text-shadow:0 -1px 0 rgba(255,255,255,0.6),0 1px 1px rgba(0,0,0,0.5);
}
p:before {
  color:#0036b4;
  -webkit-mask-image:-webkit-linear-gradient(-85deg, rgba(0,0,0,0), rgba(0,0,0,0) 40%, rgba(0,0,0,1) 80%, rgba(0,0,0,1));
}
p:after {
  color:#d7edff;
  -webkit-mask-image:-webkit-linear-gradient(-85deg, rgba(0,0,0,1), rgba(0,0,0,1) 10%, rgba(0,0,0,0.25) 48%, rgba(0,0,0,0) 48%, rgba(0,0,0,0));
}


p {
  color:#fff100;
  text-shadow:0 1px 0 rgba(255,255,255,1),0 -1px 0 rgba(0,0,0,0.4);
}
p:before {
  color:#e4007f;
  -webkit-mask-image:-webkit-linear-gradient(45deg, 
    rgba(0,0,0,0.5),
    rgba(0,0,0,0.5) 15%,
    rgba(0,0,0,0) 25%,
    rgba(0,0,0,0) 35%,
    rgba(0,0,0,0) 50%,
    rgba(0,0,0,0.5) 60%,
    rgba(0,0,0,1) 75%,
    rgba(0,0,0,1) 85%,
    rgba(0,0,0,1)
  );
}
p:after {
  color:#00a0e9;
  -webkit-mask-image:-webkit-linear-gradient(45deg, 
    rgba(0,0,0,0),
    rgba(0,0,0,0) 15%,
    rgba(0,0,0,0) 25%,
    rgba(0,0,0,0) 35%,
    rgba(0,0,0,0.5) 50%,
    rgba(0,0,0,0.8) 60%,
    rgba(0,0,0,0.5) 75%,
    rgba(0,0,0,0) 85%,
    rgba(0,0,0,0)
  );
}


P {
  color:#755d41;
  text-shadow:0 2px 0 #755d41,0 2px 1px rgba(0,0,0,0.8);
}
P:before {
  color:#b6a57a;
  -webkit-mask-image:-webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,1) 40%, rgba(0,0,0,0) 90%, rgba(0,0,0,0));
}
P:after {
  color:#fff;
  -webkit-mask-image:-webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0) 20%, rgba(0,0,0,0.2) 36%, rgba(0,0,0,0.5) 40%, rgba(0,0,0,0.2) 44%, rgba(0,0,0,0) 60%, rgba(0,0,0,0));
}

CSSでリフレクトをかける


box-reflect
1CSS3Transition Effects 30
box-reflect3
right, left, above, belowabovebelow
mask-image
調
img{-webkit-box-reflect: below -3px -webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0) 50%,rgba(0,0,0,0.5));}

Demo
 Text Reflect Demo