Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éî¶È½â¶ÁCSS¹¤³Ì»¯Êµ¼ù³É¹û

 
À´Ô´£ºcsdn ·¢²¼ÓÚ2017-10-11
  3413  次浏览      20
 

 

CSS¼¼ÊõµÄÑݽø

CSSÊÇWeb¿ª·¢Öв»¿É»òȱµÄÒ»²¿·Ö£¬ÔÚÇ°¶Ë¹¤³Ì»¯²»¶Ï½ø²½µÄ½ñÌ죬һ·½ÃæCSSÌØÐÔËæ׏淶µÄÉý¼¶Ô½À´Ô½·á¸»£¬ÁíÒ»·½Ã棬ǰ¶ËÒµÎñ¸´ÔÓÐÔµÄÔö¼Ó´øÀ´µÄ¹¤³ÌÓú¼ÓÅÓ´ó£¬ Çýʹ×Å¿ª·¢Õß²»¶ÏÑ°ÕÒCSS¹¤³Ì»¯µÄ×î¼Ñʵ¼ù¡£

Web¿ª·¢Ä£¿é»¯Ç÷ÊÆ

²»¿É·ñÈÏ£¬ ÎÞÂÛ´ÓÏÖ´úÇ°¶Ë¿ò¼Ü£¨React¡¢ Vue¡¢Angular¡¢ PolymerµÈ£©£¬ »¹ÊÇ´ÓW3CµÄWeb Components²Ý°¸À´¿´£¬×é¼þ»¯ÒѾ­ÊÇÇ°¶Ë¿ª·¢µÄÖ÷Á÷֮ѡºÍδÀ´µÄ·¢Õ¹·½Ïò£¬ÕýÈçÔÚRedditÉÏÓÐÍøÓÑ˵µÀ¡°Facebook.com¡¯s codebase includes over 20,000 components¡±¡£ ¹ãÒåÉÏ¿´£¬ËùÓÐÒ³ÃæÉ϶¼¿ÉÒÔ±»»®·Ö³ÉÒ»¸ö¸ö×é¼þ£¬Ïà¶ÔÓÚ¹ýÈ¥ÒÔÍøÒ³×÷Ϊ¿ª·¢µ¥Î»£¬ÒÔ×é¼þΪµ¥Î»¿ª·¢ÓÐ×ſɸ´ÓᢿÉÀ©Õ¹µÈһϵÁÐÓÐÀûÓÚÏîÄ¿¹¤³Ì»¯µÄÓŵ㡣

ÔÚÕâÖÖ×é¼þ»¯Ç÷ÊƵı³¾°Ï£¬CSSÄ£¿é»¯Ò²½¥½¥ÓÐן÷ÖÖ³¢ÊÔ¡£

Ô¤´¦ÀíÓëºó´¦Àí

Ô¤´¦Àí

±È½ÏÁ÷ÐеÄCSSÔ¤´¦ÀíÆ÷ÓÐSass¡¢LessºÍStylus£¬CSSÔ¤´¦ÀíÆ÷µÄ³öÏÖÖ÷ÒªÒòCSSȱÉÙ±à³ÌÓïÑÔµÄÁé»îÐÔ¶øÉú£¬ÊÇÒýÈëÁËһЩ±à³Ì¸ÅÄî¶øÉúµÄDSL£¬¿ª·¢Õß±àд¼ò½àµÄÓïÒ廯DSL´úÂ룬ÓÉÔ¤´¦ÀíÆ÷±àÒë³ÉCSS¡£

ÒÔSassΪÀý£¬¸ÃÔ¤´¦ÀíÆ÷Ö§³Ö.scss¡¢.sassÎļþÀàÐÍ£¬ÆäÓï·¨Ö§³Ö±äÁ¿¡¢Ñ¡ÔñÆ÷ǶÌס¢¼Ì³Ð£¨extend£©¡¢»ìºÏ£¨mixin£©ºÍһЩÂß¼­Óï¾ä£¬Í¬Ê±»¹Ö§³Ö¿çÎļþµÄµ¼È빦ÄÜ£¬Òò¶øʹµÃ¿ª·¢ÕßÄܹ»ºÜºÃµØʹÓñà³Ì˼ÏëÊéдÑùʽ¡£

