Page 205 - css揭秘
P. 205

有没有一种合适的 CSS 技巧可以解决这个问题?我们是不是应该放弃
                                              这条路,改用脚本来动态地为每个 figure 设置宽度?

                                              解决方案


                                                  CSS 内部与外部尺寸模型(第三版)(http://w3.org/TR/css3-sizing)是
                    图 7-3                     一个相对较新的规范,它为 width 和 height 属性定义了一些新的关键字,
                    与我 们的期 望相反,display:       其中最有用的应该就是 min-content 了。这个关键字将解析为这个容器内
                    inline-block 并不会产生我们想     部最大的不可断行元素的宽度(即最宽的单词、图片或具有固定宽度的盒元
                    要的宽度
                                                 1①
                                              素) 。这正是我们梦寐以求的!现在,使用以下两行简单的 CSS 代码就可以
                                              把 figure 设置为恰当的宽度,并让它水平居中:
                                                  figure {
                                                      width: min-content;
                                                      margin: auto;
                                                  }

                                                  你可以在图 7-4 中看到效果。为了给那些旧版浏览器提供一个平稳的回
                                              退样式,我们需要在使用这个技巧的同时,提供一个固定的 max-width 值,
                                              比如:

                                                  figure {
                                                      max-width: 300px;
                                                      max-width: min-content;
                                                      margin: auto;
                                                  }

                                                  figure > img { max-width: inherit; }
                    图 7-4
                                                  对于现代浏览器来说,后一条 max-width 声明会覆盖前一条。如果
                    最终效果
                                              figure 的尺寸是由内部因素决定时,第二条规则中的 max-width:  inherit
                                              就不会生效了。

                                               试一试 play.csssecrets.io/intrinsic-sizing

                                                  向 Dudley Storey(http://demosthenes.info)脱帽致敬,感谢他提出这个
                                              应 用 场 景(http://demosthenes.info/blog/662/Design-From-the-Inside-Out-With-
                                              CSS-MinContent)。

                                  致 敬
                                                   „ CSS 内部与外部尺寸模型
                                                  http://w3.org/TR/css3-sizing                     相关规范



                                              ①  其他的值还有 max-content,它的行为类似于我们在前面看到的 display:  inline-
                                                block;而 fit-content 的行为与浮动元素是相同的(和 min-content 的效果通常一致,
                                                但也有例外)。



                  174   第 7 章 结构与布局







          ඀ࠡ  JOEC
   200   201   202   203   204   205   206   207   208   209   210