CSS :after伪类元素实现文字两端对齐

た 入场券 2022-03-18 10:08 869阅读 0赞

以前很多人都这么干过:两个字中间使用 来隔开达到四个字的宽度,三个字也可以,但是,如果文字中包含有数字、大小写英文字母时,比如 “122账号”“abc密码” 这样的,就不好计算该用几个空格了。

现在 CSS3 中可以使用 text-align: justify 样式来实现这个效果。

例如,如下登录界面,需要实现“用户名:” 和 “密码:”文本的两端对齐效果。

  1. <body>
  2. <article>
  3. <header>用户登录</header>
  4. <main>
  5. <section>
  6. <label>用户名</label>
  7. <input type="text" name="userName" id="userName">
  8. </section>
  9. <section>
  10. <label>密码</label>
  11. <input type="password" name="password" id="password">
  12. </section>
  13. </main>
  14. </article>
  15. </body>

在这里插入图片描述

一种不建议的方式,是借助其他的 html 行内空标签 来实现,比如等等,是可以达到预期的效果的,具体实现如下:

  1. section label {
  2. width: 70px;
  3. display: inline-table;
  4. text-align: justify;
  5. }
  6. label span{
  7. display:inline-block;
  8. /*padding-left: 100%;*/
  9. width:100%;
  10. }

padding-left: 100%和width:100%都可以达到效果,选用其一即可。

以上这种方式,由于代码中加入的其他无意义的 html 标签,没有实际作用,只是用途 CSS 样式 的布局,有点儿违反了结构表现分离的原则,所以建议使用 CSS3 中的 after、before伪元素:

另外一种方式,就是使用 CSS3 中的 after、before伪元素:

  1. section label {
  2. width: 70px;
  3. display: inline-table;
  4. text-align: justify;
  5. }
  6. /*label span{ display:inline-block; !*padding-left: 100%;*! width:100%; }*/
  7. section label:after {
  8. content: " ";
  9. display: inline-block;
  10. width: 100%;
  11. }

以上实现的效果是一样的,但没有使用多余的 html 标签来做布局。

完整的代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>CSS 实现文字两端对齐</title>
  6. <style type="text/css"> article { text-align: center; } header { margin-top: 200px; margin-bottom: 20px; font-size: 24px; font-weight: bold; } section { height: 50px; line-height: 50px; } section label { width: 50px; display: inline-table; text-align: justify; } /*label span{ display:inline-block; !*padding-left: 100%;*! width:100%; }*/ section label:after { content: ""; display: inline-block; width: 100%; } section input { height: 20px; letter-spacing: 2px; } </style>
  7. </head>
  8. <body>
  9. <article>
  10. <header>用户登录</header>
  11. <main>
  12. <section>
  13. <label>用户名</label>
  14. <input type="text" name="userName" id="userName">
  15. </section>
  16. <section>
  17. <label>密码</label>
  18. <input type="password" name="password" id="password">
  19. </section>
  20. </main>
  21. </article>
  22. </body>
  23. </html>

发表评论

表情:
评论列表 (有 0 条评论,869人围观)

还没有评论,来说两句吧...

相关阅读

    相关 css实现内容两端对齐

    问题描述: 因行边缘出现符号或其它情况导致 行边缘出现多余的空白,如何解决内容区域边缘不期望的空白呢? ![在这里插入图片描述][20201224102447758.p

    相关 css 文本两端对齐

    在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地。这样我们就要用到 text-align, text-justify样式了。 text-alig