【问题标题】:Left space on first letter CSS第一个字母 CSS 上的左侧空格
【发布时间】:2015-05-02 19:17:20
【问题描述】:

我正在使用 Google 字体“Lato”,但标题和文本向左对齐时遇到问题...字体(当较大时)在第一个字母上似乎有紧排空间并且不会向左对齐没有空格!?

所以这里也有一个小提琴:

<h1>Hello</h1> <p>Hello, this is sentance</p>

FIDDLE

此外,在左边距(左边距:-10px)上添加一个负值似乎是一个糟糕的解决方法......这对于不同的字体大小总体上不起作用,除非根据需要单独调整...... . 肯定有更好的解决方案?

谁能帮忙?

【问题讨论】:

  • 在左边距添加一个负值似乎是一个糟糕的解决方法......这对于不同的字体大小总体上不起作用,除非根据需要单独调整......肯定有更好的解决方案?
  • h2 开始几乎没问题。但是不改变h1的字体大小就可以了。也许字体本身并不是为大尺寸查看而设计的。
  • @Morgan 在你的 body css 样式中添加 margin:0px 和 padding:0px
  • 我为你提供了理想的解决方案@Morgan 使用 Gill Sans 字体,而不是它与 Lato 非常相似。
  • @Morgan 我在没有字体 lato 的情况下对其进行了检查

标签: html css fonts webfonts


【解决方案1】:

空格在那里,因为它是一个标题。 您可以通过以下方式将其对齐到左侧:

margin-left: -10px;

【讨论】:

    【解决方案2】:

    大多数 Web 浏览器的基本边距和内边距都有不同的默认设置。这意味着,如果您没有在 body 和 html 标签上设置边距和内边距,您可能会在页面上得到不一致的结果,具体取决于您用于查看页面的浏览器。

    解决这个问题的最好方法是将html和body标签上的所有边距和内边距设置为0:

    添加这个 CSS:

    html,body {
        font-family:Lato;
        margin:0px;
        padding:0px;
    }
    
    p{margin-left: 11px;}
    

    DEMO

    【讨论】:

      【解决方案3】:

      尝试使用第一个字母

      h1:first-letter {
          margin-left: -10px
      }
      

      http://jsfiddle.net/w25j9L7o/1/

      【讨论】:

        【解决方案4】:

        您可以使用 Gill Sans 字体。它与拉托非常相似。问题在于 Lato 字体本身而不是 Css。

        Here is your link for GillSans

        【讨论】:

        • @Lafontain,感谢您的链接 :) 我会就他们的设计监督与 Google 联系!!!
        【解决方案5】:

        好的,每个人都说这是由于自动填充或边距,因为该行是标题是错误的。将此小提琴视为证据:

        http://jsfiddle.net/w25j9L7o/26/

        浏览器或 CSS 或 DOM/浏览器级别的任何其他内容未呈现前导空间。它是字体。 H 字形周围有一些内置的内边距,字体越大,内边距越明显。

        即使你使用负边距来补偿:

        1. 角色本身在上移,包括空白处,所以空白处也会滑过,影响布局。可见字符没有滑入空白区域,如果您使用 CSS 修复,整个字符(可见和不可见)都会向左移动。

        2. 您需要根据字体大小调整该偏移量或计算出基本百分比,以便该偏移量随任何字体大小设置而增长。

        或者您可以使用不具有此特性的其他字体。

        【讨论】:

        • 你是对的...我尝试了其他几个 Google 托管的字体并发现了同样的问题...我不确定我是不是太愚蠢了,但是唉'它是在字体中',我只是不想相信这可能是设计师或谷歌的疏忽......非常令人失望......
        • 这太糟糕了,Raleway 产生同样的问题,而且它是我最喜欢的字体。
        • InDesign 为第一个字母提供左侧方位调整。这在 CSS 中不存在(还)。使用 % 或像素的负边距是不好的,因为它在移动到不同的媒体或比例时无法正确缩放。而是使用“rem”单位,它们是当前字体的相对 em 单位。仍然不是一个漂亮的黑客,因为每个字母都有自己的左侧轴承。
        【解决方案6】:

        您可以从kernjs.com 获取 kern.js 并编辑您的前面的字距,就像他们在他们的网站上所说的“单击并拖动以调整您的字距、行高、字母位置,完成后,复制生成的CSS 并在您自己的样式表中使用它”

        【讨论】:

          【解决方案7】:

          这个问题把我逼疯了,所以这里有一个优雅的解决方案,它使用 ::first-letter 选择器。例如,我可以通过添加以下内容来解决我的间距问题:

          #yourDiv::first-letter {margin-left:-5px;}
          

          希望这对处于我这种情况的其他人有用。以下是更多信息的链接:http://www.w3schools.com/cssref/sel_firstletter.asp

          【讨论】:

            【解决方案8】:
            在这种情况下,

            PX 单位并不是一个好的选择。如果您使用行高等字体属性,我建议使用 EM 单位。因为它是针对每个字体大小自动计算的。它应该是这样的:

            #yourDiv::first-letter {
               margin-left: -0.12em;
            }
            

            【讨论】:

            • 我喜欢这个解决方案,因为如果我决定稍后调整字体大小,我可以设置它并忘记它。
            猜你喜欢
            • 2015-12-23
            • 1970-01-01
            • 2012-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-11
            • 1970-01-01
            相关资源
            最近更新 更多