´Óʵ¼ÊʹÓÃÇé¿öÀ´¿´£¬¼¸¸öÔ¤´¦ÀíÆ÷¸÷ÓÐÓÅȱµã£¬´ÓÉçÇø»îÔ¾¶ÈÉÏ¿´Sass>Less>Stylus¡£SassÊÇÈý¸öÖмä×îÔçÒ²ÊÇ×î³ÉÊìµÄ£¬Òò¶øÓÐןܶ࿪Դ»ýÀۺͺܺñà³Ì·¶Ê½£¬ÏñÄÚÖÃÁ˺ܶàSassº¯ÊýµÄCompass¿ò¼Ü£¬¾ÍÊǺܺõÄÒ»¸öÀý×Ó¡£LessÏà¶ÔÓÚSassµÄÓŵãÔÚÓÚÊ®·ÖµÄÇáÁ¿£¬Ò²ÍêÈ«¼æÈÝCSS£¬µ«ÁíÒ»·½Ãæ¿É±à³ÌÄÜÁ¦²»ÈçSass£¬Bootstrap×îа汾µÄCSSÔ¤´¦ÀíÆ÷Ò²´ÓLess»»³ÉSass¡£StylusÀ´Ô´ÓÚNodeÉçÇø£¬Ê¹ÓÃÌåÑéÉϲ¢²»Êä¸øSassºÍLess£¬ÎÞÂÛÊDZàÒëËٶȻ¹ÊÇÓï·¨·¶Ê½£¬¸öÈË¿´À´£¬StylusÔÚijÖ̶ֳÈÉϸü¼ÓÓÅÓÚÆäËûÁ½¸ö¡£

ºó´¦Àí

ºó´¦ÀíÆ÷ÊǶÔÔ­ÉúCSS½øÐд¦Àí²¢×îÖÕÉú³ÉCSSµÄ´¦ÀíÆ÷£¬¹ãÒåÉÏ»¹ÊǸöÔ¤´¦ÀíÆ÷£¬ÓëÉÏÃæÌáµ½µÄÔ¤´¦ÀíÆ÷²»Í¬µÄÊÇ£¬Ëü´¦ÀíµÄ¶ÔÏóÊDZê×¼CSS£¨Èçͼ1Ëùʾ£©£¬±È½ÏµäÐ͵ĺó´¦Àí¹¤¾ßÓÐÒÔϼ¸ÖÖ¡£

clean-css£ºÑ¹ËõCSS

AutoPrefixer£º×Ô¶¯Ìí¼ÓCSS3ÊôÐÔ¸÷ä¯ÀÀÆ÷µÄǰ׺

Rework£ºÈ¡´úStylusµÄ²å¼þ»¯¿ò¼Ü

PostCSS

ͼ1 Ô¤´¦ÀíÆ÷Óëºó´¦ÀíÆ÷¹Øϵ

PostCSS

PostCSS×î³õÊÇ´ÓAutoPrefixerÏîÄ¿ÖгéÏó³öÀ´µÄ¿ò¼Ü£¬Ëü±¾Éí²¢²»¶ÔCSS×ö¾ßÌåµÄÒµÎñ²Ù×÷£¬Ö»Êǽ«CSS½âÎö³É³éÏóÓï·¨Ê÷£¨AST£©£¬ÑùʽµÄ²Ù×÷ÓÉÖ®ºóÔËÐеIJå¼þϵͳÍê³É£¨Èçͼ2Ëùʾ£©¡£ÕýÈçÆä±¾ÉíËùÑÔTransforming styles with JS plugins¡±¡£

ͼ2 PostCSS ¹¤×÷»úÖÆ

¸ü¶àʱºòÎÒÃÇÔÚÌÖÂÛPostCSSµÄʱºò£¬²¢²»Ö¹Í£ÁôÔÚËüÊǽâÎöCSSµÄºËÐŤ¾ß£¬¸ü°üÀ¨Ëü´´½¨µÄ²å¼þϵͳ£¬¶ø½ñPostCSS×îΪÎüÒý¿ª·¢ÕßµÄÕýÊÇÆäÀ©Õ¹ÐÔ½ÏÇ¿µÄ²å¼þϵͳºÍ·á¸»µÄ²å¼þÖ§³Ö¡£

³£ÓõIJå¼þÓУº

1.Autoprefixer£º×Ô¶¯²¹È«CSSÊôÐÔ¼æÈÝÐÔǰ׺

2.postcss-cssnext£ºÊ¹ÓÃ×îеÄCSSÓï·¨

