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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
CSS Grid VS Flexbox£ºÊµÀý¶Ô±È
 
  3078  次浏览      27
 2018-4-3 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚIT³ÌÐòʨ£¬±¾ÎÄͨ¹ýʵÀýΪÄú×ܽáÁË CSS Grid ºÍ Flexbox µÄÓÅȱµã£¬À´½â¾öÁ˸´Ô Web ²¼¾Ö¡£

²»¾ÃÒÔÇ°£¬ËùÓÐ HTML Ò³ÃæµÄ²¼¾Ö»¹¶¼ÊÇͨ¹ý tables¡¢floats ÒÔ¼°ÆäËûµÄ CSS ÊôÐÔÀ´Íê³ÉµÄ¡£Ãæ¶Ô¸´ÔÓÒ³ÃæµÄ²¼¾Ö£¬È´Ã»Óкܺõİ취¡£

È»¶ø Flexbox µÄ³öÏÖ£¬±ãÇáËɵĽâ¾öÁ˸´Ô Web ²¼¾Ö¡£ËüÊÇÒ»ÖÖרעÓÚ´´½¨Îȶ¨µÄÏìӦʽҳÃæµÄ²¼¾Öģʽ£¬²¢¿ÉÒÔÇáËɵØÕýÈ·¶ÔÆëÔªËؼ°ÆäÄÚÈÝ¡£Èç½ñÒÑÊÇ´ó¶àÊý Web ¿ª·¢ÈËÔ±Ê×Ñ¡µÄ CSS ²¼¾Ö·½Ê½¡£

ÏÖÔÚ£¬ÓÖ³öÏÖÁËÒ»¸ö¹¹½¨ HTML ×î¼Ñ²¼¾ÖÌåϵµÄоºÕùÕß¡££¨¹Ú¾üÍ·ÏÎÕýÔÚÕù¶áÖС­£©Ëü¾ÍÊÇÇ¿´óµÄ CSS Grid ²¼¾Ö¡£Ö±µ½±¾ÔÂÔµף¬ËüÒ²½«ÔÚ Firefox 52 ºÍ Chrome 57 Éϵõ½Ô­ÉúÖ§³Ö£¬ÏàÐŲ»¾ÃÒ²»áµÃµ½ÆäËûä¯ÀÀÆ÷¼æÈÝÐÔµÄÖ§³Ö¡£

»ù±¾²¼¾Ö²âÊÔ

ÒªÁ˽âÕâÁ½¸öÌåϵ¹¹½¨²¼¾ÖµÄ·½Ê½£¬ÎÒÃǽ«Í¨¹ýÏàͬµÄ HTML Ò³Ã棬ÀûÓò»Í¬µÄ²¼¾Ö·½Ê½ £¨¼´ Flexbox Óë CSS Grid£©Îª´ó¼ÒÇø·Ö¡£

ͬʱ£¬ÄãÒ²¿ÉÒÔͨ¹ýÎÄÕ¶¥²¿¸½½üµÄÏÂÔØ°´Å¥£¬ÏÂÔØÑÝʾÏîÄ¿½øÐжԱȣ¬»òÕßͨ¹ýÔÚÏßÑÝʾÀ´²ì¿´ËüÃÇ£º

¼ò°æ¾²Ì¬Ò³Ãæ²¼¾Ö

¸ÃÒ³ÃæµÄÉè¼ÆÏà¶Ô±È½Ï¼òµ¥ ¨C ËüÊÇÓÉÒ»¸ö¾ÓÖеÄÈÝÆ÷×é³É£¬ÔÚÆäÄÚ²¿Ôò°üº¬Á˱êÍ·¡¢Ö÷ÒªÄÚÈݲ¿·Ö¡¢²à±ßÀ¸ºÍÒ³½Å¡£½ÓÏÂÀ´£¬ÎÒÃÇÒªÍê³Éͬʱ±£³Ö CSS ºÍ HTML ¾¡¿ÉÄÜÕû½àµÄÌôÕ½ÊÂÏ

  1. ÔÚ²¼¾ÖÖн«ËĸöÖ÷ÒªµÄ²¿·Ö½øÐж¨Î»¡£
  2. ½«Ò³Ãæ±äΪÏìӦʽҳÃ棻
  3. ¶ÔÆë±êÍ·£ºµ¼º½³¯×ó¶ÔÆ룬°´Å¥ÏòÓÒ¶ÔÆë¡£

ÈçÄãËù¼û£¬ÎªÁ˱ãÓڱȽϣ¬ÎÒÃǽ«ËùÓÐÊÂÏî´Ó¼ò´¦Àí¡£ÄÇô£¬ÈÃÎÒÃÇ´ÓµÚÒ»¸öÌôÕ½ÊÂÏʼ°É£¡

ÌôÕ½ 1£º¶¨Î»Ò³Ã沿·Ö

Flexbox ½â¾ö·½°¸

ÎÒÃǽ«´Ó Flexbox ½â¾ö·½°¸¿ªÊ¼¡£ÎÒÃǽ«ÎªÈÝÆ÷Ìí¼Ódisplay: flexÀ´Ö¸¶¨Îª Flex ²¼¾Ö£¬²¢Ö¸¶¨×ÓÔªËصĴ¹Ö±·½Ïò¡£

.container {
display: flex;
flex-direction: column;
}

ÏÖÔÚÎÒÃÇÐèҪʹÖ÷ÒªÄÚÈݲ¿·ÖºÍ²à±ßÀ¸±Ë´ËÏàÁÚ¡£ÓÉÓÚ Flex ÈÝÆ÷ͨ³£Êǵ¥ÏòµÄ£¬ËùÒÔÎÒÃÇÐèÒªÌí¼ÓÒ»¸ö°ü×°Æ÷ÔªËØ¡£

<header></header>
<div class="main-and-sidebar-wrapper">
<section class="main"></section>
<aside class="sidebar"></aside>
</div>
<footer></footer>

È»ºó£¬ÎÒÃǸø°ü×°Æ÷ÔÚ·´ÏòÌí¼Ódisplay: flexºÍflex-directionÊôÐÔ¡£

.main-and-sidebar-wrapper {
display: flex;
flex-direction: row;
}

×îºóÒ»²½£¬ÎÒÃǽ«ÉèÖÃÖ÷ÒªÄÚÈݲ¿·ÖÓë²à±ßÀ¸µÄ´óС¡£Í¨¹ý Flex ʵÏÖºó£¬Ö÷ÒªÄÚÈݲ¿·Ö»á±È²à±ßÀ¸´óÈý±¶¡£

.main {
flex: 3;
margin-right: 60px;
}
.sidebar {
flex: 1;
}

ÈçÄãËù¼û£¬Flex ½«ÆäºÜºÃµÄʵÏÖÁ˳öÀ´£¬µ«ÊÇÈÔÐèÒªÏ൱¶àµÄ CSS ÊôÐÔ£¬²¢½èÖúÁ˶îÍâµÄ HTML ÔªËØ¡£ÄÇô£¬ÈÃÎÒÃÇ¿´¿´ CSS Grid ÈçºÎʵÏֵġ£

CSS Grid ½â¾ö·½°¸

Õë¶Ô±¾ÏîÄ¿£¬Óм¸ÖÖ²»Í¬µÄ CSS Grid ½â¾ö·½·¨£¬µ«ÊÇÎÒÃǽ«Ê¹ÓÃÍø¸ñÄ£°åÇøÓòÓï·¨À´ÊµÏÖ£¬ÒòΪËüËƺõ×îÊʺÏÎÒÃÇÒªÍê³ÉµÄ¹¤×÷¡£

Ê×ÏÈ£¬ÎÒÃǽ«¶¨ÒåËĸöÍø¸ñÇøÓò£¬ËùÓеÄÒ³Ãæ¸÷Ò»¸ö£º

<header></header>
<!-- Notice there isn't a wrapper this time -->
<section class="main"></section>
<aside class="sidebar"></aside>
<footer></footer>

 

header {
grid-area: header;
}
.main {
grid-area: main;
}
.sidebar {
grid-area: sidebar;
}
footer {
grid-area: footer;
}

È»ºó£¬ÎÒÃÇ»áÉèÖÃÍø¸ñ²¢·ÖÅäÿ¸öÇøÓòµÄλÖᣳõ´Î½Ó´¥ Grid ²¼¾ÖµÄÅóÓÑ£¬¿ÉÄܸоõÒÔϵĴúÂë»áÓÐЩ¸´ÔÓ£¬µ«µ±ÄãÁ˽âÁËÍø¸ñÌåϵ£¬¾ÍºÜÈÝÒ×ÕÆÎÕÁË¡£

.container {
display: grid; /* Define the size and number of columns in our grid.
The fr unit works similar to flex:
fr columns will share the free space in the row in proportion to their value.
We will have 2 columns - the first will be 3x the size of the second. */
grid-template-columns: 3fr 1fr;

/* Assign the grid areas we did earlier to specific places on the grid.
First row is all header.
Second row is shared between main and sidebar.
Last row is all footer. */
grid-template-areas:
"header header"
"main sidebar"
"footer footer";
/* The gutters between each grid cell will be 60 pixels. */
grid-gap: 60px;
}

¾ÍÊÇÕâÑù£¡ ÎÒÃÇÏÖÔÚ½«×ñÑ­ÉÏÊö½á¹¹½øÐв¼¾Ö£¬ÉõÖÁ²»ÐèÒªÎÒÃÇ´¦ÀíÈÎºÎµÄ margins »ò paddings ¡£

ÌôÕ½ 2£º½«Ò³Ãæ±äΪÏìӦʽҳÃæ

Flexbox ½â¾ö·½°¸

ÕâÒ»²½µÄÖ´ÐÐÓëÉÏÒ»²½ÃÜÇÐÏà¹Ø¡£¶ÔÓÚ Flexbox ½â¾ö·½°¸£¬ÎÒÃǽ«¸ü¸Ä°ü×°Æ÷µÄflex-directionÊôÐÔ£¬²¢µ÷ÕûһЩ margins¡£

@media (max-width: 600px) {
.main-and-sidebar-wrapper {
flex-direction: column;
}

.main {
margin-right: 0;
margin-bottom: 60px;
}
}

ÓÉÓÚÍøÒ³±È½Ï¼òµ¥£¬ËùÒÔÎÒÃÇÔÚýÌå²éѯÉϲ»ÐèҪ̫¶àµÄÖØд¡£µ«ÊÇ£¬Èç¹ûÓö¼û¸üΪ¸´ÔӵIJ¼¾Ö£¬ÄÇô½«»áÖØеĶ¨ÒåÏ൱¶àµÄÄÚÈÝ¡£

CSS Grid ½â¾ö·½°¸

ÓÉÓÚÎÒÃÇÒѾ­¶¨ÒåÁËÍø¸ñÇøÓò£¬ËùÒÔÎÒÃÇÖ»ÐèÒªÔÚýÌå²éѯÖÐÖØÐÂÅÅÐòËüÃÇ¡£ ÎÒÃÇ¿ÉÒÔʹÓÃÏàͬµÄÁÐÉèÖá£

@media (max-width: 600px) {
.container {
/* Realign the grid areas for a mobile layout. */
grid-template-areas:
"header header"
"main main"
"sidebar sidebar"
"footer footer";
}
}

»òÕߣ¬ÎÒÃÇ¿ÉÒÔ´ÓÍ·¿ªÊ¼ÖØж¨ÒåÕû¸ö²¼¾Ö¡£

@media (max-width: 600px) {
.container {
/* Redefine the grid into a single column layout. */
grid-template-columns: 1fr;
grid-template-areas:
"header"
"main"
"sidebar"
"footer";
}
}

ÌôÕ½ 3£º¶ÔÆë±êÍ·×é¼þ

Flexbox ½â¾ö·½°¸

ÎÒÃǵıêÍ·°üº¬Á˵¼º½ºÍÒ»¸ö°´Å¥µÄÏà¹ØÁ´½Ó¡£ÎÒÃÇÏ£Íûµ¼º½³¯×ó¶ÔÆ룬°´Å¥ÏòÓÒ¶ÔÆë¡£¶øµ¼º½ÖеÄÁ´½ÓÎñ±ØÕýÈ·¶ÔÆ룬Çұ˴ËÏàÁÚ¡£

<header>
<nav>
<li><a href="#"><h1>Logo</h1></a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</nav>
<button>Button</button>
</header>

ÎÒÃÇÔøÔÚһƪ½ÏÔçµÄÎÄÕÂÖÐʹÓà Flexbox ×öÁËÀàËƵIJ¼¾Ö£ºÏìӦʽ±êÍ·×î¼òµ¥µÄÖÆ×÷·½·¨¡£Õâ¸ö¼¼ÊõºÜ¼òµ¥£º

header {
display: flex;
justify-content: space-between;
}

ÏÖÔÚµ¼º½ÁбíºÍ°´Å¥ÒÑÕýÈ·¶ÔÆë¡£ÏÂÀ´ÎÒÃǽ«Ê¹<nav>ÄÚµÄ items ½øÐÐˮƽÒƶ¯¡£ÕâÀï×î¼òµ¥µÄ·½·¨¾ÍÊÇʹÓÃdisplay£ºinline-blockÊôÐÔ£¬µ«Ä¿Ç°ÎÒÃÇÐèҪʹÓÃÒ»¸ö Flexbox ½â¾ö·½°¸£º

header nav {
display: flex;
align-items: baseline;
}

½öÁ½ÐдúÂë¾Í¸ã¶¨ÁË£¡ »¹²»´í°É¡£½ÓÏÂÀ´ÈÃÎÒÃÇ¿´¿´ÈçºÎʹÓà CSS Grid ½â¾öËü¡£

