【问题标题】:Align element left exactly完全左对齐元素
【发布时间】:2017-05-06 19:37:56
【问题描述】:

我想将标题和段落元素完全左对齐。是否有任何标准方法可以做到这一点,或者我只需要使用 padding-left。

@import url('https://fonts.googleapis.com/css?family=Lato:400,700');
*{
  font-family: 'Lato', sans-serif;
	box-sizing:border-box;
  margin:0;
}
h1{
  font-size:100px;
}
p{
  font-size:21px;
}
body{
  padding:100px;
}
<p>Hello, I am</p>
<h1>K. Boozer</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur distinctio dolorum nihil voluptatum repudiandae suscipit, excepturi modi quia ratione aliquid ullam esse, qui, culpa officiis natus dicta adipisci provident facilis.</p>

【问题讨论】:

  • 有什么问题?它已经左对齐了。
  • 我认为您需要在p 上申请一些padding-left
  • 是的,但它不完全对齐。仔细看。
  • 使用 CSS 重置来平衡事物,然后在容器上使用填充来填充排水沟,而不是针对单个项目。更容易/更强大。另外:H1 不是您使用它的方式。查看您的代码语义。
  • 这是字体的一部分。我认为如果不进行一些“黑客攻击”,您就无法使它们正确对齐。

标签: html css


【解决方案1】:

您可以在您的 css 文件中使用 position: absolute; 使元素准确显示在您想要的位置。然后定义left: 0px; 或任何你想要的。希望对您有所帮助。

http://www.w3schools.com/cssref/pr_class_position.asp

【讨论】:

    【解决方案2】:

    在 h1 上使用一些否定的margin-left。那里的空间是因为字体太大,每种字体都有自己不同的字母大小。

    @import url('https://fonts.googleapis.com/css?family=Lato:400,700');
    *{
      font-family: 'Lato', sans-serif;
    	box-sizing:border-box;
      margin:0;
    }
    h1{
      font-size:100px;
      margin-left: -6px;
    }
    p{
      font-size:21px;
    }
    body{
      padding:100px;
    }
    <p>Hello, I am</p>
    <h1>K. Boozer</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur distinctio dolorum nihil voluptatum repudiandae suscipit, excepturi modi quia ratione aliquid ullam esse, qui, culpa officiis natus dicta adipisci provident facilis.</p>

    关于负边距:

    https://www.smashingmagazine.com/2009/07/the-definitive-guide-to-using-negative-margins/

    它们是非常有效的 CSS

    我不是在开玩笑。 W3C 甚至说,“允许边距属性为负值……”'Nuff 说。查看article了解更多详情。

    负边距不是 hack

    尤其如此。正是因为没有正确理解负边距,它才得到了它的骇人听闻的形象。只有当你用它来修复你在别处犯的错误时,它才会变成一个 hack。

    【讨论】:

    【解决方案3】:

    我认为问题出在你的字体上,因为它看起来好像是从稍微向右开始的字母开始。

    您可以使用 text-indent 来解决这个问题 - 如果您使用 -0.1em 之类的东西,那么无论它的大小如何,它都应该去掉字母的左侧填充:

    @import url('https://fonts.googleapis.com/css?family=Lato:400,700');
     * {
      font-family: 'Lato', sans-serif;
      box-sizing: border-box;
      margin: 0;
    }
    h1 {
      font-size: 100px;
    }
    p {
      font-size: 21px;
    }
    body {
      padding: 100px;
    }
    * { text-indent: -0.08em; }
    <p>Hello, I am</p>
    <h1>K. Boozer</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur distinctio dolorum nihil voluptatum repudiandae suscipit, excepturi modi quia ratione aliquid ullam esse, qui, culpa officiis natus dicta adipisci provident facilis.</p>

    这种方法的唯一问题是如果文本超过 2 行或更多行,后续行将没有缩进

    【讨论】:

      【解决方案4】:

      试试这个,而不是在 body css 上填充顶部

      @import url('https://fonts.googleapis.com/css?family=Lato:400,700');
      *{
        font-family: 'Lato', sans-serif;
      	box-sizing:border-box;
        margin:0;
      }
      h1{
        font-size:100px;
      }
      p{
        font-size:21px;
      }
      body{
        padding-top:100px;
      }
      <p>Hello, I am</p>
      <h1>K. Boozer</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur distinctio dolorum nihil voluptatum repudiandae suscipit, excepturi modi quia ratione aliquid ullam esse, qui, culpa officiis natus dicta adipisci provident facilis.</p>

      【讨论】:

      • 这个答案与问题无关
      • 你真的明白问题是什么吗?
      • 是的,除了左边他需要做body css property padding-top=100px;
      猜你喜欢
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2014-09-18
      • 2014-10-03
      • 2012-01-15
      • 2015-04-26
      相关资源
      最近更新 更多