html - css 面板宽度匹配最大文本宽度

标签 html css panel

如何使整个 float 面板的宽度与其内部的最大文本宽度匹配? 它应该是这样的:

Sample

面板 html 是:

.pannel{    
    width: auto;
    float: left;
    margin: 10px 10px 10px 0px;
    border: #88F 4px solid;
    padding: 10px;
    background-color: rgb(240,240,255);
    border-radius: 8px;
    font-size: 150%;
  }
.pannel>a>div
  {  
    width: auto;
    text-align: center;
    border: #AAF 1px solid;
    margin: 0 auto 0;
    overflow: hidden;
    border-radius: 9px;
    margin: 3px;
  }
<div class="pannel">
  <a href="someref1">
    <div>
     <img src="http://www.w3schools.com/css/img_fjords.jpg">
     <div>Some text</div>
    </div>
  </a>
  <a href="someref2">
    <div>
     <img src="https://camo.mybb.com/e01de90be6012adc1b1701dba899491a9348ae79/687474703a2f2f7777772e6a71756572797363726970742e6e65742f696d616765732f53696d706c6573742d526573706f6e736976652d6a51756572792d496d6167652d4c69676874626f782d506c7567696e2d73696d706c652d6c69676874626f782e6a7067">
     <div>Some text2</div>
    </div>
  </a>
  <a href="someref3">
    <div>
     <img src="http://keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg">
     <div>Text with a maximum width</div>
    </div>
  </a>
</div>

如您所见,面板尺寸与最大图像尺寸匹配,但我希望图像适合元素的宽度。

最佳答案

使用纯 css 可以做到这一点的唯一方法是让所有图像具有相同的宽高比 - 如果是这种情况,那么您可以使用带有绝对定位和 padding-top 的技巧。

在下面的示例中,我使用了比例为 w:600px x h:400px (66.6666%) 的图像

.pannel {
  display: inline-block;
}

.pannel > a {
  display: block;
  width: 100%;
  text-align: center;
  margin-bottom: 10px;
}

.image {
  display: block;
  position:relative;
  width:100%;
  padding-top:66.6666%; /* padding = height / width of image - 400px / 600px */
}

.image > img {
  position:absolute;
  left:0; 
  right:0;
  top:0; 
  max-width:100%;
  
}
<div class="pannel">
  <a href="someref1">
    <div class="inner">
      <div class="image">
        <img src="http://www.w3schools.com/css/img_fjords.jpg">
      </div>
      <div>Some text</div>
    </div>
  </a>
  <a href="someref2">
    <div class="inner">
      <div class="image">
        <img src="http://lorempixel.com/600/400/">
      </div>
      <div>Some text2</div>
    </div>
  </a>
  <a href="someref3">
    <div class="inner">
      <div class="image">
        <img src="http://keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg"> </div>
      <div>Text with a maximum width</div>
    </div>
  </a>
</div>

如果您无法让所有图像都具有相同的纵横比,那么使用纯 css 是不可能的,您需要一些 js 来调整图像的大小——除非您使用背景图像路线。

这与上面的几乎相同,但不是绝对定位图像,而是使用背景图像和封面(这意味着您必须选择宽高比并且所有法师的尺寸都相同 - 可能看起来这样更好)

.pannel {
  display: inline-block;
}

.pannel > a {
  display: block;
  width: 100%;
  text-align: center;
  margin-bottom: 10px;
}

.image {
  display: block;
  position:relative;
  width:100%;
  background-repeat:no-repeat;
  background-position:center center;
  background-size: cover;

  padding-top:66.6666%; /* for simplicity I have chose the same aspect ratio as above */
}

.image > img {
  position:absolute;
  left:0; 
  right:0;
  top:0; 
  max-width:100%;
  
}
<div class="pannel">
  <a href="someref1">
    <div class="inner">
      <div class="image"style="background-image:url(http://www.w3schools.com/css/img_fjords.jpg);"></div>
      <div>Some text</div>
    </div>
  </a>
  <a href="someref2">
    <div class="inner">
      <div class="image"style="background-image:url(https://camo.mybb.com/e01de90be6012adc1b1701dba899491a9348ae79/687474703a2f2f7777772e6a71756572797363726970742e6e65742f696d616765732f53696d706c6573742d526573706f6e736976652d6a51756572792d496d6167652d4c69676874626f782d506c7567696e2d73696d706c652d6c69676874626f782e6a7067);"></div>
      <div>Some text2</div>
    </div>
  </a>
  <a href="someref3">
    <div class="inner">
      <div class="image"style="background-image:url(http://keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg);"></div>
      <div>Text with a maximum width</div>
    </div>
  </a>
</div>

你会注意到在上面的代码片段中,第二张图片看起来和另外两张一样,尽管它的纵横比不同

关于html - css 面板宽度匹配最大文本宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066552/

相关文章:

javascript - 基本的 Javascript 数学文本字段

javascript - Angularjs嵌套中继器中项目的ID值

jquery - 抓取一个 div 并附加一个类 jQuery

delphi - Delphi 7 中的四舍五入和标题为 "TPanel"

javascript - 使用 jquery 切换当前类

HTML5 录制中等质量的视频以供 Safari 播放

html - 元素中使用背景图片时,input 的上边框变黑;我怎样才能关闭?

javascript - Rails6 禁用所有非 ActiveAdmin 页面的 ActiveAdmin 布局

c# - 从面板内的表单打开面板中的表单

java - 按下按钮后在另一个面板内打开另一个面板