自适应内部元素

设计场景


  • 如果我们不给元素指定固定的高度(height),它会根据其内容的高度自适应。我们希望宽度(width)也具有类似的行为

应用场景


我们用一幅图来展示实际的应用场景:

perfect.png

分析:

  • 宽度由 内部因素 来决定,而不是由 外部因素 来决定的
  • 水平居中

老式解决方案


  • 代码结构
<p>文本</p>
<figure>
    <img src="" alt="" width="" height="" />
    <figcaption>标题/描述</figcaption>
</figure>
<p>文本</P>
  • 为了得到正确的宽度,我们给 figure 元素浮动,但却引发了新的问题,整个布局模式改变了
float.png
  • 对figure元素应用 display: inline-block 让它根据内容来决定自身的尺寸,这样虽然可以达到正确的宽度,但在水平居中上却让我们实现起来有点繁琐:我们需要对父元素应用 text-align: cener 属性,然后对不需要居中的子元素都设置 text-align: left 属性
inline-block.png

新式解决方案


figure {
    max-width: 502px;
    max-width: min-content;
    margin: 20px auto;
}
figure > img {
    max-width: inherit;
}

说明:

  • min-content 属性,它获取的是这个容器内部最大的不可断行元素的宽度(最宽的单词、图片或具有固定宽度的元素),在这里起到了很重要的作用
  • 为浏览器的兼容做了一个回退样式

《CSS SECRETS》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 难题 众所周知,如果不给元素一个具体的height,它就会自动适应内容的高度。假如我们希望width也具有同样的类...
    咕咚咚bells阅读 4,430评论 0 1
  • 如果不给一个元素具体的height,它就会自动适应其内容的高度。假如我们希望width也有类似的行为,该怎么办呢?...
    巴斯光年lip阅读 1,970评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • CSS3新增width属性的min-content关键字,这个关键字将解析为整个容器内部最大不可断行元素的宽度(即...
    Elevens_regret阅读 154评论 0 0
  • 往年,清明节过后,一场呜呜咽咽的春雨,山上的杜鹃也大抵都败落了,洗涮得干干净净,连带着那份逐渐久远到无处可话的凄凉...
    时间的尘埃里阅读 359评论 1 3