3.postcss-modules£º×é¼þÄÚ×Ô¶¯¹ØÁªÑùʽÖÁÑ¡ÔñÆ÷

4.Stylelint£ºCSSÓï·¨¼ì²éÆ÷µÈ

Èç¹ûÒÑÓеIJå¼þ²»ÄÜÂú×ãÏÖÓеÄÐèÇó£¬ÍêÈ«¿ÉÒÔÊÖдһ¸ö²å¼þ£º

// ¹Ù·½Ê¾Àýremתpx
var custom = function(css, opts){
css.eachDecl(function(decl){
decl.value = decl.value.replace(/\d+rem/, function(str){
return 16 * parseFloat(str) + "px";
});
});
};

µ±È»£¬PostCSSµÄ½âÎö²¢²»¾ÖÏÞÓÚCSS£¬½áºÏËüÌṩµÄ×Ô¶¨ÒåÓï·¨½âÎö½Ó¿Ú£¬ÍêÈ«¿ÉÒÔ¶¨Òå×Ô¼ºµÄÓï·¨¡£ÆäʵÀàËÆÓÚpostcss-scssµÄ²å¼þÉçÇøÒѾ­ÓкܶàÁË£¬Ê¹ÓÃÕâЩ²å¼þ£¬¿ÉÒÔ½«Ô­À´»ùÓÚSass¡¢LessµÈÔ¤´¦ÀíÆ÷µÄ´úÂëǨÒÆÖÁPostCSS¡£Ïà¶ÔÓÚ´«Í³µÄÔ¤´¦ÀíÆ÷£¬PostCSSÕâÖÖ¿ª·Åƽ̨Ð͵ÄÌåϵ£¬²»¾ÐÊø¿ª·¢ÕߵĿª·¢·½Ê½£¬Í¬Ê±Ò²´Ù½øÁ˸ü¶à¶ÔÓÚCSS½â¾ö·½°¸µÄ̽Ë÷¡£

»Ø¹ýÍ·À´¿´£¬ÎªÊ²Ã´»áÓÐCSSÔ¤´¦Àí²Ù×÷ºóµÄ´¦Àí²Ù×÷£¿ÆäʵÖ÷ÒªµÄÔ­ÒòÔÚÓÚÇ°¶ËÏîÄ¿µÄÅòÕÍʹµÃÓô«Í³ÊÖ¹¤±àд²¢Î¬»¤CSS±äµÃºÜ²»¿°£¬¸ù±¾Ô­ÒòÔòÊÇCSSȱÉÙ±à³ÌÓïÑÔÌØÐÔ£¬Òª×öµ½CSS´úÂëµÄÄ£¿é»¯ÒÔ¼°¸ß¸´ÓõijéÏó´¦Àí£¬¾Í±ØÐëÒýÈëһЩ±à³ÌµÄ˼Ïë¡£Ïà¶ÔÓÚJavaScript±ê×¼ÍƽøÒÔ¼°»ù´¡ÉèÊ©µÄÍ걸£¬CSSÔÚ±à³Ì·½ÃæµÄ̽Ë÷¸ü¶àÀ´×ÔÓÚÉçÇø£¬Ò²²¢ÎÞͳһµÄÊÂʵ±ê×¼£¬ÕâÒ²ÊÇCSS·¢Õ¹ÂäºóÓÚJavaScriptµÄÔ­Òò¡£

namespaceÔ¼Êø

Ò»·½ÃæÎÒÃÇÐèÒª¹Ø×¢¼¼ÊõÄܹ»´øÀ´´úÂëÉϵÄÄ£¿é»¯£¬ÁíÒ»·½ÃæÎÒÃÇÓÖҪ˼¿¼ÈçºÎʹÓÃÒ»¸öÁ¼ºÃµÄ·ç¸ñ¼Ü¹¹ÆðÏîÄ¿ÖеÄCSS¡£CSS³ýÁË´úÂëÍ⣬ÁíÒ»¸öºÜÖØÒªµÄ¾ÍÊÇCSSÑ¡Ôñ±ê¼Ç¡£¶øCSSÑ¡ÔñÆ÷µÄÃüÃû¿Õ¼äÊÇÈ«¾ÖµÄ£¬²¢Ã»Óоֲ¿µÄ¸ÅÄÒò¶øÈçºÎÀûÓúÃÕâ¸öÈ«¾ÖµÄ¿Õ¼ä£¬Ñ¡ÔñÁ¼ºÃµÄ½á¹¹·ç¸ñ£¬Ò²ÊÇÔÚ¿ª·¢¹ý³ÌÖбØÐ뿼Âǵġ£

