龙空技术网

每天一个CSS小技巧 - 内容元素的自适应

吃泡菜的鱼 118

前言:

现时各位老铁们对“cssfigure”大约比较讲究,小伙伴们都需要学习一些“cssfigure”的相关文章。那么小编也在网摘上网罗了一些关于“cssfigure””的相关内容,希望兄弟们能喜欢,各位老铁们一起来了解一下吧!

大家都知道如果不给一个元素设定一个具体的height,它就会自动适应其内容的高度。但是如果我们希望width也有类似的行为,我们该怎么做呢?

下面是我们实际的HTML:

<body><p>Let’s assume we have some text here. Bacon ipsum dolor sit amet turkey veniam shankle, culpa short ribs kevin t-bone occaecat.</p><!--使用 <figure> 元素标记文档中的一个图像--><figure>  <img src="../img/adamcatlace.jpg" />  <!--  使用 <figure> 元素标记文档中的一个图像。<figure> 元素带有一个标题:-->  <figcaption>    The great Sir Adam Catlace was named after Countess Ada Lovelace, the first programmer ever.  </figcaption></figure><p>We also have some more text here. Et laborum venison nostrud, ut veniam sint kielbasa ullamco pancetta.</p></body>

最初的实际效果如下:

如果我们为figure添加一道边框,在默认情况下,如下图所示:

  <style>    figure{      border: red solid 5px;    }  </style>

我们会发现边框实际是跟着屏幕的宽度在变化的,但我们实际上想要的是让figure这个元素跟它所包含的图片一样宽,并且使图片水平居中于屏幕中心。

那么我们应该怎么解决呢?

方案1:float

 <style>    figure{      border: red solid 5px;      float: left;    }  </style>

我们的确的到了想要的宽度,但是网页的布局也混款了。

方案2:display: inline-block

  <style>    figure{      border: red solid 5px;      display: inline-block;    }  </style>

我们得到了我们想要的宽度,但我们发现很难继续完成水平居中的任务,我们需要:

  <style>    body{      text-align: center;    }    p{      text-align: left;    }    figure{      border: red solid 5px;      display: inline-block;    }  </style>

但我们发现这样很麻烦,我们首先对其父元素设置了text-align:center,然后又对其父元素的其他子元素又设置了text-align:left,就算是这样,图片的说明文字还是比图片宽,很难看。

最终方案:

  <style>    figure{      border: red solid 5px;      width: min-content;      margin: auto;    }  </style>

这个min-content的意思就是将这个元素宽度设置为这个容器内部最大的不可断行的元素的宽度(即最宽的单词、图片或具有固定宽度的盒元素)。

标签: #cssfigure