【问题标题】:left justify and right justify one element content in css左对齐和右对齐css中的一个元素内容
【发布时间】:2019-12-11 06:54:35
【问题描述】:

我在检查时有一个 HTML 代码(如下所示),我想在其中左对齐和右对齐 css 中的时间元素内容。

HTML 代码(审查中):

<time datetime="00:15 02-08-2019" style="width:194px;" 
data-timezone="et">August 2 &nbsp;  &nbsp; 00:15</time>

上面的inspect是从下面的php代码生成的:

php代码:

<time style="width:194px;" datetime="<?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) 
?>"data-timezone="<?php echo esc_attr($tz_param) ?>"><?php 
echo ucfirst(date_i18n( 'j F &\nb\sp; &\nb\sp; H:i', 
$ts->getTimeStamp()-(60*60*4))); ?></time>`


以上inspect html代码属于以下截图:

问题陈述:

我想知道我需要添加什么 CSS 代码,以便我可以左对齐 August 2(已经存在)和右对齐 00:15

【问题讨论】:

  • html 是什么样的?如果它包含在一个 div 中并且都是跨度,你可以使用 float: left, float: right
  • 在单个元素中——你不能。它都被视为单个文本行。
  • 这是检查&lt;time datetime="00:15 02-08-2019" style="width:194px;" data-timezone="et"&gt;August 2 &amp;nbsp; &amp;nbsp; 00:15&lt;/time&gt;的html代码
  • 如果它们不在单独的容器中,您将无法做到这一点
  • @flash 'j F &amp;\nb\sp; &amp;\nb\sp; H:i' in ucfirst(date_i18n( 'j F &amp;\nb\sp; &amp;\nb\sp; H:i', $ts-&gt;getTimeStamp()-(14400))); 是您的格式字符串。它本质上是一个模板。 &lt;span&gt;j F&lt;/span&gt;&lt;span&gt;H:i&lt;/span&gt;',但您可能需要转义 &lt;span&gt;&lt;/span&gt; 部分。我不太了解 php,无法告诉你如何去做。

标签: php html css fixed-width


【解决方案1】:

新答案

根据您的新更新,并且由于您可以控制 PHP 代码,您可以像下面这样简单地拆分日期:

<time style="width:194px;" datetime="<?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) 
?>"data-timezone="<?php echo esc_attr($tz_param) ?>"><?php 
echo ucfirst(date_i18n( 'j F', 
$ts->getTimeStamp()-(60*60*4))).'<span>'.date_i18n( 'H:i', 
$ts->getTimeStamp()-(60*60*4)).'</span>'; ?></time>`

这将产生以下输出:

time {
 display:inline-block;
}
time span {
  float:right;
}
&lt;time datetime="00:15 02-08-2019" style="width:194px;" data-timezone="et"&gt;August 2&lt;span&gt;00:15&lt;/span&gt;&lt;/time&gt;

旧答案

您可以使用word-spacing 进行模拟,但您需要在august2 之间插入一个不受word-spacing 影响的固定宽度空间

time {
 border:1px solid;
 display:block;
 width:300px;
 word-spacing:190px;
}
<time datetime="00:15 02-08-2019"  data-timezone="et">August 2 00:15</time>
<time datetime="00:15 02-08-2019"  data-timezone="et">August&#x2002;2 00:15</time>

字间距算法依赖于用户代理。字间距也受对齐的影响(请参阅“文本对齐”属性)。字间距影响每个空格 (U+0020) 和不间断空格 (U+00A0),在应用空格处理规则后留在文本中。该属性对其他单词分隔符的影响是未定义的。但是一般的标点,前移宽度为零的字符(例如带有空格 U+200B 的零)和固定宽度的空格(例如 U+3000 和 U+2000 到 U+200A)不受影响。 ref

空格列表:http://jkorpela.fi/chars/spaces.html

【讨论】:

  • 谢谢。它看起来棒极了。我想知道如何在august2 之间添加一个特殊的空间,称为固定宽度空间。
  • 这是在我的问题上生成 html 代码的 php。 &lt;time style="width:194px;" datetime="&lt;?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) ?&gt;" data-timezone="&lt;?php echo esc_attr($tz_param) ?&gt;"&gt;&lt;?php echo ucfirst(date_i18n( 'j F &amp;\nb\sp; &amp;\nb\sp; H:i', $ts-&gt;getTimeStamp()-(60*60*4))); ?&gt;&lt;/time&gt;
  • 很遗憾,我无法更改正在检查的 html 代码。
  • @flash 尝试在jF 之间插入空格来替换你的常规空格,它可以工作
  • 嘿朋友,有关于this issue?的想法吗?
【解决方案2】:

span{
  float:right;
  }
  
 div{

 }
<div>
   <time datetime="00:15 02-08-2019"  data-timezone="et">
      August 2 
      <span> 00:15 </span>
   </time>
</div>

【讨论】:

  • HTML 代码正在检查中,我无法更改。这是在我的问题上生成 html 代码的 php。 &lt;time style="width:194px;" datetime="&lt;?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) ?&gt;" data-timezone="&lt;?php echo esc_attr($tz_param) ?&gt;"&gt;&lt;?php echo ucfirst(date_i18n( 'j F &amp;\nb\sp; &amp;\nb\sp; H:i', $ts-&gt;getTimeStamp()-(60*60*4))); ?&gt;&lt;/time&gt;
  • 是的,我可以做哪些更改?
  • 分开你的日期并添加 span 标签。调整css
【解决方案3】:

有多种方法可以使用 CSS 实现您想要的,但是所有这些方法都要求您至少将“左”或“右”部分包装在它自己的容器中。

一个选项(如其他人所建议的)是这样使用浮点数:

PHP:

<time style="width:194px;" datetime="<?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) ?>"data-timezone="<?php echo esc_attr($tz_param) ?>">
    <?php echo ucfirst(date_i18n('j F', $ts->getTimeStamp()-(60*60*4))); ?>
    <span><?php echo date_i18n('H:i', $ts->getTimeStamp()-(60*60*4))); ?></span>
</time>

CSS:

time > span {
    float: right;
}

如果你想要干净,你应该在之后清除浮动。

您还可以使用两个&lt;span&gt; 元素,一个用于日期,一个用于时间,然后使用display: flex;(要了解Flexbox,我建议阅读这篇文章:https://css-tricks.com/snippets/css/a-guide-to-flexbox/),如下所示:

PHP:

<time style="width:194px;" datetime="<?php echo esc_attr(date_format($ts, 'H:i d-m-Y')) ?>"data-timezone="<?php echo esc_attr($tz_param) ?>">
    <span><?php echo ucfirst(date_i18n('j F', $ts->getTimeStamp()-(60*60*4))); ?></span>
    <span class="time-right"><?php echo date_i18n('H:i', $ts->getTimeStamp()-(60*60*4))); ?></span>
</time>

CSS:(使用选项 1 或选项 2,不能同时使用)

/* OPTION 1 */
time {
    display: flex;
}

time > span {
    flex-grow: 1;
}

time > span.time-right {
    text-align: right;
}

/* OPTION 2 */
time {
    display: flex;
    justify-content: space-between;
}

/* Note: There are many more options achieving this using flex */

您也可以为此使用相对定位和绝对定位,方法是给 &lt;time&gt; 元素一个 position: relative&lt;span&gt; 一个 position: absolute; right: 0;

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 2016-09-05
    • 2015-06-16
    • 2019-07-14
    • 1970-01-01
    • 2013-09-11
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多