border-image
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
border-image 㯠CSS ã®ããããã£ã§ãæå®ãããè¦ç´ ã®å¨ãã«ç»åãæãã¾ããããã¯è¦ç´ ã®é常ã®å¢çãç½®ãæãã¾ãã
ã¡ã¢:
å¢çç»åã®èªã¿è¾¼ã¿ã«å¤±æããã¨ãã®ããã«ã border-style ãæå®ãã¦ãã ããã仿§ã§ã¯å³å¯ã«ã¯è¦æ±ããã¦ãã¾ããããborder-style ã none ã¾ã㯠border-width ã 0 ã®å ´åãå¢çç»åãæç»ããªããã©ã¦ã¶ã¼ãããã¾ãã
試ãã¦ã¿ã¾ããã
border-image: url("/shared-assets/images/examples/border-diamonds.png") 30;
border-image: url("/shared-assets/images/examples/border-diamonds.png") 30 /
19px round;
border-image: url("/shared-assets/images/examples/border-diamonds.png") 30
fill / 30px / 30px space;
border-image: linear-gradient(#f6b73c, #4d9f0c) 30;
border-image: repeating-linear-gradient(30deg, #4d9f0c, #9198e5, #4d9f0c 20px)
60;
<section id="default-example">
<div id="example-element">ããã¯å¨å²ã«å¢çãããããã¯ã¹ã§ãã</div>
</section>
#example-element {
width: 80%;
height: 80%;
display: flex;
align-items: center;
justify-content: center;
padding: 50px;
background: #fff3d4;
color: black;
border: 30px solid;
border-image: url("/shared-assets/images/examples/border-diamonds.png") 30
round;
font-size: 1.2em;
}
æ§æè¦ç´ ã®ããããã£
ãã®ããããã£ã¯ä»¥ä¸ã® CSS ããããã£ã®ä¸æ¬æå®ã§ãã
æ§æ
/* source | slice */
border-image: linear-gradient(red, blue) 27;
/* source | slice | repeat */
border-image: url("/images/border.png") 27 space;
/* source | slice | width */
border-image: linear-gradient(red, blue) 27 / 35px;
/* source | slice | width | outset | repeat */
border-image: url("/images/border.png") 27 23 / 50px 30px / 1rem round space;
/* ã°ãã¼ãã«å¤ */
border-image: inherit;
border-image: initial;
border-image: revert;
border-image: revert-layer;
border-image: unset;
border-image ããããã£ã¯ä»¥ä¸ã«æãã 1 ã¤ãã 5 ã¤ã®å¤ã§æå®ãã¾ãã
ã¡ã¢:
border-image-source ã® è¨ç®å¤ ã none ã§ãã£ãããç»åã表示ã§ããªãã£ããããå ´åã¯ã border-style ã代ããã«è¡¨ç¤ºããã¾ãã
å¤
<'border-image-source'>-
å ã¨ãªãç»åã§ãã
border-image-sourceãåç §ãã¦ãã ããã <'border-image-slice'>-
source ã®ç»åãé åã«åå²ãã座æ¨ã§ãã4 ã¤ã¾ã§ã®å¤ãæå®ã§ãã¾ãã
border-image-sliceãåç §ãã¦ãã ããã <'border-image-width'>-
å¢çç»åã®å¹ ã§ãã4 ã¤ã¾ã§ã®å¤ãæå®ã§ãã¾ãã
border-image-widthãåç §ãã¦ãã ããã <'border-image-outset'>-
è¦ç´ ã®ç¸ããå¢çç»åã¾ã§ã®ééã§ãã4 ã¤ã¾ã§ã®å¤ãæå®ã§ãã¾ãã
border-image-outsetãåç §ãã¦ãã ããã <'border-image-repeat'>-
source ã®ç»åã®è¾ºã®é åãå¢çç»åã®å¯¸æ³ã«ã©ã®ããã«åãããããå®ç¾©ãã¾ãã2 ã¤ã¾ã§ã®å¤ãæå®ã§ãã¾ãã
border-image-repeatãåç §ãã¦ãã ããã
ã¢ã¯ã»ã·ããªãã£
æ¯æ´æè¡ã¯å¢çç»åãè§£éãããã¨ãã§ãã¾ãããç»åã«ãã¼ã¸å ¨ä½ã®ç®çãçè§£ããããã«éè¦ãªæ å ±ãå«ã¾ãã¦ããå ´åã¯ãææ¸å ã«æå³çã«è¨è¿°ããã»ããããã§ãããã
å ¬å¼å®ç¾©
| åæå¤ | 䏿¬æå®ã®æ¬¡ã®åããããã£ã¨ãã¦
|
|---|---|
| é©ç¨å¯¾è±¡ | ãã¹ã¦ã®è¦ç´ ããã ã border-collapse ã collapse ã®ã¨ãã¯ãã¼ãã«è¦ç´ å
é¨ã«ãããã®ãé¤ãã ::first-letter ã«ãé©ç¨ããã¾ãã |
| ç¶æ¿ | ãªã |
| ãã¼ã»ã³ãå¤ | 䏿¬æå®ã®æ¬¡ã®åããããã£ã¨ãã¦
|
| è¨ç®å¤ | 䏿¬æå®ã®æ¬¡ã®åããããã£ã¨ãã¦
|
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | 䏿¬æå®ã®æ¬¡ã®åããããã£ã¨ãã¦
|
形弿æ³
border-image =
<'border-image-source'> ||
<'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? ||
<'border-image-repeat'>
<border-image-source> =
none |
<image>
<border-image-slice> =
[ <number [0,â]> | <percentage [0,â]> ]{1,4} &&
fill?
<border-image-width> =
[ <length-percentage [0,â]> | <number [0,â]> | auto ]{1,4}
<border-image-outset> =
[ <length [0,â]> | <number [0,â]> ]{1,4}
<border-image-repeat> =
[ stretch | repeat | round | space ]{1,2}
<image> =
<url> |
<image()> |
<image-set()> |
<cross-fade()> |
<element()> |
<gradient>
<length-percentage> =
<length> |
<percentage>
<image()> =
image( <image-tags>? [ <image-src>? , <color>? ]! )
<image-set()> =
image-set( <image-set-option># )
<cross-fade()> =
cross-fade( <cf-image># )
<element()> =
element( <id-selector> )
<image-tags> =
ltr |
rtl
<image-src> =
<url> |
<string>
<image-set-option> =
[ <image> | <string> ] [ <resolution> || type( <string> ) ]?
<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?
<id-selector> =
<hash-token>
ä¾
>ãããããã
ãã®ä¾ã§ã¯ãè¦ç´ ã®å¢çã«ãã¤ã¤ã¢ã³ã模æ§ãé©ç¨ãã¾ãã source ã®ç»åã¯ãç¸¦ã¨æ¨ªã«ãã¤ã¤ã¢ã³ãã 3 ã¤ãã¤ä¸¦ãã 81 à 81 ãã¯ã»ã«ã® ".png" ãã¡ã¤ã«ã§ãã

HTML
<div id="bitmap">
ãã®è¦ç´ ã¯ãããããããã¼ã¹ã®å¢çç»åã«å²ã¾ãã¦ãã¾ãã
</div>
CSS
åã
ã®ãã¤ã¤ã¢ã³ãã®å¤§ããã«ä¸è´ããããã«ã 3 ã§å²ãã 81 ã®å¤ã使ç¨ããããè§ã¨è¾ºã®é åãåå²ããããã® 27 ã使ç¨ãã¾ããå¢çç»åãè¦ç´ ã®èæ¯ã®è¾ºã®ä¸å¤®ã«ãªãããã«ã outset ã®å¤ãå¹
ã®ååã«ãã¾ããæå¾ã«ã round ã« repeat ã®å¤ãè¨å®ãã¦ãå¢çç·ã®æçãçåã«åãããã«ãã¤ã¾ããã¯ãªããã³ã°ããããééãã§ãããããªãããã«ãã¾ãã
#bitmap {
width: 200px;
background-color: #ffffaa;
border: 36px solid orange;
margin: 30px;
padding: 10px;
border-image: url("border.png") 27 / 36px 28px 18px 8px / 18px 14px 9px 4px
round;
}
çµæ
ã°ã©ãã¼ã·ã§ã³
HTML
<div id="gradient">
ãã®è¦ç´ ã¯ã°ã©ãã¼ã·ã§ã³ã®å¢çã«å²ã¾ãã¦ãã¾ãã
</div>
CSS
#gradient {
width: 200px;
border: 30px solid;
border-image: repeating-linear-gradient(45deg, #ff3333, #33bbff, #ff3333 30px)
60;
padding: 20px;
}
çµæ
è§ä¸¸ã®å¢çç·
border-radius ã¯å¢çç»åã«å¹æãããã¾ãããããã¯ã border-image-outset ã¯ç»åãå¢çããã¯ã¹ã®å¤ã«ç½®ããã¨ãã§ããã®ã§ãå¢çç»åãå¢çé åã§ã¯ãªããããããã¨ã«æå³ããªãããã§ããå¢çç»åã使ç¨ãã¦è§ã丸ããã«ã¯ãç»åèªä½ã®è§ã丸ãã¦ä½æããããã°ã©ãã¼ã·ã§ã³ã®å ´åã¯èæ¯ã¨ãã¦æç»ããå¿
è¦ãããã¾ããæ¬¡ã®ä¾ã§ã¯ãå¢çç·ãæ¡å¼µããç»åã¨ããã£ã³ã°æ ã«ä½¿ç¨ããç»åã® 2 ã¤ã® background-imageã使ç¨ããææ³ã示ãã¾ãã
HTML
<div id="rounded">
ãã®è¦ç´ ã¯ãè§ã丸ããããå¢çç·ã§å²ã¾ãã¦ãã¾ãï¼
</div>
CSS
#rounded {
width: 200px;
/* èæ¯ç»åãè¦ããããã«éæã使ç¨ãã */
border: 10px solid transparent;
padding: 20px;
border-radius: 20px;
background-image:
linear-gradient(white, white), linear-gradient(to right, cyan, lime);
background-origin: border-box;
background-clip: padding-box, border-box;
}
çµæ
ã¡ã¢:
ãã®ç¨éã«åãã¦æ°ãã ã®å¤ãææ¡ããã¦ãã¾ããbackground-clip: border-area
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Backgrounds and Borders Module Level 3 > # border-image > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
borderoutlinebox-shadowbackground-image<url>ãã¼ã¿å- ã°ã©ãã¼ã·ã§ã³é¢æ°:
conic-gradient(),repeating-conic-gradient(),linear-gradient(),repeating-linear-gradient(),radial-gradient(),repeating-radial-gradient() - Border images in CSS: A key focus area for Interop 2023 (MDN blog, 2023)