タイトルが示すように、CSS3でグラデーション境界を作成することは可能ですか?グラデーションの背景を作成でき、そのためのジェネレーターがたくさんあることは知っていますが、グラデーションの境界線のコードを作成するジェネレーターはまだ見つかりません。
まあ..これは派手なcss3ではありませんが、1つの可能な解決策があります:
以前にこの例を他の何かのために作成し、#childWrap
のバックグラウンドURLを変更しました
http://jsfiddle.net/qD4zd/1/ (画像で行われるように、グラデーションはあまり柔軟ではないことに注意してください。)
基本的な考え方は、グラデーション、パターン、または画像だけの境界線でフレーム化する要素がある場合は、その要素を境界線として使用する別の要素でラップする必要があるということです。
もう少し柔軟なグラデーション:もう1つ試してみるとよいのは http://www.css3pie.com で、外側の要素でグラデーションの背景を使用して、例のjsfiddleのように境界線を作成します。
OR
http://www.colorzilla.com/gradient-editor/
( http://jsfiddle.net/qD4zd/2/ )
3番目の注意事項..最初の方法は、実際の<img>
タグを使用して、より柔軟な方法にすることができます。これにより、画像を特定の高さと幅に強制することができます。
CSS3でグラデーションシャドウボーダーを作成する可能性は次のとおりです。
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
border: 4px solid rgba(0,0,0,.5);
-webkit-box-shadow: inset 0 0 20px #000;
-moz-box-shadow: inset 0 0 20px #000;
-ms-box-shadow: inset 0 0 20px #000;
box-shadow: inset 0 0 20px #000;
実際には、これにより、エッジに半径10pxの内側のシャドウボーダーが作成されます。
次のコードを追加するだけで、何もする必要はありません。
border-image: linear-gradient(to bottom, black 0%, white 100%);
/* border-image-slice: 1;*/
上記のコードを要素に追加するだけで、border-image-sliceプロパティが要素の内部オフセットを設定します。
線形グラデーションの境界線。
HTML
<div id="input_parameters">
...Some HTML...
</div>
CSS
#input_parameters {
border: 10px solid transparent;
border-image: linear-gradient(#1e2d61 0%,#1f386e 19%,#203c72 20%,#203c73 20%,#266aa8 69%,#2775b5 84%,#2878b9 84%,#2879ba 85%,#297fc0 95%,#2d75ad 100%);
-webkit-border-image: -webkit-linear-gradient(#1e2d61 0%,#1f386e 19%,#203c72 20%,#203c73 20%,#266aa8 69%,#2775b5 84%,#2878b9 84%,#2879ba 85%,#297fc0 95%,#2d75ad 100%);
border-image-slice: 1;
}
そのcssプロパティを設定して、境界線として使用する代わりに、span要素を使用しました。以下は私のコードです
<div id="main_container">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>
<span class="borderH"></span>
<span class="borderV"></span>
</div>
nここに私のCSSがあります-
#main_container{
position:relative;
width:480px;
height:480px;
background:#f9f9f9;
border:1px solid #ff0000;
left:20%;
top:100px;
}
.tl { position: absolute; top: 0; left: 0; /*background: #ff0000;*/ border-right:1px none #000;width:50%;height:50%; }
.tr { position: absolute; top: 0; left: 50%;/*background: blue;*/ border-bottom:1px none #000;width:50%;height:50%;}
.bl { position: absolute; top: 50%; left: 0; /*background: yellow;*/ border-top:1px none #000;width:50%;height:50%; }
.br { position: absolute; top: 50%; left: 50%; /*background: #80ff80;*/border-left:1px none #000;width:50%;height:50%; }
.borderH{
position: absolute; left: 0; top: 50%;height:1px;width:100%;
background: -webkit-linear-gradient(left, #ff0000 , #80ff80); /* For Safari */
background: -o-linear-gradient(right, #ff0000, #80ff80); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(right, #ff0000, #80ff80); /* For Firefox 3.6 to 15 */
background: linear-gradient(to right, #ff0000 , #80ff80); /* Standard syntax (must be last) */
}
.borderV{
position: absolute; top: 0; left: 50%;width:1px;height:100%;
background: -webkit-linear-gradient(top, #ff0000 , #80ff80); /* For Safari */
background: -o-linear-gradient(bottom, #ff0000, #80ff80); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(bottom, #ff0000, #80ff80); /* For Firefox 3.6 to 15 */
background: linear-gradient(to bottom, #ff0000 , #80ff80); /* Standard syntax (must be last) */
}
このコードはこのような出力を生成します https://drive.google.com/file/d/0B2sRswnexZtfUVlTM0t2dWI3cjA/edit?usp=sharing
GumroadやVimeoなどのサイトの上部にあるように、カラフルなグラデーションの境界線を作成するソリューションは次のとおりです。
<div class="u-border-top-Rainbow">Lorem ipsum fu fu ma li ma coco go yo.</div>
.u-border-top-Rainbow {
border-style: solid;
border-width: 30px 0 0 0;
/* For a gradient repeated 3 times */
border-image-source: repeating-linear-gradient(to right,
hsla( 8, 78%, 63%, 1.00 ) 00.00%,
hsla( 8, 78%, 63%, 1.00 ) 03.03%,
hsla( 9, 85%, 58%, 1.00 ) 03.03%,
hsla( 9, 85%, 58%, 1.00 ) 06.06%,
hsla( 12, 100%, 47%, 1.00 ) 06.06%,
hsla( 12, 100%, 47%, 1.00 ) 09.09%,
hsla( 352, 70%, 47%, 1.00 ) 09.09%,
hsla( 352, 70%, 47%, 1.00 ) 12.12%,
hsla( 355, 76%, 38%, 1.00 ) 12.12%,
hsla( 355, 76%, 38%, 1.00 ) 15.15%,
hsla( 2, 78%, 32%, 1.00 ) 15.15%,
hsla( 2, 78%, 32%, 1.00 ) 18.18%,
hsla( 183, 100%, 30%, 1.00 ) 18.18%,
hsla( 183, 100%, 30%, 1.00 ) 21.21%,
hsla( 183, 95%, 27%, 1.00 ) 21.21%,
hsla( 183, 95%, 27%, 1.00 ) 24.24%,
hsla( 183, 100%, 22%, 1.00 ) 24.24%,
hsla( 183, 100%, 22%, 1.00 ) 27.27%,
hsla( 43, 92%, 54%, 1.00 ) 27.27%,
hsla( 43, 92%, 54%, 1.00 ) 30.30%,
hsla( 38, 100%, 48%, 1.00 ) 30.30%,
hsla( 38, 100%, 48%, 1.00 ) 33.33%
);
border-image-slice: 1;
}
Codepen:カラフルなCSSグラデーションの境界線、GumroadまたはVimeoで
グラデーションcouldは、次のように、重音奏法で半分のサイズで記述されます。
background: linear-gradient(to right, red 20%, orange 20% 40%, yellow 40% 60%, green 60% 80%, blue 80%);
…残念ながら、そのような構文は現在Safariではサポートされていません。
これは、境界勾配に対する実際の解決策です。私のウェブサイトでこれを行うことができたこのビデオを見てください
あなたにとって他の仕事かもしれませんが、私はあなたのための非常に簡単なヒントを持っていますちょうどあなたのための背景画像をボーダー画像に置き換える
background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.10, #124f7e), color-stop(0.90, #3b89c5) );
background-image: -moz-linear-gradient(center bottom, #124f7e 10%,#3b89c5 90% );
background-image: -o-linear-gradient(90deg,rgb(18,79,126),rgb(59,137,197));
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3b89c5', endColorstr='#124f7e'); /* for IE */
background-color:#124f7e;
border-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.10, #124f7e), color-stop(0.90, #3b89c5) );
border-image: -moz-linear-gradient(center bottom, #124f7e 10%,#3b89c5 90% );
border-image: -o-linear-gradient(90deg,rgb(18,79,126),rgb(59,137,197));
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3b89c5', endColorstr='#124f7e'); /* for IE */
border-color:#124f7e;
firefoxで機能するグラデーションの境界線の例を次に示します。
#gradbor {
border: 8px solid #000;
-moz-border-bottom-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-top-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-left-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
-moz-border-right-colors: #555 #666 #777 #888 #999 #aaa #bbb #ccc;
padding: 5px 5px 5px 15px;
}
それが機能するようにCSSでそのようなことを試してください。
編集:他のブラウザでも動作するかどうかはわかりません。
この質問への回答を参照してください: CSS3 Gradient Borders 。
基本的に、現時点ではFirefoxでのみ機能します。ただし、実際の要素の背後に配置された擬似要素を使用して、グラデーションを付け、同様の効果を作成することもできます。
あなたはこれを試すことができます:
div {
width: 170px;
height: 48px;
border-radius: 24px;
border-style: solid;
border-width: 2px;
border-image-source: linear-gradient(to bottom, #fff042, #ff5451);
border-image-slice: 1;
background-image: linear-gradient(to bottom, #f9e6e6, #c5e0c3), linear-gradient(to bottom, #fff042, #ff5451);
background-Origin: border-box;
background-clip: content-box, border-box;
display: flex;
align-items: center;
justify-content: center;
text-transform: uppercase;
}
<div>button</div>