CSS颿°ã«ãŒã«ã培åºè§£èª¬ãã«ã¹ã¿ã 颿°ã®å®çŸ©ãæ§æããŠãŒã¹ã±ãŒã¹ããããŠåçã§åå©çšå¯èœãªã¹ã¿ã€ã«ã·ãŒããäœæããããã®ãã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
CSS颿°ã«ãŒã«ïŒã«ã¹ã¿ã 颿°å®çŸ©ã®ç䟡ãåŒãåºã
CSSã¯çµ¶ããé²åããŠãããéçºè ã«ã¯åçã§ä¿å®æ§ã®é«ãã¹ã¿ã€ã«ã·ãŒããäœæããããã®ããŸããŸã匷åãªããŒã«ãæäŸãããŠããŸãããã®ãããªæ©èœã®äžã€ã«ããã¹ãŠã®ãã©ãŠã¶ã§æ®éçã«ãµããŒããããŠããããã§ã¯ãªãããã°ãã°ããªããã»ããµãå¿ èŠãšããŸãããCSSå ã§ã«ã¹ã¿ã 颿°ãå®çŸ©ããæ©èœããããŸãããã®æ©èœã¯ãSassãLessãStylusã®ãããªããªããã»ããµãä»ããŠå®è£ ãããããšãå€ããè€éãªããžãã¯ãã«ãã»ã«åããŠCSSå šäœã§åå©çšããããšãå¯èœã«ããããã¯ãªãŒã³ã§ãæŽçãããå¹ççãªã³ãŒãã«ã€ãªãããŸãããã®èšäºã§ã¯ãCSS颿°ã«ãŒã«ã®æŠå¿µãæãäžãããã®æ§æããŠãŒã¹ã±ãŒã¹ããã¹ããã©ã¯ãã£ã¹ãæ¢ããŸãã
CSS颿°ã«ãŒã«ãçè§£ããïŒããªããã»ããµäœ¿çšæïŒ
ãã€ãã£ãã®CSSã¯ïŒãã®èšäºã®å·çæç¹ã§ã¯ïŒã«ã¹ã¿ã 颿°ã®å®çŸ©ãçŽæ¥ãµããŒãããŠããŸããããCSSããªããã»ããµããã®éèŠãªæ©èœãæäŸããŸãããããã®ããªããã»ããµã¯ã倿°ãããã¯ã¹ã€ã³ã颿°ãªã©ã®æ©èœã§CSSãæ¡åŒµãããããã¯ãã©ãŠã¶ãçè§£ã§ããæšæºã®CSSã«ã³ã³ãã€ã«ãããŸããCSSããªããã»ããµããæ¡åŒµãããã³ãŒããåãåã£ãŠéåžžã®CSSã«å€æããã翻蚳è ãã ãšèããŠãã ãããçã®CSS颿°ã«ãŒã«ã¯ãŸã ãã€ãã£ãã«ååšããªããããäŸã¯ããªããã»ããµã®æ§æã«äŸåããŸããæãäžè¬çã«ã¯ãããã¯SassãLessããŸãã¯Stylusãæå³ããŸãã
ãããã£ãŠãããã§ç€ºãã³ãŒãäŸã¯ãçã®ãã€ãã£ãCSS颿°ã«ãŒã«ã瀺ãã®ã§ã¯ãªããCSSããªããã»ããµã§é¢æ°ã®ãããªåäœã*æš¡å£*ãŸãã¯*å®çŸ*ããæ¹æ³ã宿ŒããŠããããšãçè§£ããããšãéèŠã§ããäžå¿çãªæŠå¿µã¯ãåŒæ°ãåãåãå€ãè¿ãåå©çšå¯èœãªã³ãŒããããã¯ãå®çŸ©ããã¹ã¿ã€ãªã³ã°å ã«å¹æçã«é¢æ°ãäœæããããšã§ãã
CSSã§ã«ã¹ã¿ã 颿°ã䜿çšããçç±
- ã³ãŒãã®åå©çšæ§ïŒ åãã³ãŒãã¹ãããããäœåºŠãç¹°ãè¿ãã®ãé¿ããŸãã颿°ãäžåºŠå®çŸ©ããã°ãå¿ èŠãªå Žæã§ã©ãã§ãåå©çšã§ããŸãã
- ä¿å®æ§ïŒ 颿°ãžã®å€æŽã¯äžç®æã§è¡ãã ãã§æžããããæŽæ°ãç°¡çŽ åããããšã©ãŒã®ãªã¹ã¯ãæžå°ããŸãã
- æŽçïŒ è€éãªã¹ã¿ã€ãªã³ã°ããžãã¯ããããå°ãã管çãããã颿°ã«åå²ããŸãã
- åçãªã¹ã¿ã€ãªã³ã°ïŒ è²ããµã€ãºãèšç®ãªã©ã®å ¥åå€ã«åºã¥ããŠé©å¿ããã¹ã¿ã€ã«ãäœæããŸãã
- æœè±¡åïŒ è€éãªèšç®ãããžãã¯ãåçŽãªé¢æ°åŒã³åºãã®èåŸã«é ããCSSãããçè§£ããããããŸãã
æ§æãšäŸïŒSassã䜿çšïŒ
SassïŒSyntactically Awesome Style SheetsïŒã¯æã人æ°ã®ããCSSããªããã»ããµã®äžã€ã§ãããã«ã¹ã¿ã 颿°ãå®çŸ©ããããã®åŒ·åã§çŽæçãªæ§æãæäŸããŸããå®è·µçãªäŸãçšããŠæ§æãèŠãŠãããŸãããã
åºæ¬çãªé¢æ°ã®å®çŸ©
Sassã§ã¯ã颿°ã¯@function
ãã£ã¬ã¯ãã£ãã䜿çšããŠå®çŸ©ããããã®åŸã«ç¶ããŠé¢æ°åãåŒæ°ãå²ãæ¬åŒ§ïŒããããã°ïŒããããŠé¢æ°æ¬äœãå«ãæ³¢æ¬åŒ§ãæ¥ãŸãã@return
ãã£ã¬ã¯ãã£ãã¯ã颿°ãè¿ãå€ãæå®ããŸãã
@function calculate-width($base-width, $multiplier) {
@return $base-width * $multiplier;
}
.element {
width: calculate-width(100px, 2);
}
ãã®äŸã§ã¯ãcalculate-width
颿°ã¯$base-width
ãš$multiplier
ãšãã2ã€ã®åŒæ°ãåãåãããããã®ç©ãè¿ããŸãããããŠ.element
ã¯ã©ã¹ã¯ãã®é¢æ°ã䜿çšããŠããã®å¹
ã200pxïŒ100px * 2ïŒã«èšå®ããŸãã
ããã©ã«ãåŒæ°ãæã€é¢æ°
颿°ã®åŒæ°ã«ããã©ã«ãå€ãæäŸããããšãã§ããŸãã颿°ãåŒã³åºããããšãã«åŒæ°ãæå®ãããªãã£ãå Žåãããã©ã«ãå€ã䜿çšãããŸãã
@function lighten-color($color, $amount: 20%) {
@return lighten($color, $amount);
}
.element {
background-color: lighten-color(#3498db);
color: lighten-color(#2c3e50, 10%);
}
ããã§ãlighten-color
颿°ã¯$color
ãšãªãã·ã§ã³ã®$amount
åŒæ°ãåããŸãã$amount
ãæå®ãããªãå Žåãããã©ã«ãã§20%ã«ãªããŸãããã®é¢æ°ã¯ãSassã®çµã¿èŸŒã¿é¢æ°ã§ããlighten
ã䜿çšããŠãæå®ãããéã ãè²ãæããããŸãã
æ¡ä»¶ããžãã¯ãæã€é¢æ°
颿°ã¯@if
ã@else if
ã@else
ãã£ã¬ã¯ãã£ãã䜿çšããŠæ¡ä»¶ããžãã¯ãå«ãããšãã§ããŸããããã«ãããç¹å®ã®æ¡ä»¶ã«åºã¥ããŠç°ãªãåäœããã颿°ãäœæã§ããŸãã
@function text-color($background-color) {
@if lightness($background-color) > 50% {
@return #000;
} @else {
@return #fff;
}
}
.element {
background-color: #f0f0f0;
color: text-color(#f0f0f0); // Black text
}
.dark-element {
background-color: #333;
color: text-color(#333); // White text
}
ãã®text-color
颿°ã¯ãèæ¯è²ã®æåºŠã«åºã¥ããŠé©åãªããã¹ãè²ã決å®ããŸããèæ¯ãæããå Žåã¯é»ãè¿ãããã以å€ã®å Žåã¯çœãè¿ããŸããããã«ãããè¯å¥œãªã³ã³ãã©ã¹ããšå¯èªæ§ã確ä¿ãããŸãã
ã«ãŒããæã€é¢æ°
Sass颿°ã¯ã@for
ã@while
ã@each
ãã£ã¬ã¯ãã£ãã䜿çšããŠã«ãŒããå«ãããšãã§ããŸããããã¯ãè€éãªã¹ã¿ã€ã«ãèšç®ãçæããã®ã«åœ¹ç«ã¡ãŸãã
@function generate-shadows($color, $count) {
$shadows: ();
@for $i from 1 through $count {
$shadow: 0 px * $i 0 px * $i rgba($color, 0.2);
$shadows: append($shadows, $shadow, comma);
}
@return $shadows;
}
.element {
box-shadow: generate-shadows(#000, 3);
}
generate-shadows
颿°ã¯ããªãã»ãããå¢å ããäžé£ã®ããã¯ã¹ã·ã£ããŠãäœæããŸããåŒæ°ãšããŠ$color
ãš$count
ãåããŸãã@for
ã«ãŒãã¯1ãã$count
ãŸã§å埩ããåå埩ã§ã·ã£ããŠãçæããããã$shadows
ãªã¹ãã«è¿œå ããŸããçµæãšããŠåŸãããbox-shadow
ããããã£ã¯è€æ°ã®ã·ã£ããŠå€ãæã¡ãã¬ã€ã€ãŒå¹æãçã¿åºããŸãã
代æ¿ããªããã»ããµïŒLessãšStylus
Sassã¯æåãªéžæè¢ã§ãããLessãšStylusãåæ§ã®é¢æ°å®çŸ©æ©èœãæäŸããŠãããããããç¬èªã®æ§æãšç¹åŸŽãæã£ãŠããŸãã
Lessã®é¢æ°
Lessã§ã¯ã颿°ã¯CSSã«ãŒã«ã»ãããåºåããéã«ãããã¯ã¹ã€ã³ããšåŒã°ããå€ãè¿ãããšãã§ããŸããLessã«ã¯å°çšã®@function
ãã£ã¬ã¯ãã£ãã¯ãããŸãããã代ããã«ããã¯ã¹ã€ã³å
ã§é¢æ°ã®ãããªåäœãå®çŸã§ããŸãã
.calculate-area(@width, @height) {
@area: @width * @height;
@return @area;
}
.element {
@width: 10px;
@height: 20px;
width: @width;
height: @height;
@area: .calculate-area(@width, @height);
area: @area; // Outputs: area: 200px;
}
Lessã¯@arguments
倿°ã䜿çšããŠãããã¯ã¹ã€ã³ã«æž¡ããããã¹ãŠã®åŒæ°ã«ã¢ã¯ã»ã¹ããŸããå³å¯ãªæå³ã§ã®é¢æ°ã§ã¯ãããŸããããããã«ããåçã®æ©èœãæäŸãããŸãããããã¯ã¹ã€ã³é¢æ°ãã®çµæã倿°ã«ä»£å
¥ããã«ã¯ãããã¯ã¹ã€ã³ãå€ã®ã¿ãè¿ãå¿
èŠãããïŒã€ãŸããCSSã«ãŒã«ã»ãããçŽæ¥åºåããŠã¯ãªããªãïŒããšã«æ³šæããããšãéèŠã§ãã
Stylusã®é¢æ°
Stylusã¯ã颿°ãå®çŸ©ããããã®ã¯ãªãŒã³ã§ç°¡æœãªæ§æãæäŸããŸããæç€ºçãª@function
ã@return
ãã£ã¬ã¯ãã£ãã¯å¿
èŠãããŸããã
calculateWidth(baseWidth, multiplier)
return baseWidth * multiplier
.element
width: calculateWidth(100px, 2)
Stylusã®é¢æ°ã¯ããã®æ§æã«ãããŠJavaScriptã®é¢æ°ã«éåžžã«ãã䌌ãŠããŸããåŒæ°ã¯æ¬åŒ§å ã«å®çŸ©ããã颿°æ¬äœã¯æåŸã«è©äŸ¡ãããåŒãæé»çã«è¿ããŸããã³ãŒãã¯äžè¬çã«ãããç°¡æœã§èªã¿ãããã§ãã
CSS颿°ã«ãŒã«ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹ïŒããªããã»ããµäœ¿çšæïŒ
- åœåèŠåïŒ é¢æ°ã«ã¯èª¬æçã§äžè²«æ§ã®ããååã䜿çšããŸãã颿°ã®ç®çãæç¢ºã«ç€ºãååãéžã³ãŸããããäŸãã°ã
calc-pad
ãããcalculate-padding
ã®æ¹ã説æçã§ãã - 颿°ãå°ãããçŠç¹ãçµãïŒ å颿°ã¯ãåäžã®æç¢ºã«å®çŸ©ãããç®çãæã€ã¹ãã§ããè€æ°ã®ã¿ã¹ã¯ãå®è¡ããé床ã«è€éãªé¢æ°ãäœæããã®ã¯é¿ããŠãã ããã
- 颿°ãææžåããïŒ å颿°ã®ç®çãåŒæ°ãæ»ãå€ã説æããã³ã¡ã³ãã远å ããŸããããã«ãããã³ãŒããçè§£ãããããä¿å®ãããããªããŸãã
- 颿°ããã¹ãããïŒ ç°ãªãå ¥åå€ã§é¢æ°ã培åºçã«ãã¹ãããæåŸ ã©ããã«åäœããããšã確èªããŠãã ããã
- 䜿ããããé¿ããïŒ é¢æ°ã¯åŒ·åã§ããã䜿ãããã¯é¿ããŠãã ãããã³ãŒãã®åå©çšæ§ãä¿å®æ§ããŸãã¯æŽçã®é¢ã§å€§ããªå©ç¹ãããå Žåã«ã®ã¿é¢æ°ã䜿çšããŸããæã«ã¯ãåçŽãªCSSã«ãŒã«ã§ååãªããšããããŸãã
- ããã©ãŒãã³ã¹ãèæ ®ããïŒ è€éãªé¢æ°ã¯ã¹ã¿ã€ã«ã·ãŒãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã颿°ãæé©åããŠãå¹ççã§ãããäžå¿ èŠãªãªãŒããŒããããåŒãèµ·ãããªãããã«ããŠãã ãããç¹ã«ãé床ãªã«ãŒããååž°ã¯é¿ããŠãã ããã
- å¯èœãªéãCSS倿°ã䜿çšããïŒ CSS倿°ïŒã«ã¹ã¿ã ããããã£ïŒã®ãµããŒããåäžããŠãããããåçŽãªå€ã®çœ®æã«ã¯é¢æ°ã®ä»£ããã«ãããã䜿çšããããšãæ€èšããŠãã ãããCSS倿°ã¯ãã©ãŠã¶ã«ãã€ãã£ãã§ãµããŒããããŠãããããªããã»ããµã¯å¿ èŠãããŸããã
ãŠãŒã¹ã±ãŒã¹ãšå®äžçã®äŸ
ã«ã¹ã¿ã CSS颿°ïŒããªããã»ããµçµç±ïŒã¯ãã¹ã¿ã€ã«ã·ãŒãã®å¹çãšä¿å®æ§ãåäžãããããã«ãããŸããŸãªã·ããªãªã«é©çšã§ããŸãã以äžã«ããã€ãã®äŸãæããŸãã
ã¬ã¹ãã³ã·ãã¿ã€ãã°ã©ãã£
ç»é¢å¹ ã«åºã¥ããŠãã©ã³ããµã€ãºãåçã«èª¿æŽãã颿°ãäœæããŸããããã«ãããããŸããŸãªããã€ã¹ã§ã¿ã€ãã°ã©ãã£ãèªã¿ããããèŠèŠçã«é åçã§ããç¶ããããšãä¿èšŒã§ããŸãã
@function responsive-font-size($min-size, $max-size, $min-width, $max-width) {
$slope: ($max-size - $min-size) / ($max-width - $min-width);
$intercept: $min-size - $slope * $min-width;
@return calc(#{$slope} * 100vw + #{$intercept});
}
h1 {
font-size: responsive-font-size(20px, 36px, 320px, 1200px);
}
ãã®é¢æ°ã¯ããã¥ãŒããŒãã®å¹
ã$min-width
ãš$max-width
ã®éã§ã¹ã±ãŒãªã³ã°ããã«ã€ããŠã$min-size
ãš$max-size
ã®éã§ç·åœ¢ã«ã¹ã±ãŒãªã³ã°ããæµåçãªãã©ã³ããµã€ãºãèšç®ããŸãããã©ãŠã¶ã§èšç®ãå®è¡ããããã«calc()
颿°ã䜿çšãããŸãã
è²ã®æäœ
ããŒã¹ã«ã©ãŒã«åºã¥ããŠã«ã©ãŒãã¬ãããçæãã颿°ãäœæããŸããããã«ããããŠã§ããµã€ããã¢ããªã±ãŒã·ã§ã³å šäœã§äžè²«ããã«ã©ãŒã¹ããŒã ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
@function tint-color($color, $amount) {
@return mix(#fff, $color, $amount);
}
@function shade-color($color, $amount) {
@return mix(#000, $color, $amount);
}
.button {
background-color: #27ae60;
&:hover {
background-color: tint-color(#27ae60, 20%);
}
&:active {
background-color: shade-color(#27ae60, 20%);
}
}
ãããã®é¢æ°ã¯ãSassã®çµã¿èŸŒã¿é¢æ°mix
ã䜿çšããŠãæå®ãããéã ãè²ããã£ã³ãïŒæããïŒãŸãã¯ã·ã§ãŒãïŒæãïŒããŸããããã¯ããã¿ã³ããã®ä»ã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã®ãããŒç¶æ
ãã¢ã¯ãã£ãç¶æ
ãäœæããã®ã«äŸ¿å©ã§ãã
ã°ãªããã·ã¹ãã
ã«ã©ã ã®ç·æ°ãšåžæããã¬ã¿ãŒå¹ ã«åºã¥ããŠã°ãªããã«ã©ã ã®å¹ ãèšç®ãã颿°ãäœæããŸããããã«ãããã¬ã¹ãã³ã·ããªã°ãªããã¬ã€ã¢ãŠããäœæããããã»ã¹ãç°¡çŽ åã§ããŸãã
@function grid-column-width($columns, $total-columns, $gutter) {
@return calc((100% - ($total-columns - 1) * $gutter) / $total-columns * $columns + ($columns - 1) * $gutter);
}
.column {
width: grid-column-width(4, 12, 20px);
}
ãã®é¢æ°ã¯ãããããŸãããã«ã©ã ã®æ°ïŒ$columns
ïŒãã°ãªããå
ã®ç·ã«ã©ã æ°ïŒ$total-columns
ïŒãããã³ã¬ã¿ãŒå¹
ïŒ$gutter
ïŒã«åºã¥ããŠã°ãªããã«ã©ã ã®å¹
ãèšç®ããŸããçµæã¯ãã«ã©ã éã®ã¬ã¿ãŒãèæ
®ããããŒã»ã³ããŒãžããŒã¹ã®å¹
ã«ãªããŸãã
è€éãªã¬ã€ã¢ãŠãå€ã®èšç®
ããèŠçŽ ã®é«ãããå¥ã®èŠçŽ ã®é«ããšããã€ãã®åºå®ãªãã»ããã«åºã¥ããŠåçã«èšç®ãããã¬ã€ã¢ãŠããäœæããå¿ èŠããããšããŸãã颿°ã䜿ãã°ããã®èšç®ãåå©çšå¯èœã«ã§ããŸãã
@function calculate-dynamic-height($reference-height, $top-offset, $bottom-offset) {
@return calc($reference-height - $top-offset - $bottom-offset);
}
.container {
height: 500px; // Assume this is dynamically set via JS or other means
}
.dynamic-element {
height: calculate-dynamic-height(500px, 20px, 30px); //Uses the container height
}
ãã®äŸã¯åçŽã§ãããåç §ããé«ãã倿Žãããå Žåã«ãè€æ°ã®èŠçŽ ã®é«ããç°¡åã«æŽæ°ã§ããããšã瀺ããŠããŸãããã®é¢æ°ã¯ãèšç®ã®è€éããã«ãã»ã«åããŸãã
CSS颿°ã«ãŒã«ã®æªæ¥
çŸåšãCSSããªããã»ããµããã®ã®ã£ãããåããŠããŸããããã€ãã£ãã®CSS颿°ã«ãŒã«ã®å¯èœæ§ã¯ãšããµã€ãã£ã³ã°ãªå±æã§ãããã€ãã£ããµããŒããããã°ãããªã³ã³ãã€ã«ã®å¿ èŠããªããªããCSSã®ããã©ãŒãã³ã¹ãšä¿å®æ§ãåäžããŸããCSSã¯ãŒãã³ã°ã°ã«ãŒãå ã§ã¯ãCSSã«é¢æ°ã®ãããªæ§é ãå®è£ ããããšãæ¢ãããã®è°è«ãææ¡ãé²è¡äžã§ããCSS Houdiniã®ãããªæ©èœã¯ãã«ã¹ã¿ã ã®è§£æããã³ã¬ã³ããªã³ã°æ©èœã§CSSãæ¡åŒµããããã®æœåšçãªéçãæäŸããçã®CSS颿°ã«ãŒã«ãžã®éãéãå¯èœæ§ããããŸãã
çµè«
CSSããªããã»ããµãä»ããŠå®çŸãããCSS颿°ã«ãŒã«ã¯ãåçã§åå©çšå¯èœããã€ä¿å®æ§ã®é«ãã¹ã¿ã€ã«ã·ãŒããäœæããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸããã«ã¹ã¿ã 颿°ãå®çŸ©ã䜿çšããããã®æ§æãšãã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ãCSSã³ãŒãã®å¹çãšæŽçãå€§å¹ ã«åäžãããããšãã§ããŸãããã€ãã£ãã®CSS颿°ãµããŒããåŸ ã€éããSassãLessãStylusã®ãããªããªããã»ããµã®èœåãæŽ»çšããããšã¯ããã¹ãŠã®ããã³ããšã³ãéçºè ã«ãšã£ãŠäŸ¡å€ã®ãããã¯ããã¯ã§ããã«ã¹ã¿ã 颿°ã®åãåãå ¥ããCSSéçºã¯ãŒã¯ãããŒã§æ°ããªã¬ãã«ã®æè»æ§ãšå¶åŸ¡ãè§£ãæŸã¡ãŸããããåçŽãªçœ®æã«ã¯CSS倿°ãæ€èšããããšãå¿ããã«ãåžžã«ã¯ãªãŒã³ã§ãååã«ææžåãããããã©ãŒãã³ã¹ã®é«ãã³ãŒããç®æããŠãã ããã