OOCSS

OOCS£¨Object-Oriented CSS£©¼´ÃæÏò¶ÔÏóCSS£¬Ö÷ÒªÓÐÁ½¸öºËÐÄÔ­Ôò¡£

·ÖÀë½á¹¹ºÍƤ·ô£¨Separate Structure and Skin£©

Ƥ·ô¼´Ò»Ð©Öظ´µÄÊÓ¾õÌØÕ÷£¬Èç±ß¿ò¡¢±³¾°¡¢ÑÕÉ«£¬·ÖÀëÊÇΪÁ˸ü¶àµÄ¸´Ó㻽ṹÊÇÖ¸ÔªËØ´óСÌØÕ÷£¬Èç¸ß¶È¡¢¿í¶È¡¢±ß¾àµÈµÈ¡£

.button {
padding: 10px;
box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}
.widget {
overflow: auto;
box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

¸ù¾Ý´ËÔ­Ôò£¬ÎÒÃÇÐèÒª¶Ô¹«ÓõÄƤ·ô½øÐÐÌáÈ¡²¢·ÖÀ룬ÈçÏ¡£

.button {
padding: 10px;
}
.widget {
overflow: auto;
}
.skin {
box-shadow: rgba(0, 0, 0, .5) 2px 2px 5px;
}

·ÖÀëÈÝÆ÷ºÍÄÚÈÝ£¨Separate Container an Content£©

´òÆÆÈÝÆ÷ÄÚÔªËضÔÓÚÈÝÆ÷µÄÒÀÀµ£¬ÔªËØÑùʽӦ¸Ã¶ÀÁ¢´æÔÚ¡£ÈçÏÂÃæʾÀý¡£

<div class="container"><h2>xxx</h2></div>
.container h2 {...}

ÉÏÃæµÄh2ÔªËØÒÀÀµÓÚ¸¸ÔªËØcontainer£¬¶ÔÓ¦´ËÔ­Ôò£¬h2ÔªËØÐèҪʹÓÃÒ»¸öµ¥¶ÀµÄÑ¡ÔñÆ÷£¬ÈçÏ¡£

<div class="container"><h2 class="category">xxx</h2></div>
.category {...}

´Óʵ¼ùÖп´³ö£¬Ê¹ÓÃOOSCC·¶Ê½£¬×ñÊØÁËDRYµÄÔ­Ôò£¬Äܹ»´óÁ¿¼õÉÙÖظ´µÄÑùʽ´úÂ룬Ìá¸ß´úÂ븴Óã»Í¬Ê±£¬ÊÓ¾õÔªËØ¿ÉÒÔÁé»î×éºÏ¸÷¸öÀàÃû£¬Õ¹Ê¾²»Í¬µÄЧ¹û£¬·á¸»µÄÀàÃûҲͬʱʹµÃÔªËØÓÐןüºÃµÄ¿É¶ÁÐÔ£»ÁíÒ»·½Ã棬ÓÉÓÚÈÝÆ÷ºÍÄÚÈݵķÖÀ룬CSSÍê³ÉÁËÓëHTML½á¹¹½âñî¡£

µ«Í¬Ê±Ò²»á´øÀ´Ò»Ð©È±µã£¬³éÏó¸´ÓûáʹclassÔ½À´Ô½¶à£¬¼«¶ËÇé¿öÏ¿ÉÄÜ»á²úÉúºÜ¶àÔ­×ÓÀ࣬Õâ¶ÔÓÚÄÇЩƫÏòÓÚ¡°µ¥Ò»À´Ô´Ô­Ôò¡±µÄ¿ª·¢ÕßÀ´Ëµ²¢²»ÊÜ»¶Ó­¡£

SMACSS

SMACSS£¨Scalable and Modular Architecture for CSS£©¼´Ä£¿é»¯¼Ü¹¹µÄ¿ÉÀ©Õ¹CSS£¬ËüÖ÷Òª½«¹æÔò·ÖΪÎåÀà¡£

»ù´¡£¨Base£©

tag selectµÄÑùʽ£¬ ¶¨Òå×î»ù´¡È«¾ÖÑùʽ£¬ ÈçCSS REST¡£

html, body, form { margin: 0; padding: 0; }
a { color: #039; } a:hover { color: #03C; }

²¼¾Ö£¨Layout£©

½«Ò³Ãæ·ÖΪ¸÷¸öÇøÓòµÄÔªËØ¿é¡£

.header{}
....
.footer{}

Ä£¿é£¨Module£©

¿É¸´Óõĵ¥Ôª¡£ÔÚÄ£¿éÖУ¬ÐèҪעÒâµÄÊÇÑ¡ÔñÆ÷Ò»ÂÉÑ¡Ôñclass selector£¬±ÜÃâǶÌ××ÓÑ¡ÔñÆ÷£¬¼õÉÙȨÖØ£¬ ·½±ãÍⲿ¸²¸Ç¡£

<div class="pod pod-constrained">...</
div>
<div class="pod pod-callout">...</div>
.pod { width: 100%; }
.pod .pod-callout { width: 200px; }
.pod .pod-constrained{}

״̬£¨State£©

״̬classÒ»°ãͨ¹ýJavaScript¶¯Ì¬¹ÒÔص½ÔªËØÉÏ£¬¿ÉÒÔ¸ù¾Ý״̬¸²¸ÇÔªËØÉÏÌض¨ÊôÐÔ¡£

.tab { background-color: purple;... }
.is-tab-active { background-color:white; }

Ö÷Ì⣨Theme£©

¿ÉÑ¡µÄÊÓ¾õÍâ¹Û¡£Ò»°ã¸ù¾ÝÐèÇóÓÐÑÕÉ«¡¢×ÖÌå¡¢²¼¾ÖµÈµÈ£¬ÊµÏÖÊǽ«ÕâЩÑùʽµ¥¶À³é³öÀ´£¬¸ù¾ÝÍⲿÌõ¼þ£¨dataÊôÐÔ¡¢Ã½Ìå²éѯµÈ£©¶¯Ì¬ÉèÖá£

SMACSSµÄÖ÷ÒªÓŵãÔÚÓÚ°´ÕÕ²»Í¬µÄÒµÎñÂß¼­£¬½«Õû¸öCSS½á¹¹»¯·Ö¸ü¼ÓϸÖ£¬Ô¼ÊøºÃÃüÃû£¬×îС»¯Éî¶È£¬ÔÚ±àдµÄʱºò£¬Ê¹ÓÃSMACSS¹æ·¶Äܹ»¸üºÃµØ×éÖ¯CSSÎļþ½á¹¹ºÍclassÃüÃû¡£

BEM

BEM¼´Block Element Modifier£¬ÀàÃûÃüÃû¹æÔòΪBlock__Element¨CModifier¡£

1.BlockËùÊô×é¼þÃû³Æ

2.Element×é¼þÄÚÔªËØÃû³Æ

3.ModifierÔªËØ»ò×é¼þÐÞÊηû

ÆäºËÐÄ˼Ïë¾ÍÊÇ×é¼þ»¯¡£Ê×ÏÈÒ»¸öÒ³Ãæ¿ÉÒÔ°´²ã¼¶ÒÀ´Î»®·Ö³ö¶à¸ö×é¼þ£¬Æä´Î¾ÍÊǵ¥¶À±ê¼ÇÕâЩԪËØ¡£BEMͨ¹ý¼òµ¥µÄ¿é¡¢ÔªËØ¡¢ÐÞÊηûµÄÔ¼Êø¹æÔòÈ·±£ÀàÃûµÄΨһ£¬Í¬Ê±½«ÀàÑ¡ÔñÆ÷µÄÓïÒ廯ÌáÉýÁËÒ»¸öеĸ߶ȡ£

<form class="form form--theme-xmas form--simple">
<input class="form__input" type="text"/>
<input class="form__submit form__submit--disabled" type="submit" />
</form>
.form { }
.form--theme-xmas { }
.form--simple { }
.form__input { }
.form__submit { }
.form__submit--disabled { }

BEMͨ¹ý¼òµ¥µÄÃüÃû¹æÔòʹµÃ¹ØÁªÀàÃûÔªËØÓïÒåÐÔ¡¢¿É¶ÁÐÔ¸üÇ¿£¬ÓÐÀûÓÚÏîÄ¿¹ÜÀíºÍ¶àÈËЭ×÷¡£Í¬Ê±BEM·½°¸Öв¢Ã»ÓÐǶÌ×£¬ËùÓÐÀàÃû×îdzÉî¶È£¬²¢²»»á³öÏÖǶÌ×¹ýÉîÄÑÒÔ¸²¸ÇµÄÇé¿ö£¬Ò×ÓÚά»¤¡¢¸´Óá£

ÁíÒ»·½Ã棬BEMÇ¿µ÷µ¥Ò»Ö°ÔðÔ­ÔòºÍµ¥Ò»ÑùʽÀ´Ô´Ô­Ôò£¬Òâζ×Å´«Í³´¿ÊÖ¹¤CSS¿ÉÄÜ»á²úÉú´óÁ¿Öظ´µÄ´úÂ룬µ«ÊǽáºÏ¸÷ÖÖCSSÔ¤´¦ÀíºÍPostCSS¾Í¿ÉÒԺܺñÜÃâÎÊÌâµÄ²úÉú¡£ÁíÍ⣬Ëä˵ԭÔò¼òµ¥£¬µ«ÔÚʵ¼ÊʹÓÃÖУ¬Î¬»¤BEMµÄÃüÃûȷʵÐèҪһЩ³É±¾£¬ºÜ¶àʱºòÃüÃû·´¶ø³ÉÁËÒ»¼þÄÑÊ¡£

CSS in JS

CSS in JS·½°¸Ò»¿ªÊ¼ÊÇÓÉFacebook¹¤³ÌʦVjeuxÔÚÒ»´Î·ÖÏíÖÐÌá³öµÄ£¬Õë¶ÔCSSÔÚReact¿ª·¢ÖÐÓöµ½µÄ¸÷ÖÖÎÊÌ⣬ËæºóÉçÇøÓ¿ÏÖÁ˸÷Ñù·½°¸¡£

ËäÈ»ÒÔÉÏÄ£¿é»¯µÄÃüÃûÔ¼¶¨¿ÉÒÔ½â¾ö·ç¸ñÉϵÄÎÊÌ⣬µ«ÕýÈçÉÏÎĶøÑÔ£¬Ò²ÒýÈëһЩ³É±¾¡£¶ø¶ÔÓÚһЩ¸ß¸´ÓõÄ×é¼þ£¬Ê¹ÓÃÒÔÉϸ߶ÈÓïÒ廯µÄ·½°¸ÊǸöºÜºÃµÄÑ¡Ôñ£¬ÕâÖֳɱ¾ÊDZØÐèµÄ£¬µ«¶ÔÓÚûÓи´ÓõÄÒµÎñ×é¼þÀ´Ëµ£¬ÏÔÈ»ÕâÖÖÃüÃûµÄ³É±¾´óÓÚÊÕÒ棬ÌرðÊÇÔÚ¶àÈËЭ×÷ʱºò¡£ÁíÍ⣬Ãæ¶ÔÏÖ´úÇ°¶Ë¿ò¼ÜµÄ·¢Õ¹£¬´¿¿¿CSS·½°¸²¢²»Äܺܺõؽâ¾ö¡£

CSS Modlue

CSS Module²»Í¬ÓÚVjeuxÍêÈ«·ÅÆúCSSµÄ×ö·¨£¬ËüÖ»ÊÇÑ¡ÔñÁËÓÃJavaScriptÀ´¹ÜÀíÑùʽÓëÔªËصĹØÁª£¬CSS ModuleΪÿ¸ö±¾µØ¶¨ÒåµÄÀàÃû¶¯Ì¬´´½¨Ò»¸öÈ«¾ÖΨһÀàÃû£¬È»ºó×¢Èëµ½UIÉÏ£¬ÊµÏÖ±àдÑùʽ¹æÔòµÄ¾Ö²¿Ä£¿é»¯¡£

css-loaderÄÚÖÃÖ§³ÖCSS Module£¬ Ö»ÐèÉèÖÃϲéѯ²ÎÊý£¬ ¼´¿ÉÔÚJavaScriptÖÐʹÓÃCSSÎļþµÄµ¼Èë¡£

{
loader: 'css-loader',
query: {
module: true,
localInentName: '[name]__[local]--[hash:base64:5]' //
}
}

ÔÚJavaScriptÖе¼ÈëCSSÎļþ£¬×îÖյõ½µÄÆäʵÊÇÒ»¸öCSSÎļþ¾­¹ýparseºóÉú³ÉµÄÀàÃûÓ³Éä¶ÔÏó{[localName]: [hashed-Name], ¡­.}¡£

// Header.jsx
import style from './Header.css'
...
console.log(style)//{header: 'Header__header--3kSIq_0'}
export default () => <div className={style.header}></div>

ͬʱCSSÎļþÒ²»á±»±àÒë³É¶ÔÓ¦µÄÀàÃû¡£

.Header__header--3kSIq_0- {}
// from Header.css .header{}

´Ó¿ª·¢ÌåÑéÉÏ¿´£¬CSS-ModuleÕâÖÖ×ö·¨Èÿª·¢Õß²»±ØÔÚÀàÃûµÄÃüÃûÉÏСÐÄÒíÒí£¬Ö±½ÓʹÓÃËæ»ú±àÒëÉú³ÉΨһ±êʶ£¬ÈÃÀàÃû³ÉΪ¾Ö²¿±äÁ¿³ÉΪÁË¿ÉÄÜ¡£µ«Í¬Ê±Ò²ÒòΪËæ»úÐÔ£¬Ê§È¥ÁËͨ¹ý´Ë¾Ö²¿ÀàÃûʵÏÖÑùʽ¸²¸ÇµÄ¿ÉÄÜÐÔ£¬¸²¸Çʱ²»µÃ²»¿¼ÂÇʹÓÃÆäËûÑ¡ÔñÆ÷£¨ÈçÊôÐÔÑ¡ÔñÆ÷£©¡£¶ÔÓÚ¸´ÓõÄ×é¼þ¶øÑÔ£¬Áé»îÐÔÊDZز»¿ÉÉٵģ¬ÕâÖÖ¾Ö²¿Ä£¿é»¯·½°¸²¢²»ÊʺÏÕâÖָ߶ȳéÏó¸´ÓõÄ×é¼þ£¬¶ø¶ÔÓÚÒ»´ÎÐÔÒµÎñ×é¼þȷʵÄܹ»ÌáÉý¿ª·¢Ð§ÂÊ¡£

ͬʱCSS Module»¹Ö§³ÖʹÓÃcomposesʵÏÖCSS´úÂëµÄ×éºÏ¸´Óá£

/* button.css */
.base{}
.normal {
composes: base
...
}
// button.jsx
import style from './button.css'
export default () => <button className={style.normal}>°´°´</button>// <button class="button__base--180HZ_0 button__normal--x38Eh_0">°´°´</button>

µ±È»CSS Module»¹¿ÉÒÔÅäºÏ¸÷ÖÖÔ¤´¦ÀíÆ÷Ò»ÆðʹÓã¬Ö»ÐèÔÚcss-loader֮ǰÌí¼Ó¶ÔÓ¦µÄloader£¬µ«ÔÚ±àдµÄʱºòҪעÒâCSS ModuleµÄÓï·¨ÒªÔÚ´¦ÀíÆ÷Ö®ºóºÏ·¨¡£Êµ¼ÊʹÓÃÖУ¬¶ÔÓÚCSS´úÂëµÄ½âñÈç¹ûÒýÈëÁËÔ¤´¦ÀíÆ÷£¬´úÂëÎļþµÄÄ£¿é»¯¾Í²»½¨ÒéʹÓÃcomposesÀ´½â¾ö¡£

styled-components

// button
import styled from 'styled-compenents'
const Button = styled.button`
padding: 10px;
${props => props.primary ? 'palevioletred' : 'white'};
`
<Button>°´Å¥</Button>
<Button primary>°´Å¥</Button>

Æä±àÒëºóÒ²ÊÇÈçͬCSS-in-moduleÒ»Ñù£¬Ëæ»ú»ìÏýÉú³ÉÈ«¾ÖΨһÀàÃû£¬¶ÔÓ¦Éú³ÉCSSÎļþ¡£styledcomponentµÄºËÐÄÊÇ¡°Ñùʽ¼´×é¼þ¡±£¬½«×Ö·û´®½âÎö³ÉCSS£¬²¢´´½¨¶ÔÓ¦¸ÃÑùʽµÄJSXÔªËØ£¬ËüÓÐ×ÅJavaScriptÇ¿´óµÄ±à³ÌÄÜÁ¦£¬ÍêÈ«¿ÉÒÔʤÈΣ¬Í¬Ê±ÈÃ×é¼þÑùʽÓë×é¼þÂß¼­ñîºÏÔÚÒ»Æð£¬ÕæÕý×öµ½×é¼þ½ôñîºÏÉÙÒÀÀµ¡£µ±È»ÓÐЩ¿ª·¢²»Ï²»¶ÕâÖÖñîºÏ£¬Ò²ÍêÈ«¿ÉÒÔ½«Ñùʽ×é¼þºÍÂß¼­×é¼þ·ÖÀ룬¶øÔÚJavaScriptÖзÖÀë´úÂë±¾ÉíÒ²ÊǼþÒ×Ê¡£

µ±È»£¬styled-componentsÕæÕýµÄÓ¦Óò¢²»½ö½öÈç´Ë£¬ËüÍêÈ«ÊÇÒ»¸öÍ걸µÄÑùʽ½â¾ö·½°¸£¬ÓÐ×ÅÈçÀ©Õ¹¡¢Ö÷Ìâ¡¢·þÎñ¶ËäÖȾ¡¢Babel²å¼þ¡¢ReactNativeµÈһϵÁÐÖ§³Ö£¬Ò²ÉîÊÜһЩ¿ª·¢Õß»¶Ó­¡£ÕâÀï±È½ÏÓÐȤµÄÊÇ¿´ËÆÆæ¹ÖµÄÓï·¨ÐÎʽ£¬ ÆäʵÊÇES6ÖÐÄ£°å×Ö·ûµÄÌØÐÔ¡£

styled-components±¾ÉíÊÇReactÉçÇøÕë¶ÔJSX²úÉúµÄÒ»ÖÖ·½°¸£¬µ±È»ÔÚVueÖÐͨ¹ývue-styledcomponentsÒ²ÄÜʹÓøù¦ÄÜ£¬µ«ÊÇʹÓÃÌåÑéÒ»°ã£¬ÎÞÂÛÊÇÔÚÄ£°åÀﻹÊÇÔÚJSXÖУ¬Ê¹ÓÃ×é¼þ¶¼ÐèÌáÇ°ÉùÃ÷²¢×¢Èëµ½×é¼þ¹¹½¨²ÎÊýÖУ¬¹ý³ÌÊ®·Ö·±Ëö£¬¶øÇÒ²»Í¬ÓÚReact´¿JSXµÄ×é¼þäÖȾÓï·¨£¬VueÖв¢²»ÄܶԼÈÓеÄ×é¼þʹÓÃstyledÓï·¨¡£

µ«ÁíÒ»·½Ã棬½«CSSÍêȫдÔÚJavaScriptÖУ¬ÉçÇøÀïÖÐÒ²ÓкܶàÈ˳ַ´¶Ô̬¶È£¬react-css-modulesµÄ×÷Õß¾ÍרÃÅ·¢Îıíʾ·´¶Ôstyled-componentÕâÖÖÍêÈ«Å×ÆúCSSÎļþµÄ¿ª·¢Ä£Ê½¡£

×ܽá

ÎÒÃÇÔÚ¿ª·¢Ö®Ç°£¬Ãæ¶Ô¸÷ÖÖ¼¼Êõ·½°¸£¬Ò»¶¨ÒªÑ¡È¡²¢×éºÏ³ö×îÊʺÏ×Ô¼ºÏîÄ¿µÄ·½°¸£¬ÊÇÑ¡Óô«Í³µÄCSSÔ¤´¦ÀíÆ÷£¬»¹ÊÇÑ¡ÓÃPostCSS£¿ÊÇÈ«¾ÖÊÖ¶¯Î¬»¤Ä£¿é£¬»¹ÊÇÍêÈ«½»¸ø³ÌÐòËæ»úÉú³ÉÀàÃû£¿¶¼ÐèÒª½áºÏÒµÎñ³¡¾°¡¢ÍŶÓÏ°¹ßµÈÒòËØ¡£ÁíÒ»·½Ã棬CSS±¾Éí²¢ÎÞ±à³ÌÌØÐÔ£¬µ«ÔÚÆ乤³Ì»¯¼¼ÊõµÄ·¢Õ¹Öв»·¦ºÜ¶àÓÅÐãµÄ±à³Ì˼Ï룬ÎÞÂÛÊÇ×Ô¶¨ÒåDSL»¹ÊÇ»ùÓÚJavaScript£¬ÕâÆäÖдø¸øÎÒÃÇ˼¿¼µÄÕýÊÇ¡°±àÒë˼Ï롱¡£

   
3413 ´Îä¯ÀÀ       20
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
Öع¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

Öع¹-¸ÄÉƼÈÓдúÂëµÄÉè¼Æ
Èí¼þÖع¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì