【问题标题】:Aligning text of different sizes in different divs在不同的div中对齐不同大小的文本
【发布时间】:2013-08-27 17:17:25
【问题描述】:

我想了解在不同 div 类之间对齐不同尺寸类型的正确方法。现在,代码强制较小的类型与较大的类型的顶部对齐。如何将同一排版基线上所有 div 的类型与最干净的代码对齐。这看起来很简单,但我找不到答案。

我也希望这在语义上是正确的(我正在尝试创建一行响应式数据,并且可以在不同设备上调整大小和重新排列(浮动))。欢迎所有建议。

Link to Demo

【问题讨论】:

标签: html css


【解决方案1】:

我从这个 Stackoverflow 线程中找到了一个很好的答案:Why is vertical-align:text-top; not working in CSS

它的要点如下:

  • 了解块元素和内联元素之间的区别。块元素类似于<div>,而内联元素类似于<p><span>
  • 现在,vertical-align 属性仅适用于内联元素。这就是为什么垂直对齐不起作用的原因。
  • 使用 Chrome 开发工具,您可以修改您的演示并查看它是否有效:具体而言,在 <div> 标记内,以适当的样式放置 <span> 标记。

【讨论】:

    【解决方案2】:

    通过填充和边距调整文本的放置位置。但是对于此设置,为每个 div 设置一个 p 类可以让您控制您希望在 div 中放置文本的位置。当然,由于您的字体有多种 em 大小,因此您的填充会因基线偏移而有所不同。小提琴http://jsfiddle.net/rnEjs/

     #artist {
    
         padding: 5px;
    
         float: left;
    
         width: 100%;
    
         background-color: #036;
    
         color: #000;
    
         font-size: 18px;
    
         overflow: hidden;
    
     }
    
     .genre {
    
         width: 5em;
    
         float:left;
    
         height: 50px;
    
         background-color: #09F;
    
     }
    
     .genre p {
    
         padding:5px 5px;
    
     }
    
     .artistName {
    
         float: left;
    
         width: 175px;
    
         height: 50px;
    
         background-color: #F39;
    
     }
    
     .artistName p {
    
          padding:5px 5px;
    
     }
    
     .birth {
    
         float: left;
    
         width: 5em;
    
         height: 50px;
    
         font-size: 12px;
    
         background-color: #F90;
    
     }
    
     .birth p {
    
         padding:15px 5px;
    
     }
    
     .medium {
    
         float: left;
    
         width: 10em;
    
         height: 50px;
    
         font-size: 12px;
    
         background-color: #099;
    
     }
    
     .medium p {
    
          padding:15px 5px;
    
     }
    
     .gallery {
    
         float: left;
    
         width: 10em;
    
         height: 50px;
    
         font-size: 12px;
    
         background-color: #FF6;
    
     }
    
     .gallery p {
    
        padding:15px 5px;
    
     }
    
     .website {
    
         float: left;
    
         width: 10em;
    
         height: 50px;
    
         font-size: 12px;
    
         background-color: #99F;
    
     }
    
     .website p {
    
          padding:15px 5px;
    
     }
    
    
    <div id="artist">
        <div class="genre">
            <p>Genre</p>
        </div>
        <div class="artistName">
            <p>Artist First Last</p>
        </div>
        <div class="birth">
            <p>birth year</p>
        </div>
        <div class="medium">
            <p>medium</p>
        </div>
        <div class="gallery">
            <p>gallery name</p>
        </div>
        <div class="website">
            <p>website</p>
        </div>
    </div>
    

    【讨论】:

      【解决方案3】:

      听起来您需要 CSS 的 line-height 属性。这样,您可以使文本行的高度相同,但分别影响font-size

      #artist { /* Selector to affect all the elements you want */
          color: #000;
          font-size: 18px; /* Default font size */
          line-height:18px; /* Line height of largest font-size you have so none go */
                            /* above the top of their container                     */
      } 
      

      Demo

      【讨论】:

        【解决方案4】:

        您需要调整每个字体大小的行高和可能的垂直边距,以匹配基线网格。

        我建议您阅读以下内容:http://coding.smashingmagazine.com/2012/12/17/css-baseline-the-good-the-bad-and-the-ugly/

        【讨论】:

        • 这很有帮助。感谢杰夫为我指明了正确的方向。从您引用的文章“CSS line-height 属性没有基线的固有概念,并且每一行文本大致放置在元素总高度的中间。这意味着完美对齐文本的实际基础(也就是说,跨不同样式和字体的基线)需要进一步手动、耗时的调整和像素微调。”
        • 不客气!不幸的是,有时它只是归结为反复试验。祝你好运!
        猜你喜欢
        • 2014-10-22
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多