2

透明な境界線を線形グラデーションで div に適用すると、境界線が上下で透明にならないのはなぜですか。

div {
  width: 300px;
  height: 300px;
  background: linear-gradient(pink, red);
  border: 20px solid transparent;

}

スクリーンショット http://i43.tinypic.com/2r3gjmx.png

4

3 に答える 3

7

@ dimann90 のコメントに正しい解決策があります。要素で使用background-repeat: no-repeatします。

これが機能する理由は次のとおりです。

デフォルトでは、背景画像は x 方向と y 方向に無限に繰り返されます。線形グラデーションは背景画像であり、その画像のサイズはコンテンツ ボックスのサイズによって制御されます (実際にはもっと複雑ですが、目的にはこれで十分です)。要素の背景は、パディングとボーダー (マージンは除く) まで拡張されます。そのため、境界線によって要素のボックスの合計サイズが生成された背景画像よりも大きくなり、それが繰り返されます。境界線が透明な場合、繰り返し画像が透けて見えます。

于 2016-01-13T00:08:06.363 に答える
-1

このようなものを使用する必要があります

div{
  width: 300px;
  height: 300px;
  background: linear-gradient(pink, red);
  border: 20px solid rgba(0,0,0,0.3);
  -moz-background-clip: padding;
  -webkit-background-clip: padding;
  background-clip: padding-box;
}
于 2013-06-12T05:49:22.923 に答える