CSS Grid ½â¾ö·½°¸

ΪÁ˲ð·Öµ¼º½ºÍ°´Å¥£¬ÎÒÃÇҪΪ±êÍ·¶¨Òådisplay: gridÊôÐÔ£¬²¢ÉèÖÃÒ»¸ö 2 ÁеÄÍø¸ñ¡£Í¬Ê±£¬ÎÒÃÇ»¹ÐèÒªÁ½ÐжîÍâµÄ CSS ´úÂ룬½«ËüÃǶ¨Î»ÔÚÏàÓ¦µÄ±ß½çÉÏ¡£

header{
display: grid;
grid-template-columns: 1fr 1fr;
}
header nav {
justify-self: start;
}
header button {
justify-self: end;
}

ÖÁÓÚµ¼º½ÖеÄÄÚÁ´ - ÕâÊÇÎÒÃÇʹÓà CSS grid ×îºÃµÄ²¼¾Öչʾ£º

ËäÈ»Á´½ÓΪÄÚÁ´ÐÎʽ£¬µ«ËüÃDz»ÄÜÕýÈ·µÄ¶ÔÆë¡£ÓÉÓÚ CSS grid ²»¾ß±¸»ùÏßÑ¡Ï²»Ïñ Flexbox ¾ß±¸µÄalign-itemsÊôÐÔ£©£¬ËùÒÔÎÒÃÇÖ»ÄÜÔÙ¶¨ÒåÒ»¸ö×ÓÍø¸ñ¡£

header nav {
display: grid;
grid-template-columns: auto 1fr 1fr;
align-items: end;
}

CSS grid Ôڴ˲½ÖèÖУ¬´æÔÚһЩÃ÷ÏԵIJ¼¾ÖÉϵÄȱÏÝ¡£µ«ÄãÒ²²»±Ø¹ýÓÚ¾ªÑÈ¡£ÒòΪËüµÄÄ¿±êÊǶÔÆëÈÝÆ÷£¬¶ø²»ÊÇÄÚ²¿µÄÄÚÈÝ¡£ËùÒÔ£¬ÓÃËüÀ´´¦ÀíÊÕβ¹¤×÷£¬»òÐí²»ÊǺܺõÄÑ¡ÔñŶ¡£

½áÂÛ

Èç¹ûÄãÒѾ­ä¯ÀÀÍêÕûƪÎÄÕ£¬ÄÇô½áÂÛ²»»áÈÃÄã¸Ðµ½ÒâÍâ¡£ÊÂʵÉÏ£¬²¢²»´æÔÚ×îºÃµÄ²¼¾Ö·½Ê½¡£Flexbox ºÍ CSS grid ÊÇÁ½ÖÖ²»Í¬µÄ²¼¾ÖÐÎʽ£¬ÎÒÃÇÓ¦¸Ã¸ù¾Ý¾ßÌåµÄ³¡¾°½«ËüÃÇ´îÅäʹÓ㬶ø²»ÊÇÏ໥Ìæ´ú¡£

¶ÔÓÚÄÇЩÌø¹ýÎÄÕÂÖ»Ïë¿´½áÂÛµÄÅóÓÑ£¨²»Óõ£ÐÄ£¬ÎÒÃÇÒ²ÕâÑù×ö£©£¬ÕâÀïÊÇͨ¹ýʵÀý±È½ÏºóµÄ×ܽ᣺

  1. CSS grids ÊÊÓÃÓÚ²¼¾Ö´ó»­Ãæ¡£ËüÃÇʹҳÃæµÄ²¼¾Ö±äµÃ·Ç³£ÈÝÒ×£¬ÉõÖÁ¿ÉÒÔ´¦ÀíһЩ²»¹æÔòºÍ·Ç¶Ô³ÆµÄÉè¼Æ¡£
  2. Flexbox ·Ç³£Êʺ϶ÔÆëÔªËØÄÚµÄÄÚÈÝ¡£Äã¿ÉÒÔʹÓà Flex À´¶¨Î»Éè¼ÆÉÏһЩ½ÏСµÄϸ½Ú¡£
  3. 2D ²¼¾ÖÊʺÏʹÓà CSS grids£¨ÐÐÓëÁУ©¡£
  4. Flexbox ÊÊÓÃÓÚµ¥Ò»Î¬¶ÈµÄ²¼¾Ö£¨ÐлòÁУ©¡£
  5. ¹²Í¬Ñ§Ï°²¢Ê¹ÓÃËüÃÇ¡£
   
3078 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

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