±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ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£º¶¨Î»Ò³Ã沿·Ö
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 ×öÁËÀàËÆµÄ²¼¾Ö£ºÏìӦʽ±êÍ·×î¼òµ¥µÄÖÆ×÷·½·¨¡£Õâ¸ö¼¼ÊõºÜ¼òµ¥£º
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 ÊÇÁ½ÖÖ²»Í¬µÄ²¼¾ÖÐÎʽ£¬ÎÒÃÇÓ¦¸Ã¸ù¾Ý¾ßÌåµÄ³¡¾°½«ËüÃÇ´îÅäʹÓ㬶ø²»ÊÇÏà»¥Ìæ´ú¡£
¶ÔÓÚÄÇÐ©Ìø¹ýÎÄÕÂÖ»Ïë¿´½áÂÛµÄÅóÓÑ£¨²»Óõ£ÐÄ£¬ÎÒÃÇÒ²ÕâÑù×ö£©£¬ÕâÀïÊÇͨ¹ýʵÀý±È½ÏºóµÄ×ܽ᣺
- CSS grids ÊÊÓÃÓÚ²¼¾Ö´ó»Ãæ¡£ËüÃÇÊ¹Ò³ÃæµÄ²¼¾Ö±äµÃ·Ç³£ÈÝÒ×£¬ÉõÖÁ¿ÉÒÔ´¦ÀíһЩ²»¹æÔòºÍ·Ç¶Ô³ÆµÄÉè¼Æ¡£
- Flexbox ·Ç³£ÊÊºÏ¶ÔÆëÔªËØÄÚµÄÄÚÈÝ¡£Äã¿ÉÒÔʹÓà Flex À´¶¨Î»Éè¼ÆÉÏһЩ½ÏСµÄϸ½Ú¡£
- 2D ²¼¾ÖÊʺÏʹÓà CSS grids£¨ÐÐÓëÁУ©¡£
- Flexbox ÊÊÓÃÓÚµ¥Ò»Î¬¶ÈµÄ²¼¾Ö£¨ÐлòÁУ©¡£
- ¹²Í¬Ñ§Ï°²¢Ê¹ÓÃËüÃÇ¡£
|